LogicMonitor MCP Server
Enables interaction with LogicMonitor monitoring data and operations through Grafana Assistant.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LogicMonitor MCP Serverlist all devices with warning alerts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LogicMonitor MCP Server
Model Context Protocol (MCP) server for LogicMonitor - enables AI assistants to interact with your LogicMonitor.
🛠️ Managed & Supported by Monitoring Artist
This MCP server is an independent, community-driven innovation by Monitoring Artist.
Official Support Disclaimer: This project is not an official LogicMonitor product and is not covered by LogicMonitor’s standard support tiers.
Need Enterprise-Grade Reliability? > Monitoring Artist provides professional implementation, custom feature development, and dedicated support for this integration. Partner with us for expert solutions.
Features
125 MCP Tools for comprehensive LogicMonitor operations (73 read-only, 52 write)
Unified Server: Single server implementation supporting all transport modes (STDIO, SSE, HTTP)
Multiple Transport Modes: STDIO for local use, SSE/HTTP for remote access
Flexible Authentication: No auth (dev), bearer token, or OAuth/OIDC
CSRF Protection: Automatic CSRF protection for session-based authentication
Read-Only Mode: Safe monitoring without modification capabilities (enabled by default)
Flexible Configuration: CLI flags, environment variables, or
.envfileDebug Logging: JSON or human-readable formats with detailed request/response logging
Tool Filtering: Enable specific tools or disable search functionality
Rate Limiting: Automatic retry with exponential backoff
Batch Operations: Process multiple resources efficiently
Smart Batching: Adaptive concurrency that automatically adjusts to API rate limits
TLS/HTTPS Support: Optional TLS for secure remote access
Related MCP server: domotz-mcp
Images
Cursor Prompt - Resource Check Demo
High‑level demonstration of using the LogicMonitor MCP server in Cursor, showing how to execute a LogicMonitor resource check using an MCP prompt with the argument "www.google.com" (a resource in LogicMonitor). The agent has knowledge about available MCP tools and uses them in a self‑correcting way:

Cursor Tools
Screenshot showing the available LogicMonitor MCP tools within Cursor:

Grafana Assistant Tools
Screenshot showing the available LogicMonitor MCP tools within Grafana Assistant:

VS Code Tools
Screenshot showing the available LogicMonitor MCP tools within Visual Studio Code:

Installation Options
Local LogicMonitor MCP server
Run LogicMonitor MCP Server locally with STDIO transport for Claude Desktop:
# Quick start with npx (no installation needed)
npx logicmonitor-mcp-server
# Or install globally
npm install -g logicmonitor-mcp-server
logicmonitor-mcp-serverAdd to Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"logicmonitor": {
"command": "npx",
"args": ["-y", "logicmonitor-mcp-server"],
"env": {
"LM_COMPANY": "mycompany",
"LM_BEARER_TOKEN": "your-bearer-token-here"
},
"type": "stdio"
}
}
}Best for: Personal use, Claude Desktop integration, local development
Example Remote LogicMonitor MCP server
Run LogicMonitor MCP Server remotely with SSE or HTTP transport for web-based access:
# Quick start with Docker
docker run -d -p 3000:3000 \
-e LM_COMPANY=mycompany \
-e LM_BEARER_TOKEN=your-token \
-e MCP_TRANSPORT=streamable-http \
-e OAUTH_PROVIDER=none \
monitoringartist/logicmonitor-mcp-server
# Available container images
| Registry | Pull command | Notes |
| --- | --- | --- |
| GitHub Container Registry | `docker pull ghcr.io/monitoringartist/logicmonitor-mcp-server:<tag>` | Tags include `latest`, `vX.Y.Z`, `X.Y`, and `X`. |
| Docker Hub | `docker pull monitoringartist/logicmonitor-mcp-server:<tag>` | Mirrors the same tags as GHCR. |
# Or use Docker Compose for production
curl -o docker-compose.yml https://raw.githubusercontent.com/monitoringartist/logicmonitor-mcp-server/main/docker-compose.yml
cp env.example .env # Configure your credentials
docker-compose up -d logicmonitor-mcp-httpBest for: Web applications, remote access, multiple users, enterprise deployments, where admin controls access.
Quick Start
Prerequisites
Node.js >= 18 (or Docker)
LogicMonitor account with API access
LogicMonitor API Bearer Token
Installation
Option A: Node.js
# Clone the repository
git clone https://github.com/monitoringartist/logicmonitor-mcp-server.git
cd logicmonitor-mcp-server
# Install dependencies
npm install
# Build the project
npm run buildOption B: Docker
# Clone the repository
git clone https://github.com/monitoringartist/logicmonitor-mcp-server.git
cd logicmonitor-mcp-server
# Build Docker image
docker build -t logicmonitor-mcp-server .
# Or use Docker Compose
cp env.example .env
# Edit .env with your credentials
docker-compose up -d logicmonitor-mcp-httpConfiguration
Choose one of three methods to configure (listed in order of precedence):
Option 1: Environment Variables (Recommended)
export LM_COMPANY=mycompany
export LM_BEARER_TOKEN=your-bearer-token-here
npm startOption 2: .env File
# Copy the example file
cp env.example .env
# Edit .env with your credentials
nano .env
# Run the server
npm startOption 3: CLI Flags
npm start -- --lm-company mycompany --lm-bearer-token "your-token"CLI Reference
Transport Options
Flag | Environment Variable | Default | Description |
|
|
| Transport type: |
|
|
| Server address for SSE/HTTP transports |
|
| - | Base path for the server |
|
|
| Endpoint path for streamable-http |
TLS Configuration (streamable-http transport only)
Flag | Environment Variable | Default | Description |
|
| - | Path to TLS certificate file for HTTPS. Server uses HTTPS if both cert and key are configured |
|
| - | Path to TLS private key file for HTTPS. Both cert and key required for HTTPS |
Note: By default (when TLS is not configured), the server listens on HTTP protocol. When both certificate and key files are provided, the server automatically switches to HTTPS protocol only.
Debug and Logging
Flag | Environment Variable | Default | Description |
|
|
| Enable debug mode with detailed logging |
|
|
| Log format: |
|
|
| Log level: |
Tool Configuration
Flag | Environment Variable | Default | Description |
|
| all | Comma-separated list of enabled tools |
|
|
| Enable only read-only tools (safer). Set |
LogicMonitor API (Required)
Flag | Environment Variable | Description |
|
| Your LogicMonitor company/account name (subdomain). Example: if your portal is |
|
| LogicMonitor API Bearer Token. Generate at: Settings > Users & Roles > API Tokens |
MCP Server Authentication (Optional - for SSE/HTTP transports only)
Flag | Environment Variable | Default | Description |
|
| - | Static bearer token for authenticating clients connecting to the MCP server. Used as an alternative or supplement to OAuth for remote access via SSE/HTTP transports. Not required for STDIO transport. |
- |
|
| OAuth provider type: |
Note: This is for authenticating to the MCP server, not for LogicMonitor API access.
Authentication Modes:
No Authentication (default): If neither
MCP_BEARER_TOKENnor OAuth is configured (OAUTH_PROVIDER=none), unauthenticated access is allowed. Suitable for development/testing only.Bearer Token: Simple static token authentication - set
MCP_BEARER_TOKENOAuth/OIDC: Enterprise authentication - configure
OAUTH_PROVIDERand related settings (see env.example)Both: Both authentication methods can work simultaneously
Usage Examples
Claude Desktop (STDIO - Recommended)
Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"logicmonitor": {
"command": "node",
"args": [
"/path/to/logicmonitor-mcp-server/build/servers/index.js"
],
"env": {
"LM_COMPANY": "mycompany",
"LM_BEARER_TOKEN": "your-bearer-token",
"MCP_TRANSPORT": "stdio"
}
}
}
}Note: The MCP_TRANSPORT=stdio is optional as it's the default, but included for clarity.
SSE Transport (Remote Access)
# Start SSE server with debug logging
npm start -- --transport sse --address localhost:3000 --debug
# Or using environment variables
export MCP_TRANSPORT=sse
export MCP_ADDRESS=localhost:3000
export MCP_DEBUG=true
npm start
# Or use the convenience script
npm run start:sseNote: For SSE/HTTP transports, authentication is optional but recommended:
Development/Testing: No authentication required (default with
OAUTH_PROVIDER=none)Production: Configure
MCP_BEARER_TOKENor OAuth (see Authentication Modes below)
Health Check Endpoints: When using SSE or streamable HTTP transports, health check endpoints are available:
Simple Health Check (/healthz)
# Quick health check
curl http://localhost:3000/healthz
# Response: 200 OK with body "ok"Detailed Health Check (/health)
# Detailed health information
curl http://localhost:3000/healthResponse includes:
{
"status": "healthy",
"version": "1.0.0",
"uptime": 3600.5,
"memory": {
"rss": 52428800,
"heapTotal": 20971520,
"heapUsed": 15728640,
"external": 1048576,
"arrayBuffers": 262144
},
"connections": {
"mcp": 5,
"http": 3
},
"timestamp": "2025-11-02T12:00:00.000Z",
"transport": {
"mode": "both",
"http": true,
"sse": true
}
}These endpoints can be used by:
Load balancers (use
/healthzfor simple checks)Monitoring systems (use
/healthfor detailed metrics)Orchestration platforms (Docker, Kubernetes)
CI/CD health checks
APM and observability tools
Note: Health check endpoints are not available when using the STDIO transport.
HTTPS/TLS Configuration (Secure Transport)
To enable HTTPS for the SSE or streamable HTTP transport, provide both certificate and key files:
# Using environment variables (recommended)
export MCP_TLS_CERT_FILE=/path/to/cert.pem
export MCP_TLS_KEY_FILE=/path/to/key.pem
export MCP_TRANSPORT=sse
npm start
# Using CLI flags
npm start -- --transport sse \
--server.tls-cert-file /path/to/cert.pem \
--server.tls-key-file /path/to/key.pem
# Access via HTTPS
curl https://localhost:3000/healthzBehavior:
TLS Not Configured (default): Server uses HTTP protocol
TLS Configured (both cert and key files provided): Server uses HTTPS protocol only
Partial TLS Config (only cert OR only key): Server uses HTTP protocol (both required)
Generate Self-Signed Certificate for Testing:
# Generate self-signed certificate (for development/testing only)
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes \
-subj "/CN=localhost"
# Start server with TLS
npm start -- --transport sse \
--server.tls-cert-file ./cert.pem \
--server.tls-key-file ./key.pemProduction Recommendations:
Use certificates from a trusted Certificate Authority (Let's Encrypt, commercial CAs)
Consider using a reverse proxy (nginx, Caddy) for TLS termination
Rotate certificates before expiry
Use strong TLS protocols (TLS 1.2+)
Read-Only Mode (Default - Safe Monitoring)
By default, the server runs in read-only mode for safety:
# Read-only mode (default)
npm start
# Explicitly enable write operations
npm start -- # with MCP_READ_ONLY=false in .env
# Or via environment
export MCP_READ_ONLY=false
npm startCustom Tool Selection
# Enable specific tools only
npm start -- --enabled-tools "list_resources,get_resource,list_alerts,get_alert"
# Disable search functionality
npm start -- --disable-searchJSON Logging for Production
npm start -- --log-format json --log-level warnComplete Example
npm start -- \
--lm-company mycompany \
--lm-bearer-token "your-token" \
--transport sse \
--address 0.0.0.0:8080 \
--read-only \
--log-format json \
--log-level infoTransport Mode Shortcuts
The unified server supports convenient npm scripts for each transport:
# STDIO transport (default, for Claude Desktop)
npm start
npm run start:stdio
# SSE transport (for web/remote clients)
npm run start:sse
# HTTP transport (for advanced integrations)
npm run start:httpAvailable Tools
The server provides 122 tools for comprehensive LogicMonitor operations. Tools are categorized by functionality and marked as read-only (safe) or write (modifies data).
Resource/Device Management
Read-Only:
list_resources- List all monitored resources/devices with filtering (supports simple search viaqueryparameter or advanced filtering viafilterparameter)get_resource- Get detailed device information by IDgenerate_resource_link- Generate direct link to device in LM UI
Write Operations:
create_resource- Add new device(s) to monitoring (supports batch)update_resource- Modify existing device(s) (supports batch)delete_resource- Remove device(s) from monitoring (supports batch)
Resource/Device Groups
Read-Only:
list_resource_groups- List all device groups/foldersget_resource_group- Get device group details by ID
Write Operations:
create_resource_group- Create new device groupupdate_resource_group- Modify device groupdelete_resource_group- Delete device group
Alert Management
Read-Only:
list_alerts- List active alerts with filtering (supports simple search viaqueryparameter or advanced filtering viafilterparameter)get_alert- Get detailed alert informationgenerate_alert_link- Generate direct link to alert in LM UIlist_alert_rules- List alert routing rulesget_alert_rule- Get alert rule details
Write Operations:
acknowledge_alert- Acknowledge alert (stops escalation)add_alert_note- Add note to alert for documentationcreate_alert_rule- Create new alert routing ruleupdate_alert_rule- Modify alert ruledelete_alert_rule- Delete alert rule
DataSources & Monitoring
Read-Only:
list_datasources- List all available datasourcesget_datasource- Get datasource detailslist_resource_datasources- List datasources applied to deviceget_resource_datasource- Get device datasource detailslist_resource_instances- List datasource instances (disks, interfaces, etc.)get_resource_instance_data- Get time-series metrics datalist_eventsources- List all eventsourcesget_eventsource- Get eventsource detailslist_configsources- List configuration sourcesget_configsource- Get configsource details
Write Operations:
update_resource_datasource- Modify device datasource configuration
Dashboards & Reporting
Read-Only:
list_dashboards- List all dashboardsget_dashboard- Get dashboard detailsgenerate_dashboard_link- Generate direct link to dashboard in LM UIlist_dashboard_groups- List dashboard groupsget_dashboard_group- Get dashboard group detailslist_reports- List all reportsget_report- Get report detailslist_report_groups- List report groupsget_report_group- Get report group details
Write Operations:
create_dashboard- Create new dashboardupdate_dashboard- Modify dashboarddelete_dashboard- Delete dashboardcreate_report_group- Create report groupupdate_report_group- Modify report groupdelete_report_group- Delete report group
Collectors & Infrastructure
Read-Only:
list_collectors- List monitoring collectors (agents)get_collector- Get collector detailslist_collector_groups- List collector groupsget_collector_group- Get collector group detailslist_collector_versions- List available collector versionslist_netscans- List network discovery scansget_netscan- Get NetScan detailsget_topology- Get network topology information
Write Operations:
create_netscan- Create NetScanupdate_netscan- Modify NetScandelete_netscan- Delete netscan
Website Monitoring
Read-Only:
list_websites- List website monitorsget_website- Get website monitor detailsgenerate_website_link- Generate direct link to website in LM UIlist_website_groups- List website groupsget_website_group- Get website group detailslist_website_checkpoints- List available monitoring checkpoints
Write Operations:
create_website- Create new website monitorupdate_website- Modify website monitordelete_website- Delete website monitor
Services (Business Logic)
Read-Only:
list_services- List business servicesget_service- Get service detailslist_service_groups- List service groupsget_service_group- Get service group details
Write Operations:
create_service- Create new business serviceupdate_service- Modify servicedelete_service- Delete servicecreate_service_group- Create service groupupdate_service_group- Modify service groupdelete_service_group- Delete service group
Alert Configuration
Read-Only:
list_escalation_chains- List alert escalation chainsget_escalation_chain- Get escalation chain detailslist_recipients- List alert recipientsget_recipient- Get recipient detailslist_recipient_groups- List recipient groupsget_recipient_group- Get recipient group details
Write Operations:
create_escalation_chain- Create escalation chainupdate_escalation_chain- Modify escalation chaindelete_escalation_chain- Delete escalation chaincreate_recipient- Create alert recipientupdate_recipient- Modify recipientdelete_recipient- Delete recipientcreate_recipient_group- Create recipient groupupdate_recipient_group- Modify recipient groupdelete_recipient_group- Delete recipient group
Integrations
Read-Only:
list_integrations- List third-party integrationsget_integration- Get integration details
Write Operations:
create_integration- Create new integrationupdate_integration- Modify integrationdelete_integration- Delete integration
Administration & Security
Read-Only:
list_users- List users/adminsget_user- Get user detailslist_roles- List user rolesget_role- Get role detailslist_access_groups- List access groupsget_access_group- Get access group detailslist_api_tokens- List API tokens for user
Write Operations:
create_access_group- Create access groupupdate_access_group- Modify access groupdelete_access_group- Delete access group
Properties & Configuration
Read-Only:
list_resource_properties- List custom properties for devicelist_resource_group_properties- List properties for device group
Write Operations:
update_resource_property- Update device property valueupdate_resource_group_property- Update device group property value
Scheduled Down Time (SDT)
Read-Only:
list_sdts- List scheduled down timesget_sdt- Get SDT details
Write Operations:
create_resource_sdt- Create scheduled down timedelete_sdt- Delete scheduled down time
Operational Notes
Read-Only:
list_opsnotes- List operational notesget_opsnote- Get opsnote details
Write Operations:
create_opsnote- Create operational noteupdate_opsnote- Modify opsnotedelete_opsnote- Delete opsnote
Audit & Compliance
Read-Only:
list_audit_logs- List audit trail logs (supports simple search viaqueryparameter or advanced filtering viafilterparameter)get_audit_log- Get audit log entry details
Summary
70 read-only tools - Safe for production monitoring
52 write tools - Require caution (disabled by default with
--read-only)122 total tools
Security Considerations
Authentication by Transport Mode
Transport | Authentication | Security Level | Use Case |
STDIO | Not required (local process) | âś… Secure | Claude Desktop, local CLI |
SSE/HTTP (no auth) | None (default: | ⚠️ Development only | Local testing |
SSE/HTTP (bearer) | Static token via | âś… Secure (with HTTPS) | API clients, internal services |
SSE/HTTP (OAuth) | OAuth/OIDC provider | âś… Secure (with HTTPS) | Web applications, enterprise SSO |
Read-Only Mode (Recommended)
For production monitoring, enable read-only mode to prevent accidental modifications:
npm start -- --read-only
# or
export MCP_READ_ONLY=true
npm startThis disables all 52 write operations, leaving only 73 safe read-only tools.
Authentication Setup
Development (No Authentication)
# Default configuration - no authentication required
export LM_COMPANY=mycompany
export LM_BEARER_TOKEN=your-lm-token
export MCP_TRANSPORT=sse
export OAUTH_PROVIDER=none # or omit - this is the default
npm start⚠️ Warning: Unauthenticated access allows anyone to connect. Use only in trusted environments.
Production - Bearer Token (Simple)
# Generate a strong token
export MCP_BEARER_TOKEN=$(openssl rand -base64 32)
export OAUTH_PROVIDER=none
# Enable TLS
export MCP_TLS_CERT_FILE=/path/to/cert.pem
export MCP_TLS_KEY_FILE=/path/to/key.pem
# Start server
npm start -- --transport sseClients must include the token:
curl -H "Authorization: Bearer YOUR_TOKEN" https://localhost:3000/healthProduction - OAuth (Enterprise)
# Configure OAuth provider
export OAUTH_PROVIDER=github # github, google, azure, okta, auth0, custom
export OAUTH_CLIENT_ID=your-client-id
export OAUTH_CLIENT_SECRET=your-client-secret
export OAUTH_SESSION_SECRET=$(openssl rand -hex 32)
export OAUTH_CALLBACK_URL=https://your-domain.com/auth/callback
# Enable TLS
export MCP_TLS_CERT_FILE=/path/to/cert.pem
export MCP_TLS_KEY_FILE=/path/to/key.pem
# Start server
npm start -- --transport sseUsers authenticate via browser at /auth/login.
Production - Combined (Flexible)
# Both OAuth and bearer token enabled
export OAUTH_PROVIDER=github
export OAUTH_CLIENT_ID=your-client-id
export OAUTH_CLIENT_SECRET=your-client-secret
export MCP_BEARER_TOKEN=$(openssl rand -base64 32)
# Users: OAuth login via browser
# APIs: Bearer token in Authorization headerAPI Token Security
LogicMonitor API Token (LM_BEARER_TOKEN):
Never commit to version control
Use environment variables or
.envfiles (.envis in.gitignore)Rotate regularly (monthly recommended)
Use minimal required permissions in LogicMonitor portal
MCP Server Token (MCP_BEARER_TOKEN):
Generate strong tokens (32+ bytes):
openssl rand -base64 32Store securely (environment variables, secrets management)
Never expose in logs or error messages
Rotate regularly
Use different tokens for different environments
Network Security
Required for Production SSE/HTTP:
âś… HTTPS/TLS: Always use encrypted connections (
MCP_TLS_CERT_FILE,MCP_TLS_KEY_FILE)âś… Authentication: Enable bearer token or OAuth (never run unauthenticated in production)
âś… Firewall: Restrict access by IP/network
âś… Rate Limiting: Built-in automatic rate limiting
⚡ Monitoring: Use
/healthendpoint for health checks
Optional (Defense in Depth):
Use reverse proxy (nginx, Caddy) for additional security layers
Implement WAF (Web Application Firewall)
Use VPN or bastion hosts for sensitive environments
Enable audit logging (
--log-format json --log-level info)
Security Checklist for Production
Read-only mode enabled (
MCP_READ_ONLY=true)HTTPS/TLS configured (
MCP_TLS_CERT_FILE,MCP_TLS_KEY_FILE)Authentication enabled (
MCP_BEARER_TOKENor OAuth configured)CSRF protection enabled (automatic with OAuth)
LogicMonitor API token rotated recently
.envfile not in version controlFirewall rules restrict access to authorized IPs
Health check endpoint monitored (
/health)Logs reviewed regularly
Minimal LogicMonitor API permissions granted
Troubleshooting
"LogicMonitor credentials are required"
Ensure you've set LM_COMPANY and LM_BEARER_TOKEN:
export LM_COMPANY=mycompany
export LM_BEARER_TOKEN=your-tokenOr use CLI flags:
npm start -- --lm-company mycompany --lm-bearer-token "your-token"Rate Limiting
The server automatically handles rate limits with exponential backoff. If you encounter persistent rate limiting:
Reduce concurrent requests
Enable
--debugto see rate limit detailsContact LogicMonitor support to increase your rate limits
Connection Issues
# Test with debug logging
npm start -- --debug --log-level debug
# Verify credentials
curl -H "Authorization: Bearer YOUR_TOKEN" \
https://YOUR_COMPANY.logicmonitor.com/santaba/rest/device/devices?size=1Tool Not Found
Enable specific tools:
npm start -- --enabled-tools "list_resources,get_resource"Or check if read-only mode is excluding write operations:
# Show all tools (including write operations)
export MCP_READ_ONLY=false
npm startAuthentication Issues
"401 Unauthorized" when connecting to SSE/HTTP:
Check that
MCP_BEARER_TOKENis set and matches the token in your requestFor OAuth, ensure you've logged in at
/auth/loginVerify token hasn't expired (OAuth tokens expire, static tokens don't)
"No authentication configured" warning:
This is expected when
OAUTH_PROVIDER=noneandMCP_BEARER_TOKENis not setFor development, this is fine - server allows unauthenticated access
For production, configure authentication (see Security Considerations above)
OAuth login not working:
Verify
OAUTH_PROVIDER,OAUTH_CLIENT_ID,OAUTH_CLIENT_SECRETare set correctlyCheck callback URL matches OAuth provider configuration
Review server logs for detailed error messages (
--debug --log-level debug)
Contributing
Contributions are welcome! Please:
Fork the repository
Create a feature branch
Make your changes
Run
npm run lintandnpm run buildSubmit a pull request
Available Tools
70 toolsgenerate_alert_linkARead-only
Generate a direct URL/link/weburl for a LogicMonitor (LM) alert.
Returns: Direct URL to alert details page. URL pattern: https://mycompany.logicmonitor.com/santaba/uiv4/alerts/{alertId}
When to use:
Include alert links in Slack/PagerDuty notifications
Share alert context with team members
Create incident tickets with direct alert references
Build alert reports with clickable links
Why use this: Simplifies alert investigation by providing direct navigation to the alert details page with full context, history, and acknowledgement options.
Workflow: Get alertId from "list_alerts", then use this tool to generate the shareable link for team collaboration.
Related tools: "list_alerts" (find alerts), "get_alert" (get details), "acknowledge_alert" (acknowledge).
| Name | Required | Description | Default |
|---|---|---|---|
| alertId | Yes | The ID of the alert to generate a link for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint=true. The description adds the URL pattern and states it returns a direct link, which confirms no side effects. It doesn't mention authentication or rate limits, but for a simple link generator this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and front-loaded purpose. While somewhat verbose, each section adds value. Could be tightened slightly, but is effective and not overly long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers return value, use cases, workflow, and related tools. It is fully self-contained and leaves no ambiguity for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context by explaining in the workflow how to obtain the alertId (from list_alerts), but does not provide additional syntax or format details beyond the schema. This is adequate but not exceptional.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb and resource: 'Generate a direct URL/link/weburl for a LogicMonitor (LM) alert.' It explicitly distinguishes from sibling tools by specifying the alert context, and the use cases and workflow further reinforce the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'When to use' section listing concrete scenarios like Slack notifications and incident tickets, and a 'Related tools' section that names alternatives. It suggests a workflow starting with list_alerts, but does not explicitly state when not to use this tool or compare directly to sibling generate link tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_dashboard_linkARead-only
Generate a direct URL/link/weburl for a LogicMonitor (LM) dashboard.
Returns: Complete dashboard URL with full group hierarchy path, dashboard details (id, name, groupName), and group path array. URL pattern: https://mycompany.logicmonitor.com/santaba/uiv4/dashboards/dashboardGroups-{path},dashboards-{id}
When to use:
Share dashboard links in Slack/email/tickets
Create documentation with direct dashboard links
Embed dashboard URLs in runbooks
Build custom reports with clickable links
Why use this: Provides the complete navigable URL including all parent group IDs, so the link opens the dashboard in correct context within the UI navigation tree.
Workflow: First use "list_dashboards" to find dashboard ID, then use this tool to generate the shareable link.
Related tools: "list_dashboards" (find dashboard), "get_dashboard" (get details).
| Name | Required | Description | Default |
|---|---|---|---|
| dashboardId | Yes | The ID of the dashboard to generate a link for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint: true, and description does not contradict. It adds context: returns full URL with group hierarchy, dashboard details, and URL pattern. No destructive behavior mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, but slightly verbose for a simple tool. Markdown headers and clear sentences. Could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description explains return values: complete URL, group path, dashboard details, and URL pattern. Mentions related tools. Lacks error handling info but sufficient for the task.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter 'dashboardId' with schema description covering 100%. Description does not add significant meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a direct URL/link for a LogicMonitor dashboard, using specific verb 'generate' and resource 'dashboard link'. It distinguishes from siblings like generate_alert_link and generate_resource_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' section with examples (share in Slack, documentation, runbooks, reports) and 'Why use this' explaining value. Also suggests workflow with list_dashboards. Lacks explicit 'when not to use', but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_resource_linkARead-only
Generate a direct URL/link/weburl for a LogicMonitor (LM) resource/device.
Returns: Complete resource URL with full group hierarchy, resource/device details (id, name, displayName), and group path array. URL pattern: https://mycompany.logicmonitor.com/santaba/uiv4/resources/treeNodes?resourcePath=resourceGroups-{path},resources-{id}
When to use:
Share resource/device links in incident tickets
Create alert notifications with resource/device links
Build reports with clickable resource/device references
Document infrastructure with direct LM links
Why use this: Provides the complete URL including all parent group IDs, so clicking the link navigates directly to the resource/device in the correct folder context.
Workflow: First find resource/device using "list_resources" or "search_resources", then use this tool with deviceId to generate shareable link.
Related tools: "list_resources" (find device), "get_resource" (get details), "generate_alert_link" (link to resource/device alerts).
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The ID of the resource/device to generate a link for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, meaning no data modification. The description adds value by detailing the return content (URL with group hierarchy, resource details) and explaining that clicking navigates correctly. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bold headers and bullet points, front-loaded with the core purpose. Every sentence adds value without redundancy, achieving conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, no output schema, and annotations present, the description covers return value format, usage guidelines, workflow, and related tools. It is complete for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter deviceId described as 'The ID of the resource/device.' The description mentions using deviceId in the workflow but does not add meaning beyond the schema, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Generate' and the resource 'direct URL/link/weburl for a LogicMonitor resource/device.' It distinguishes from sibling tools like generate_alert_link by specifying the target object type.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' bullet points list specific scenarios (incident tickets, alerts, reports). Workflow instructs to first find device using list/search, then use this tool. Related tools list provides alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_website_linkARead-only
Generate a direct direct URL/link/weburl for a LogicMonitor (LM) website monitor with full hierarchy path for easy sharing and navigation.
What this does: Creates shareable URL that opens specific website monitor in LogicMonitor UI, preserving the full folder hierarchy path. Link works for anyone with access to the LogicMonitor portal.
Returns: Complete URL in format: https://mycompany.logicmonitor.com/santaba/uiv4/websites/treeNodes#websiteGroups-{groupId1},websiteGroups-{groupId2},...,websites-{websiteId}
When to use:
Share website monitor with team (Slack/email/tickets)
Create documentation with direct links
Build custom dashboards/reports with LM links
Reference in incident tickets
Bookmark frequently accessed monitors
Required parameters:
websiteId: Website monitor ID (from "list_websites" or "search_websites")
Common use cases:
Share in Slack/Teams: "Production API health check is failing: View Monitor"
Incident ticket documentation: "INC-12345: Website monitor showing SSL certificate expiring in 7 days. See: {generated-url}"
Runbook links: "If homepage monitoring alerts, check: {generated-url-for-homepage-monitor}"
Custom reporting: Build report that includes clickable links to each website monitor for quick access.
Link structure explained: The URL includes complete folder path (websiteGroups) so when clicked, the UI shows:
Full breadcrumb navigation (e.g., "All Website Monitors > Production > External APIs > Homepage Check")
Website monitor details page
Recent check history and availability
Current status and response times
Why use generated links:
Shareable: Send exact monitor to teammates
Bookmarkable: Save frequent monitors for quick access
Integration-friendly: Use in external tools, tickets, wikis
Context-preserving: Shows full folder hierarchy when opened
Workflow example:
Find website monitor: list_websites() → websiteId: 789
Generate link: generate_website_link(websiteId: 789)
Share link: "Check this monitor: https://company.logicmonitor.com/santaba/uiv4/websites/..."
Access requirements: Link recipients must:
Have LogicMonitor user account
Have permissions to view website monitors
Have access to specific website monitor (based on access groups)
Best practices:
Use in incident documentation for traceability
Include in runbooks for quick troubleshooting access
Add to monitoring dashboards for drill-down capability
Share with stakeholders who have LM access
Related tools: "list_websites" (find website), "get_website" (verify details), "generate_dashboard_link" (for dashboards), "generate_resource_link" (for resources/devices), "generate_alert_link" (for alerts).
| Name | Required | Description | Default |
|---|---|---|---|
| websiteId | Yes | The ID of the website monitor to generate a link for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description confirms this by explaining it creates a shareable URL without modifying anything. It adds context about access requirements and what the link shows.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bold headers and sections, but it is verbose with some redundancy (multiple use case examples). Good separation of concerns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given low complexity (1 parameter, no output schema), the description is thorough: it explains the return format, workflow, access requirements, best practices, and dependencies (list_websites).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds meaning by stating the source of websiteId (from list_websites or search_websites), which provides useful context beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a direct URL for a LogicMonitor website monitor with full hierarchy path. It distinguishes from sibling tools by specifying the scope (website monitors) and listing related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when to use (sharing, documentation, dashboards) and includes common use cases, access requirements, and best practices. It also references related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_access_groupARead-only
Get detailed information about a specific access group in LogicMonitor (LM) monitoring by its ID.
Returns: Complete access group details: name, description, tenant ID, list of associated resources (which resources/devices/groups are in this access group), list of users assigned to this access group.
When to use:
Review which resources are in this access group
Check which users have access to this group
Audit access control before modifications
Verify tenant isolation configuration
Key information returned:
Resources: Which resource/device groups and resources users in this access group can see
Users: Which users are assigned to this access group
Tenant ID: Multi-tenant identifier (MSP environments)
Impact analysis: Before modifying access group:
Removing resource: Users lose visibility to those resource/device
Removing user: User loses visibility to all resources in group
Deleting group: All users lose their access scope
Workflow: Use "list_access_groups" to find accessGroupId, then use this tool to review complete configuration before modifications.
Related tools: "list_access_groups" (find groups), "update_access_group" (modify), "list_users" (see user access).
| Name | Required | Description | Default |
|---|---|---|---|
| accessGroupId | Yes | The ID of the access group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds value by detailing the return data (resources, users, tenant ID) and providing impact analysis context. It does not contradict annotations; however, it could mention pagination or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and front-loaded purpose. While slightly verbose, every section adds value. It is efficient given the complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains return values and provides workflow and impact context. It is complete for a read-only detail tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema fully describes parameters. The description provides minimal extra insight (e.g., using list_access_groups to find accessGroupId). Baseline 3 is appropriate as the schema does most of the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information about a specific access group... by its ID,' which is a specific verb+resource. It distinguishes itself from siblings like list_access_groups and update_access_group by explicitly mentioning them as related tools and providing usage guidance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section lists specific scenarios, and the 'Workflow' section advises using list_access_groups first. It also includes 'Impact analysis' for pre-modification context, making it clear when to use this read-only tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alertARead-only
Get detailed information about a specific alert in LogicMonitor (LM) monitoring by its ID.
Returns: Complete alert details: alert message, severity, threshold crossed, current value, alert history, escalation chain triggered, acknowledgement details, resource details, datasource/datapoint info, alert rule applied.
When to use:
Investigate specific alert after getting ID from "list_alerts"
Check threshold and current values
Review alert history and escalation
Get context before acknowledging
Workflow: First use "list_alerts" to find the alertId, then use this tool for complete investigation details.
Related tools: "acknowledge_alert" (acknowledge alert), "add_alert_note" (document findings), "generate_alert_link" (share with team).
| Name | Required | Description | Default |
|---|---|---|---|
| alertId | Yes | The ID of the alert to retrieve | |
| needMessage | No | Whether to include alert message details | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and description adds value by detailing the specific alert attributes returned (severity, threshold, escalation, etc.), though it could explicitly state no side effects (e.g., no state changes).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections: purpose, returns, when to use, workflow, related tools. Front-loaded with key details, no redundant sentences, and appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description thoroughly explains return content (alert message, severity, threshold, history, etc.) and places the tool in a clear workflow with related tools, making it complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers all 3 parameters with descriptions (100% coverage). Description adds a concrete example for the 'fields' parameter ('id,displayName,hostStatus'), aiding understanding beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool gets detailed info about a specific alert by ID, using a specific verb and resource. It distinguishes from siblings like list_alerts (for finding IDs) and acknowledge_alert (for actions after investigation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: after list_alerts to investigate, check thresholds, review history, and before acknowledging. Provides workflow order and links to related tools (acknowledge_alert, add_alert_note, generate_alert_link).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alert_ruleARead-only
Get detailed information about a specific alert rule by ID in LogicMonitor (LM) monitoring.
Returns: Complete alert rule details: name, priority, enabled status, detailed matching conditions (device groups, datasources, datapoints, instance filters, severity levels), escalation chain assignment, suppression windows, notification settings.
When to use:
Review exact matching logic before modifying rule
Troubleshoot why alert matched (or didn't match) this rule
Document alert routing policies
Verify suppression settings
Check which escalation chain receives matching alerts
Matching conditions explained:
deviceGroups: Which resource/device folders this rule applies to (e.g., /Production/, /Database Servers/)
datasources: Which datasources trigger this rule (e.g., CPU, Memory, AWS_EC2)
datapoints: Specific metrics (e.g., CPUBusyPercent, MemoryUsedPercent)
instances: Filter by instance name (e.g., C: drive only, eth0 interface only)
severity: Alert levels (critical, error, warn)
escalatingChainId: Where matching alerts are routed
Troubleshooting use cases:
"Why did this CPU alert go to wrong team?" → Check resource/device group + datasource filters
"Why didn't I get paged?" → Verify alert matches conditions AND check escalation chain
"Too many alerts" → Review if conditions too broad, add instance filters
Workflow: Use "list_alert_rules" to find ruleId, then use this tool to review complete matching logic and routing.
Related tools: "list_alert_rules" (find rules), "update_alert_rule" (modify), "get_escalation_chain" (check notification chain).
| Name | Required | Description | Default |
|---|---|---|---|
| ruleId | Yes | The ID of the alert rule to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by explaining what details are returned (matching conditions, escalation chain, etc.) and providing context for troubleshooting. No contradictions, but could mention permission needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings and bullet points. The purpose is stated upfront. It is slightly longer but each section earns its place. Could be tightened, but effective for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains what the tool returns and provides rich context about matching conditions and troubleshooting. This fully compensates for the missing output schema and equips the agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add significant new information about the parameters themselves; it focuses on returned fields. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool clearly states it retrieves detailed information about a specific alert rule by ID, distinguishing itself from sibling tools like list_alert_rules (find rules) and update_alert_rule (modify). The verb 'get' and specific resource 'alert_rule' are precise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' bullet points, troubleshooting use cases, and workflow. It directs users to use list_alert_rules to find the ruleId, and mentions related tools for modification and escalation chain. This fully addresses when to use and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_logARead-only
Get detailed information about a specific audit log entry in LogicMonitor (LM) monitoring by its ID.
Returns: Complete audit log details: username, IP address, exact timestamp, full description of action, session ID, affected resources, before/after values (for updates).
When to use:
Get complete details after finding log ID via "list_audit_logs"
Review exact changes made (old vs new values)
Investigate specific incident with full context
Workflow: First use "list_audit_logs" with filters to find relevant entries, then use this tool with the log ID for complete details.
Related tools: "list_audit_logs" (search logs), "search_audit_logs" (text search).
| Name | Required | Description | Default |
|---|---|---|---|
| auditLogId | Yes | The ID of the audit log entry to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool is read-only. The description adds detailed behavioral context: returns username, IP, timestamp, description, session ID, affected resources, before/after values. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bullet points for returns, when to use, workflow, and related tools. It is concise, front-loaded with the primary purpose, and every sentence adds value. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description explains return values in detail. It covers workflow and relationships with sibling tools. For a simple tool with a clear schema, this is complete and sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add significant meaning beyond the schema; it implicitly references the auditLogId but doesn't elaborate on the fields parameter. No new parameter context provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed info on a specific audit log entry by ID. It specifies the verb 'Get', the resource 'audit log entry', and differentiates from siblings like 'list_audit_logs' and 'search_audit_logs' by explicitly describing its role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use scenarios (after finding log ID, review exact changes, investigate incidents). Includes a workflow step: first use list_audit_logs, then this tool. Also lists related tools, offering clear guidance on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collectorARead-only
Get detailed information about a specific collector by its ID in LogicMonitor (LM) monitoring.
Returns: Complete collector details: description (name), hostname, platform, status, build version, number of resource/device monitored, free disk space, CPU/memory usage, last heartbeat, configuration.
When to use:
Check collector health before assigning resources/devices
Verify collector capacity
Troubleshoot connectivity issues
Check version for updates
Monitor collector performance
Health indicators to check:
status: "alive" (healthy) vs "dead" (offline/problem)
numberOfHosts: How many resource/device this collector monitors (capacity planning)
freeDiskSpace: Disk space available (needs GB for data buffering)
build: Version number (compare with "list_collector_versions" for updates)
lastHeartbeatTime: Recent = healthy, old = potential issue
Workflow: Use "list_collectors" to find collectorId, then use this tool for detailed health check.
Related tools: "list_collectors" (find collector), "list_collector_versions" (check updates), "list_resources" (see assigned resources/devices).
| Name | Required | Description | Default |
|---|---|---|---|
| collectorId | Yes | The ID of the collector to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds value by listing specific health indicators (status, numberOfHosts, freeDiskSpace) and their meanings, going beyond the bare annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (Returns, When to use, Health Indicators, Workflow, Related tools). Though lengthy, the structure aids comprehension and all content adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description fully details return fields (description, hostname, platform, etc.) and health interpretations. With only 2 parameters, this is thorough and complete for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100%, so baseline is 3. Description adds examples for 'fields' parameter and explains the curated set vs '*', providing extra clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Get detailed information about a specific collector by its ID' with clear verb+resource. It distinguishes from siblings like 'get_collector_group' and 'list_collectors' by focusing on a single collector's details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use (check health, capacity, troubleshoot) and provides workflow ('list_collectors' to find ID, then this tool). Also mentions related tools, giving clear context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collector_groupARead-only
Get detailed information about a specific collector group by ID in LogicMonitor (LM) monitoring.
Returns: Complete collector group details: name, full path, parentId, description, number of collectors (direct and total), number of subgroups.
When to use:
Get group path for documentation
Check collector membership counts
Verify group hierarchy
Review group structure before deploying collectors
Workflow: Use "list_collector_groups" to find groupId, then use this tool for complete details.
Related tools: "list_collector_groups" (find groups), "list_collectors" (collectors in group), "create_collector_group" (create new).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The ID of the collector group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating safe read operation. Description adds valuable context about what is returned (name, path, parentId, description, collector counts, subgroups) beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear sections (Returns, When to use, Workflow, Related tools). Front-loaded with main purpose, concise without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one required parameter, the description covers purpose, return contents, usage context, and workflow comprehensively. No output schema, but description details return fields adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides full descriptions for both parameters (groupId and fields), achieving 100% coverage. Description does not add additional meaning beyond what is in the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get detailed information about a specific collector group by ID' – specific verb and resource. Distinguishes from sibling tools like list_collector_groups (find groups) and get_collector (individual collector).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists use cases (documentation path, membership counts, verify hierarchy) and provides workflow: use list_collector_groups to find groupId first. Also mentions related tools, giving clear guidance on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_configsourceARead-only
Get detailed information about a specific ConfigSource by its ID in LogicMonitor (LM) monitoring.
Returns: Complete ConfigSource details: name, displayName, description, appliesTo logic (which resources/devices), collection method (CLI/SNMP/API), collection script, alert settings.
When to use:
Understand what config is being collected
Review appliesTo logic (why it does/doesn't apply to device)
Check collection method
Troubleshoot config collection issues
Key information:
appliesTo: Logic determining which resource/device get config tracking
collectMethod: How config is retrieved (CLI commands, SNMP, API)
configAlerts: Settings for when to alert on changes
lineageId: Built-in (LogicMonitor) vs custom ConfigSource
Workflow: Use "list_configsources" to find configSourceId, then use this tool to understand how it works.
Related tools: "list_configsources" (find ConfigSource), "list_device_configs" (see configs for device).
| Name | Required | Description | Default |
|---|---|---|---|
| configSourceId | Yes | The ID of the configuration source to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds behavioral context beyond annotations by detailing the return fields (name, displayName, appliesTo, collectMethod, etc.) and explaining key information like lineageId (built-in vs custom). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear headings (Returns, When to use, Key information, Workflow, Related tools). It is relatively lengthy but each section adds value. Slightly more concise phrasing could improve it, but it is organized and front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters (1 required), no output schema, and readOnlyHint annotation, the description covers all necessary context. It explains return fields, usage scenarios, workflow, and related tools. The agent has sufficient information 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.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already documents both parameters adequately. The description does not add new parameter semantics beyond the schema, but it provides usage context (e.g., how to obtain configSourceId via list_configsources). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get detailed information about a specific ConfigSource by its ID in LogicMonitor (LM) monitoring.' It identifies the verb (get), resource (ConfigSource), and scope (by ID). It also distinguishes itself from sibling tools like list_configsources by mentioning its specific purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage scenarios under 'When to use:', including understanding collected config, reviewing appliesTo logic, checking collection method, and troubleshooting. It also offers a workflow: use list_configsources to find the ID, then this tool. Related tools are listed for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboardARead-only
Get detailed information about a specific dashboard by its ID in LogicMonitor (LM) monitoring.
Returns: Complete dashboard details: name, description, groupId, owner, widgets configuration, widget count, sharing settings, template variables, last modified.
When to use:
Review dashboard configuration
See widget definitions before cloning
Check dashboard owner
Verify template variables
Get dashboard metadata
What you get:
widgetsConfig: JSON configuration of all widgets (chart types, metrics, thresholds)
widgetTokens: Template variables (e.g., defaultDeviceGroup for dynamic filtering)
groupId/groupName: Which folder dashboard is in
sharable: Whether dashboard is public/private
Use cases:
Clone dashboard to create similar one
Export dashboard configuration for backup
Audit which resources/devices/metrics are being visualized
Document dashboard purpose and widgets
Workflow: Use "list_dashboards" to find dashboardId, then get details, then "generate_dashboard_link" to get shareable URL.
Related tools: "list_dashboards" (find dashboard), "generate_dashboard_link" (get URL), "update_dashboard" (modify), "list_dashboard_groups" (browse folders).
| Name | Required | Description | Default |
|---|---|---|---|
| dashboardId | Yes | The ID of the dashboard to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds detailed behavioral context: lists returned fields (widgetsConfig, widgetTokens, groupId, sharable) and use cases, confirming no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and bullet points. Slightly long but each section adds value. Could be more concise but remains clear and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description fully explains return content, use cases, and workflow. No gaps for an agent to understand and invoke this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of parameters. Description adds value by explaining how to find dashboardId via list_dashboards and that fields parameter can limit response, but does not elaborate beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Get', resource 'dashboard details', and domain 'LogicMonitor monitoring'. Distinguishes from siblings by specifying it's for dashboard retrieval and referencing related tools like list_dashboards.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' bullet points and a workflow (list_dashboards -> get_dashboard -> generate_dashboard_link). Also lists related tools for alternative actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dashboard_groupARead-only
Get detailed information about a specific dashboard group by its ID in LogicMonitor (LM) monitoring.
Returns: Complete dashboard group details: name, full path, parentId, description, number of dashboards (direct and total), number of subgroups, owner, permissions.
When to use:
Get group path for documentation
Check group membership counts
Verify group hierarchy
Review permissions before creating dashboards in it
Workflow: Use "list_dashboard_groups" to find groupId, then use this tool for complete details.
Related tools: "list_dashboard_groups" (find groups), "list_dashboards" (dashboards in group), "create_dashboard_group" (create new).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The ID of the dashboard group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true. Description adds valuable behavioral context: lists specific return fields (name, full path, parentId, etc.) and explains the tool returns 'complete dashboard group details'. This goes beyond annotations by detailing output structure, which is important since no output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with clear headings (Returns, When to use, Workflow, Related tools). Every sentence serves a purpose; no fluff. Efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with no output schema, the description is comprehensive. It details the return fields, provides usage scenarios, a workflow, and related tools. It fully prepares the agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters ('groupId' and 'fields') are already described in the input schema. The description does not add new meaning beyond the schema; it only mentions groupId contextually in the workflow. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'dashboard group', with specific context ('by its ID in LogicMonitor monitoring'). It distinguishes from siblings like 'list_dashboard_groups' and 'get_dashboard' by focusing on a single group and providing detailed return info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' section lists concrete scenarios (e.g., 'Get group path for documentation', 'Review permissions before creating dashboards'). Includes workflow ('Use list_dashboard_groups to find groupId') and related tools with clear purposes. No explicit when-not, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_datasourceARead-only
Get detailed information about a specific datasource by its ID in LogicMonitor (LM) monitoring.
Returns: Complete datasource details: name, displayName, description, appliesTo logic, collection method, datapoints (metrics), thresholds, alert rules, polling interval.
When to use:
Understand what datasource monitors
Review alert thresholds
See collection method (SNMP/WMI/API/script)
Check datapoint definitions
Troubleshoot why datasource applies/doesn't apply to device
Key information returned:
appliesTo: Logic determining which resource/device get this datasource (e.g., "system.hostname =~"*prod*"")
dataSourceType: Collection method (SNMP, WMI, JDBC, API, script)
dataPoints: List of metrics collected (e.g., CPUBusyPercent, MemoryUsedPercent)
alertExpr: Threshold formulas (when to alert)
collectInterval: How often data is collected (seconds)
Understanding appliesTo logic: Shows why datasource does/doesn't monitor certain resources/devices. Common patterns:
isWindows() - Only Windows resource/device
system.devicetype == "server" - Only servers
hasCategory("AWS/EC2") - Only AWS EC2 instances
Workflow: Use "list_datasources" to find dataSourceId, then use this tool to understand how it works.
Related tools: "list_datasources" (find datasource), "list_resource_datasources" (see which resource/device use it).
| Name | Required | Description | Default |
|---|---|---|---|
| dataSourceId | Yes | The ID of the datasource to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true; description adds detailed return field descriptions and explains appliesTo logic, providing behavioral context beyond annotations without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections (summary, returns, when to use, key info, workflow). Slightly lengthy but every section adds value. Front-loaded with purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description thoroughly explains returned fields (appliesTo, dataSourceType, datapoints, etc.) and gives examples. Adequate for understanding tool output and usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with full descriptions (100% coverage). Description does not add additional parameter semantics; it mentions key returned fields but not parameter usage details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get detailed information about a specific datasource by its ID' with distinct resource and action. Among sibling get_ tools, this purpose is unique and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a dedicated 'When to use' section listing specific scenarios (review thresholds, understand appliesTo, etc.). Also provides workflow suggestion to use list_datasources first and relates to sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_escalation_chainARead-only
Get detailed information about a specific escalation chain by its ID in LogicMonitor (LM) monitoring.
Returns: Complete escalation chain details: name, description, all stages with: recipients at each stage, notification methods (email/SMS/webhook), time delays between stages, rate limiting, business hours restrictions.
When to use:
Review detailed notification workflow
Verify who gets notified at each stage
Check timing between escalations
Audit notification methods
Troubleshoot why notifications not received
Stage details returned: For each stage:
Stage number (1, 2, 3...)
Delay before stage triggers (minutes)
Recipients/groups notified
Notification methods (email, SMS, integration)
Schedule (24/7 vs business hours only)
Example escalation chain details: Stage 1 (0 min): Email "oncall@company.com", SMS "+1-555-1234" Stage 2 (15 min): PagerDuty integration, Email "team-lead@company.com" Stage 3 (30 min): Slack webhook, Email "engineering-manager@company.com"
Workflow: Use "list_escalation_chains" to find chainId, then use this tool to review complete notification workflow.
Related tools: "list_escalation_chains" (find chains), "update_escalation_chain" (modify), "list_recipients" (see recipients).
| Name | Required | Description | Default |
|---|---|---|---|
| chainId | Yes | The ID of the escalation chain to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds context beyond readOnlyHint annotation, detailing return structure and stages. No contradictions. It does not discuss potential limitations like rate limits or auth, but for a read-only lookup, this 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, but slightly verbose with repeated stage details. Front-loaded key info. Still concise enough for utility.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description compensates with detailed return info, example, and workflow. Covers essential requirements for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and description adds meaning: explains fields parameter usage with examples and default behavior. This goes beyond the schema's brief descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets detailed information about a specific escalation chain by ID. It distinguishes from sibling tools like list_escalation_chains and update_escalation_chain, making its unique purpose evident.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use: review notification workflow, verify recipients, check timing, audit methods, troubleshoot. Also provides a workflow: use list_escalation_chains first, then this tool. Related tools are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventsourceARead-only
Get detailed information about a specific EventSource by its ID in LogicMonitor (LM) monitoring.
Returns: Complete EventSource details: name, displayName, description, appliesTo logic, collection method, filter rules, severity mapping, alert settings.
When to use:
Understand what events are collected
Review filter rules (which events trigger alerts)
Check severity mapping
Troubleshoot event collection
See appliesTo logic
Key information:
appliesTo: Which resources/devicesget event monitoring
filters: Rules for parsing/matching events
severityMapping: Map event levels (INFO/WARN/ERROR) to LM alert levels
schedule: When event collection runs
Workflow: Use "list_eventsources" to find eventSourceId, then use this tool for complete configuration.
Related tools: "list_eventsources" (find EventSource), "list_device_eventsources" (events for device).
| Name | Required | Description | Default |
|---|---|---|---|
| eventSourceId | Yes | The ID of the eventsource to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so agent knows it's safe. Description adds detail about what is returned (complete details, specific fields) and key information about response structure. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with bold headers, bullet points, and front-loaded summary. Every section (Returns, When to use, Key information, Workflow, Related tools) provides unique value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description fully explains return values (name, displayName, appliesTo, filters, etc.). Provides workflow context and related tools. All necessary information for a get tool is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters already described. Description does not add new parameter-level detail beyond the schema; it repeats fields but not in a way that increases understanding of parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get detailed information about a specific EventSource by its ID', using a specific verb and resource. It distinguishes from siblings by listing related tools (list_eventsources, list_device_eventsources) and focusing on single item retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to use' section with bullet points covering scenarios like understanding events, reviewing filters, troubleshooting. Workflow guidance is given: use list_eventsources first. Alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integrationARead-only
Get detailed information about a specific integration by ID in LogicMonitor (LM) monitoring.
Returns: Complete integration details: name, type, configuration (API keys, webhooks, URLs), authentication status, last successful notification, error logs, which escalation chains use it.
When to use:
Troubleshoot integration not working
Review configuration before updates
Check API keys/authentication
See last successful notification time
Audit integration settings
Configuration details by type:
Slack: Webhook URL, channel names, mention settings
PagerDuty: Integration key, service mappings
ServiceNow: Instance URL, credentials, table mapping
Jira: Project keys, issue type, custom field mapping
Webhook: Target URL, authentication headers, payload format
Troubleshooting:
Authentication failed: Check API keys/credentials
Not receiving notifications: Verify escalation chain configuration
Error logs: Review failed notification attempts
Workflow: Use "list_integrations" to find integrationId, then use this tool for detailed configuration and troubleshooting.
Related tools: "list_integrations" (find integrations), "test_integration" (send test), "update_integration" (modify).
| Name | Required | Description | Default |
|---|---|---|---|
| integrationId | Yes | The ID of the integration to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, so the read-only nature is already conveyed. The description adds significant behavioral context: it details return fields, configuration specifics per integration type, and troubleshooting tips. No contradictions. A slight deduction for not mentioning potential side effects or limits, but overall very informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, bullet points, and clear headings. It is front-loaded with the core purpose. However, it is somewhat verbose with repeated troubleshooting advice that could be condensed. Overall, it earns its length by being informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description fully compensates by explaining return fields, configuration details, troubleshooting, and workflow. It covers all necessary aspects for an agent to use the tool correctly, including links to sibling tools. Highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining what data is returned for various integration types (Slack, PagerDuty, etc.) which helps the agent understand how to use the integrationId parameter effectively. However, it does not explicitly elaborate on the 'fields' parameter beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets detailed information about a specific integration by ID in LogicMonitor. It distinguishes from siblings like list_integrations by explicitly stating a workflow: use list_integrations to find the ID, then this tool. The purpose is specific and well-defined.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a dedicated 'When to use' section listing concrete scenarios (troubleshoot, review config, check API keys, etc.). It also explains the workflow and mentions related tools (list_integrations, test_integration, update_integration) so the agent knows when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_netscanARead-only
Get detailed information about a specific netscan by ID in LogicMonitor (LM) monitoring.
Returns: Complete netscan details: name, description, scan method, schedule, target networks/IPs, credentials, filters (include/exclude rules), resource/device properties to apply, collector assignment, duplicate detection settings, last execution results.
When to use:
Review netscan configuration before running
Troubleshoot why certain resource/device not discovered
Check credentials and filters
Verify resource/device properties applied to discovered resources/devices
Understand duplicate detection logic
Configuration details returned:
Targets: IP ranges, subnets, or cloud filters (e.g., "192.168.1.0/24", "All EC2 with tag:Environment=prod")
Schedule: How often scan runs (hourly, daily, weekly, on-demand)
Credentials: Which properties used for authentication (ssh.user, snmp.community)
Filters: Include/exclude rules (e.g., "Exclude IPs ending in .1", "Only Linux servers")
Device properties: Auto-applied to discovered resource/device (e.g., location, environment tags)
Duplicate handling: How to handle resource/device found in multiple scans
Troubleshooting use cases:
"Why resource/device not discovered?" → Check if IP in target range and not excluded by filters
"Wrong credentials?" → Verify credential properties configured in netscan
"resources/Devices missing properties?" → Check default properties applied by netscan
Workflow: Use "list_netscans" to find netscanId, then use this tool to review complete configuration.
Related tools: "list_netscans" (find netscan), "update_netscan" (modify), "run_netscan" (execute now).
| Name | Required | Description | Default |
|---|---|---|---|
| netscanId | Yes | The ID of the netscan to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds detailed behavioral context by listing what configuration details are returned and troubleshooting use cases, without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headers and bullet points, and the core purpose is front-loaded. While somewhat verbose, every section adds value for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly lists the returned configuration details and troubleshooting use cases. It covers all expected behavior for a read-only retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds extra context by explaining the netscanId as obtained from list_netscans and implicitly describes the fields parameter through the troubleshooting examples. This raises the score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information about a specific netscan by ID' with a specific verb and resource. It also distinguishes from siblings by mentioning list_netscans, update_netscan, and run_netscan as related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section lists specific scenarios like reviewing configuration before running and troubleshooting discovery. It also provides a workflow linking to list_netscans and distinguishes from update/run tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_opsnoteARead-only
Get detailed information about a specific operational note by ID in LogicMonitor (LM) monitoring.
Returns: Complete OpsNote details: note text, timestamp, creator, tags, scope (resources/devices/groups affected), related SDTs, linked resources.
When to use:
Get full note details after finding ID via list
Review what was documented at specific time
Check scope of operational event
Verify linked resources
Workflow: Use "list_opsnotes" to find note ID, then use this tool for complete details.
Related tools: "list_opsnotes" (find notes), "create_opsnote" (add new), "update_opsnote" (modify).
| Name | Required | Description | Default |
|---|---|---|---|
| opsNoteId | Yes | The ID of the OpsNote to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint: true, and the description adds contextual transparency by listing the exact fields returned (note text, timestamp, creator, tags, scope, etc.), with no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with bold headers and bullet points, concise yet comprehensive, every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an explicit output schema, the description fully enumerates return fields. It integrates seamlessly with sibling tools and no critical information is missing for a retrieval operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description doesn't provide additional meaning beyond what the schema already offers for both parameters. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches detailed info for a specific opsnote by ID, with explicit verb-resource pairing. It distinguishes from siblings by mentioning list_opsnotes for finding notes and create/update opsnote for modifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a dedicated 'When to use' section with clear use cases and a workflow recommendation to use list_opsnotes first. It also lists related tools for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recipientARead-only
Get detailed information about a specific recipient by ID in LogicMonitor (LM) monitoring.
Returns: Complete recipient details: type, name, contact information (email/phone/URL), notification method, timezone, schedule restrictions, rate limiting settings.
When to use:
Verify contact information before escalation
Check notification schedule (business hours vs 24/7)
Review rate limiting settings
Audit recipient configuration
Details returned:
Contact info: Exact email/phone/webhook URL
Schedule: When notifications are sent (always vs business hours)
Rate limit: Max notifications per time period (prevent notification fatigue)
Method: Delivery mechanism (SMTP, Twilio, webhook)
Workflow: Use "list_recipients" to find recipientId, then use this tool for complete configuration.
Related tools: "list_recipients" (find recipient), "update_recipient" (modify), "list_escalation_chains" (usage).
| Name | Required | Description | Default |
|---|---|---|---|
| recipientId | Yes | The ID of the recipient to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating safe read operation. The description adds useful details about returned fields (type, name, contact info, etc.) but does not disclose any additional behavioral traits like permissions or error conditions. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and bullet points, making it easy to scan. Minor redundancy exists between 'Returns:' and 'Details returned:' sections, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, so the description compensates by thoroughly listing return fields (contact info, schedule, rate limit, method). It includes workflow guidance and related tools, making it fully complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% since both parameters (recipientId, fields) are described in the schema. The description does not add parameter-level details but explains the return structure, which is acceptable for a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get detailed information about a specific recipient by ID' with a specific verb and resource. It clearly distinguishes from siblings like 'list_recipients' which finds recipients by ID first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear use cases: verify contact info, check schedule, review rate limits, audit configuration. It also suggests a workflow using 'list_recipients' first. Though it lacks explicit 'when not to use' statements, the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recipient_groupARead-only
Get detailed information about a specific recipient group by ID in LogicMonitor (LM) monitoring.
Returns: Complete recipient group details: name, description, list of all members (recipients), member contact info, escalation chains using this group.
When to use:
Review group membership before modifications
Verify who gets notified through this group
Check which escalation chains use this group
Audit team notification lists
Key information returned:
Members: All recipients in group (names, emails, phones)
Usage: Which escalation chains reference this group
Description: Purpose/team name
Before modifying group: Review escalation chain usage to understand impact of changes. Removing member from group affects all chains using that group.
Workflow: Use "list_recipient_groups" to find groupId, then use this tool to review membership before updating.
Related tools: "list_recipient_groups" (find groups), "update_recipient_group" (modify), "list_escalation_chains" (see where used).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The ID of the recipient group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and the description adds valuable context: what information is returned (members' contact info, escalation chain usage), and the caution that removing a member affects all chains using the group. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Returns, When to use, Key information, Warning, Workflow, Related tools). It is comprehensive but slightly lengthy; however, every section serves a purpose and adds clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description exhaustively explains return values (members, usage, description) and provides workflow guidance and warnings. For a tool with two parameters, this is thorough and leaves no ambiguity for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters are described in the schema (100% coverage), and the description adds meaning: groupId is obtained from list, and fields can be a comma-separated list or '*' with an explanation of omitting it. It reinforces the purpose but doesn't introduce new meanings beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed info about a specific recipient group by ID, and lists what details are returned (members, usage, description). It distinguishes from siblings like 'list_recipient_groups' and 'update_recipient_group' by specifying its role in the workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists four usage scenarios (review membership before modifications, verify notifications, check escalation chain usage, audit notification lists) and suggests a workflow: use 'list_recipient_groups' to find groupId, then this tool before updating. Also mentions related tools and warns about impact of changes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reportARead-only
Get detailed information about a specific report by its ID in LogicMonitor (LM) monitoring.
Returns: Complete report details: name, type, description, schedule (daily/weekly/monthly), recipients, format, data sources (which resources/devices/groups), date range, customization settings, last run timestamp, delivery status.
When to use:
Review report configuration before modification
Check recipients and schedule
Verify data sources (which resource/device included)
Troubleshoot why report not received
Clone report settings for similar report
Configuration details:
Schedule: When report runs (e.g., "Every Monday at 8am")
Recipients: Who receives report via email
Format: PDF (management), HTML (web), CSV (data analysis)
Scope: Which resources/devices/groups are included
Date range: Last 7 days, last month, custom period
Workflow: Use "list_reports" to find reportId, then use this tool for complete configuration.
Related tools: "list_reports" (find reports), "update_report" (modify), "generate_report" (run now).
| Name | Required | Description | Default |
|---|---|---|---|
| reportId | Yes | The ID of the report to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the description's behavioral disclosure is not burdened. The description adds considerable context about returned fields (name, type, schedule, recipients, format, data sources, etc.) and configuration details, going beyond 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Returns, When to use, Configuration details, Workflow, Related tools) and is front-loaded with purpose. Some redundancy exists between 'Returns' and 'Configuration details', but overall it's efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides detailed return values and configuration details, compensating fully. The workflow and usage scenarios make the tool context-complete for a simple read operation with two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (both parameters documented in schema). The description does not add new parameter-level details beyond the schema, but the workflow context indirectly references the reportId. Baseline 3 is appropriate as schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get detailed information about a specific report by its ID' and uses a specific verb (get) and resource (report). It distinguishes from siblings by mentioning related tools and workflow, making the purpose clear and unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section lists concrete scenarios (review configuration, check recipients, verify data sources, troubleshoot, clone settings) and the workflow explicitly suggests using 'list_reports' first. The 'Related tools' section provides alternatives, offering clear guidance on when to use this tool versus others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_report_groupARead-only
Get detailed information about a specific report group by ID in LogicMonitor (LM) monitoring.
Returns: Complete report group details: name, full path, parentId, description, number of reports (direct and total), number of subgroups.
When to use:
Get group path for documentation
Check report membership counts
Verify group hierarchy
Review group structure before creating reports
Workflow: Use "list_report_groups" to find groupId, then use this tool for complete details.
Related tools: "list_report_groups" (find groups), "list_reports" (reports in group), "create_report_group" (create new).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The ID of the report group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the description's mention of returning details is consistent. It adds value by specifying the exact return data (name, path, parentId, counts). No side effects or limitations are omitted, but no extra behavioral context beyond the annotations is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured: a brief summary sentence, bullet list of return values, use-case section, workflow hint, and related tools. Every sentence is informative and earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read tool with full schema coverage and no output schema, the description sufficiently covers return details, use cases, and workflow. No gaps remain for an AI agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for both parameters. The description does not add meaning beyond the schema; it only reaffirms the groupId parameter. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), resource ('detailed information about a specific report group by ID'), and includes the context of LM monitoring. It lists return fields, distinguishing itself from sibling tools like list_report_groups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
A dedicated 'When to use' section lists four specific use cases, and a workflow note suggests using list_report_groups first. Related tools are explicitly named, providing clear guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resourceARead-only
Get detailed information about a specific resource/device in LogicMonitor (LM) monitoring by its ID.
Returns: Complete resource/device details including: displayName, IP/hostname, hostStatus, alertStatus, collector assignment, resource/device type, custom properties, applied datasources, group memberships, last data time, creation date.
When to use:
Get full details after finding resource/device ID via "list_resources"
Check resource/device configuration
Verify collector assignment
Review custom properties before updating
Workflow: Use "list_resources" or "search_resources" first to find the deviceId, then use this tool for complete details.
Related tools: "list_resource_datasources" (see what's monitored), "list_resource_properties" (view all properties), "generate_resource_link" (get UI link).
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The ID of the resource/device to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. Description adds behavioral context by listing the types of information returned (displayName, IP, status, etc.) and confirming it's a read operation. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections: main purpose, Returns, When to use, Workflow, Related tools. Every sentence is informative and earns its place. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's purpose, return content, usage context, and workflow. Given simple input schema (2 params) and no output schema, it is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%; description does not add extra detail beyond the schema's parameter descriptions. Baseline score of 3 applies as the schema already documents parameters sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Get detailed information about a specific resource/device... by its ID.' Verb and resource are specific, and it distinguishes from sibling tools like list_resources (which lists IDs) and get_resource_datasource (which gets datasource details).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' scenarios, a workflow hint (use list/search first), and related tools. This gives clear guidance on when to use vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resource_datasourceARead-only
Get detailed information about a specific datasource applied to a resource/device in LogicMonitor (LM) monitoring.
Returns: Complete resource/device datasource details: dataSourceName, status, alert status, number of instances, monitoring configuration, stop monitoring flag, custom properties, graphs.
When to use:
Check if datasource is collecting data
Review alert status for specific datasource
Verify custom thresholds
Get deviceDataSourceId for instance operations
Troubleshoot data collection issues
Key fields:
instanceNumber: How many instances (e.g., 4 network interfaces)
status: Collection status (normal vs error)
alertStatus: Any active alerts from this datasource
stopMonitoring: Whether datasource is disabled on this resource/device
Workflow: Use "list_device_datasources" to find deviceDataSourceId, then use this tool for detailed status.
Related tools: "list_device_datasources" (find datasource), "list_device_instances" (get instances), "update_device_datasource" (enable/disable).
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The resource/device ID | |
| deviceDataSourceId | Yes | The resource/device datasource ID | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true; description adds valuable behavioral context by listing key return fields (instanceNumber, status, alertStatus) and confirming it returns 'complete details'. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections: purpose, returns, when to use, key fields, workflow, related tools. Each sentence is valuable; no fluff. Front-loaded with main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description compensates by listing return fields and explaining use cases. It covers prerequisites (use list to get ID), and provides enough detail for an agent to decide if this tool is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, but description adds context: explains 'fields' parameter with examples, and interprets key fields like 'instanceNumber' and 'status' in plain language. This helps agents understand parameter usage and return value semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about a datasource applied to a resource. It uses specific verb 'Get' and resource 'datasource details', and distinguishes from siblings like 'list_resource_datasources' and 'get_datasource' via related tools section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use:' section lists concrete scenarios (check collection, review alert status, etc.). Also provides a workflow suggestion using 'list_device_datasources' first, and lists related tools for alternative actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resource_groupARead-only
Get detailed information about a specific resource/device group by its ID in LogicMonitor (LM) monitoring.
Returns: Complete group details: name, full path, parentId, description, custom properties, number of resource/device (direct and total), number of subgroups, alert status, SDT status.
When to use:
Get group path for documentation
Review inherited properties
Check group membership counts
Verify group hierarchy
Get group details before creating resource/device in it
Key information:
fullPath: Complete hierarchy (e.g., "/Production/Web Servers/US-East")
customProperties: Properties inherited by all resource/device in group
numOfDirectDevices: resources/Devices directly in this group
numOfHosts: Total resource/device including subgroups
alertStatus: Rollup alert status for entire group
Custom properties inheritance: Properties set on group are inherited by ALL resource/device in group. Common uses:
Credentials: {name: "ssh.user", value: "monitoring"}
Environment tags: {name: "env", value: "production"}
Owner: {name: "team", value: "platform-engineering"}
Workflow: Use "list_resource_groups" to find groupId, then use this tool for complete details including inherited properties.
Related tools: "list_resource_groups" (find groups), "create_resource_group" (create new), "list_resources" (devices in group).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The ID of the resource/device group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already include readOnlyHint=true, but the description adds valuable behavioral context: it explains the returned structure (fullPath, customProperties, etc.) and details about custom properties inheritance. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-organized into sections (returns, when to use, key information, etc.). It is front-loaded with the core purpose and each section adds distinct value. Not overly verbose for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description thoroughly explains the return fields (fullPath, customProperties, numOfDirectDevices, etc.) and inheritance behavior. It is complete for a get tool with two parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters documented). The description does not add new parameter details but explains the significance of returned fields, which helps interpret the output. The value-add justifies a score above baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool obtains detailed information about a resource/device group by ID, using specific verb and resource. It distinguishes from siblings like list_resource_groups which lists groups, and get_resource which gets a device.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to use' scenarios, a workflow referencing list_resource_groups, and related tools. It gives clear context on when to use this tool, such as checking group membership or reviewing inherited properties.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resource_instance_dataARead-only
Get time-series metrics/datapoints data (e.g., CPU/memory/network utilization) for a specific resource/device datasource instance in LogicMonitor (LM) monitoring.
Returns: Time-series data with timestamps and values for requested datapoints. Format: {timestamps: [epoch1, epoch2], values: {datapoint1: [val1, val2], datapoint2: [val1, val2]}}.
When to use:
Get CPU utilization for last 24 hours
Fetch disk usage trends
Retrieve network bandwidth data
Export metrics for analysis
Build custom dashboards/reports
Required workflow (3 steps):
Use "list_resource_datasources" → get deviceDataSourceId for datasource (e.g., WinCPU)
Use "list_resource_instances" → get instanceId for specific instance (e.g., CPU Core 0)
Use this tool → get actual metric values for that instance
Parameters:
deviceId: Device ID from "get_resource" or "list_resources"
deviceDataSourceId: From "get_resource_datasource" or "list_resource_datasources"
instanceId: From "list_resource_instances"
datapoints: Comma-separated metric names (e.g., "CPUBusyPercent,MemoryUsedPercent")
start/end: Time range in epoch milliseconds (not seconds!), start time must be before current time
Example: Get last hour CPU data: start=Date.now()-3600000, end=Date.now()
Time range tips: If omitted, returns last 2 hours. Max range: 1 year. Use shorter ranges for better performance.
Related tools: "list_resource_datasources", "list_resource_instances".
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The resource/device ID | |
| deviceDataSourceId | Yes | The resource/device datasource ID | |
| instanceId | Yes | The instance ID | |
| datapoints | No | Comma-separated list of metric/datapoint names | |
| start | No | Start time (epoch milliseconds), start time must be before current time | |
| end | No | End time (epoch milliseconds) | |
| format | No | Response format: "json" or "csv" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true; description adds output format, default time range (last 2 hours), max range (1 year), and example. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with clear sections and front-loaded purpose. Slightly verbose but every sentence adds value. Could trim some examples but remains effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description details the return format. Covers the prerequisite workflow, time range behavior, and parameter usage. Complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters are documented in schema. Description adds value by explaining datapoints as comma-separated, start/end in epoch milliseconds with a note to avoid seconds, and a concrete example. Time range tips further clarify behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it gets time-series metrics/datapoints for a resource instance. Distinguishes from sibling list/get tools by focusing on metric values, with examples like CPU utilization and disk usage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides usage scenarios (e.g., 'Get CPU utilization for last 24 hours') and a required 3-step workflow involving list_resource_datasources and list_resource_instances. Also mentions time range tips and related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_roleARead-only
Get detailed information about a specific role by its ID in LogicMonitor (LM) monitoring.
Returns: Complete role details: name, description, custom flag, detailed permission matrix (view/manage/delete/acknowledge for each area: resources/devices, alerts, dashboards, reports, settings, users).
When to use:
Review exact permissions before assigning role
Compare roles to choose correct one
Document security policies
Audit what a role can/cannot do
Before creating custom role (use as template)
Permission granularity returned:
Resources: Can view/add/modify/delete resource/device
Alerts: Can view/acknowledge/manage alert rules
Dashboards: Can view/create/edit/delete dashboards
Reports: Can view/create/schedule reports
Settings: Can modify datasources/collectors/integrations
Users: Can manage other users/roles
Use cases:
Security audit: "Can this role delete production resources/devices?"
Least privilege: Choose role with minimal required permissions
Documentation: Export role permissions for compliance
Role comparison: Compare multiple roles to find right fit
Workflow: Use "list_roles" to find roleId, then use this tool to review detailed permissions before assigning to users.
Related tools: "list_roles" (find roles), "list_users" (see who has this role), "create_role" (create custom role).
| Name | Required | Description | Default |
|---|---|---|---|
| roleId | Yes | The ID of the role to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds detail on the permission matrix returned, but no behavioral surprises. Some extra context on return format adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings and bullet points, front-loading the main purpose. Slightly lengthy but each section earns its place with examples and use cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description thoroughly explains the return format (permission matrix), covers workflow, and lists use cases. Comprehensive for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully described in schema. The description does not add new information about parameters beyond what the schema provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves role details by ID. It uses specific verb 'Get' and resource 'role', and distinguishes from siblings by mentioning related tools like list_roles and create_role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use (review permissions, audit, compare) and provides workflow: use list_roles to find roleId first. Also names related tools (list_roles, list_users, create_role) for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sdtARead-only
Get detailed information about a specific Scheduled Down Time (SDT) by its ID in LogicMonitor (LM) monitoring.
Returns: Complete SDT details: type, device/group affected, start/end times, duration, comment, who created it, status (active/scheduled/expired), recurrence settings.
When to use:
Verify SDT was created correctly
Check when maintenance window ends
See who scheduled downtime
Get SDT details before extending/canceling
Audit maintenance history
Status meanings:
scheduled: Future maintenance window (not started yet)
active: Currently in maintenance window (alerts suppressed now)
expired: Maintenance window completed (historical record)
Workflow: Use "list_sdts" to find SDT ID, then use this tool for complete details before deciding to extend or delete.
Related tools: "list_sdts" (find SDTs), "create_resource_sdt" (create new), "delete_sdt" (cancel).
| Name | Required | Description | Default |
|---|---|---|---|
| sdtId | Yes | The ID of the Scheduled Down Time (SDT) to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, so the safety profile is clear. The description adds value by detailing the return fields (type, times, creator, status) and status semantics. No contradictions. Slight deduction for not mentioning any potential limitations or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, returns, when to use, status meanings, workflow, related tools). Each sentence adds value, no redundancy, front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description comprehensively lists what is returned (type, device/group, times, duration, comment, creator, status, recurrence). It includes status meanings and workflow context, making the tool fully understandable for agents.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to add parameter info. It does not elaborate beyond what the schema provides, maintaining the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information about a specific Scheduled Down Time (SDT) by its ID', with a specific verb and resource. It distinguishes from sibling tools like list_sdts (list all) and create_resource_sdt (create new).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a dedicated 'When to use' section with concrete scenarios (verify creation, check end time, etc.), a workflow (use list_sdts first), and explicit alternative tools. Also explains status meanings to guide interpretation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_serviceARead-only
Get detailed information about a specific service by ID in LogicMonitor (LM) monitoring.
Returns: Complete service details: name, description, health status, dependency tree (all resources comprising service), SLA/SLO configuration, availability statistics, alert rules, service group.
When to use:
Review service dependencies (what resources are included)
Check current health status and root cause
Verify SLA/SLO configuration
Troubleshoot service downtime
Understand service architecture
Key information returned:
Dependency tree: All resources/devices/resources that comprise this service
Health calculation: How service status is determined (e.g., "If ANY web server is down, service is degraded")
Current status: Operational / Degraded / Down
SLA metrics: Uptime percentage, outage history
Alert configuration: When to alert on service issues
Troubleshooting workflow: Service shows "Down" → Check dependency tree → Identify which specific resource(s) failed → Address those resources → Service auto-recovers when dependencies healthy
Workflow: Use "list_services" to find serviceId, then use this tool for complete dependency analysis.
Related tools: "list_services" (find service), "update_service" (modify dependencies), "list_resources" (see health of dependent resources).
| Name | Required | Description | Default |
|---|---|---|---|
| serviceId | Yes | The ID of the service to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations include readOnlyHint=true, and the description reinforces this by stating it retrieves information. The description adds valuable behavioral context beyond annotations, such as the detailed breakdown of returned data (dependency tree, health calculation, SLA metrics, alert configuration) and a troubleshooting workflow, which fully informs the agent about what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections and bullet points, making it easy to scan. However, it is somewhat lengthy and contains some redundancy (e.g., 'dependency tree' mentioned in two places). Still, every sentence adds value, earning a 4.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (detailed service info) and lack of output schema, the description fully covers what is returned (dependency tree, health, SLA, alert config), usage context, and a workflow. No gaps remain for an agent to understand its purpose and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra value by providing examples for the 'fields' parameter (e.g., "id,displayName,hostStatus") and noting the default behavior when omitted, which enhances understanding beyond the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), resource ('detailed information about a specific service'), and scope ('by ID' in LogicMonitor monitoring). It distinguishes itself from sibling tools like list_services (which lists services) by specifying retrieval of a single service's details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' section outlines five specific use cases (review dependencies, check health, verify SLA, troubleshoot, understand architecture). Provides a workflow: use list_services first, then this tool. Lists related tools (list_services, update_service, list_resources) for alternative actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_groupARead-only
Get detailed information about a specific service group by ID in LogicMonitor (LM) monitoring.
Returns: Complete service group details: name, full path, parentId, description, number of services (direct and total), number of subgroups.
When to use:
Get group path for documentation
Check service membership counts
Verify group hierarchy
Review group structure before creating services
Workflow: Use "list_service_groups" to find groupId, then use this tool for complete details.
Related tools: "list_service_groups" (find groups), "list_services" (services in group), "create_service_group" (create new).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The ID of the service group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it's a read operation. The description adds detail about the return content but does not disclose additional behavioral traits like authentication requirements, rate limits, or side effects. The description is consistent with annotations and does not contradict them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Returns, When to use, Workflow, Related tools) using markdown headers and bullet points. It is readable but slightly verbose; some redundancy exists (e.g., the first sentence is repeated in Returns). Overall, it effectively communicates without being excessively long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by listing the return fields (name, full path, etc.). It also provides usage workflow and related tools, making it complete for a simple get tool with 2 parameters. It could mention handling of the optional fields parameter or limits of the response, but overall it provides sufficient context for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters (groupId, fields) described. The description does not add new semantic meaning beyond what the schema provides for these parameters. However, the listing of returned fields gives context that might indirectly help parameter selection but does not directly enhance parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information about a specific service group by ID. It specifically uses the verb 'Get' and resource 'service group', and the returns section lists specific fields. It differentiates from sibling tools like list_service_groups (which finds groups) and get_service (for individual services), as shown in the related tools section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to use' bullet points (e.g., get group path, check membership counts) and a workflow that instructs to use list_service_groups first to find the groupId. It also lists related tools with their purposes, giving clear guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topologyARead-only
Get network topology information in LogicMonitor (LM) monitoring.
Returns: Network topology data with: resource/device relationships, network connections, parent-child hierarchies, Layer 2/Layer 3 connectivity maps.
What is topology: Automatically discovered network relationship map showing how resource/device connect to each other. LogicMonitor uses SNMP, CDP (Cisco Discovery Protocol), LLDP (Link Layer Discovery Protocol), and other methods to build network topology maps.
When to use:
Understand network architecture and resource/device relationships
Visualize network connectivity
Plan network changes
Troubleshoot connectivity issues
Document network infrastructure
Topology information includes:
Physical connections: Which resource/device are physically connected (switch ports, router interfaces)
Logical relationships: Parent-child relationships (gateway → firewall → switches → servers)
Layer 2 topology: MAC address tables, VLANs, switch port connections
Layer 3 topology: IP routing, subnets, default gateways
Use cases:
Network visualization: See how your network is structured
Impact analysis: "If this switch fails, what resource/device lose connectivity?"
Capacity planning: Identify network bottlenecks and heavily-utilized links
Documentation: Auto-generated network diagrams
Troubleshooting: Trace connection paths between resource/device
How LogicMonitor discovers topology:
CDP/LLDP: Cisco and other vendors broadcast neighbor information
SNMP: Query resource/device interface tables, ARP tables, routing tables
Traceroute: Active probing to discover paths
Parent/child relationships: Based on gateway configuration
Related tools: "list_resources" (view resources/devices), "get_resource" (device details including connections).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, but the description adds significant behavioral context: what is returned (relationships, layers), how discovery works (SNMP, CDP, LLDP), and the nature of the data (automatically discovered maps). It does not discuss rate limits or performance, but for a read-only query tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings and bullet points, making it easy to scan. However, it is verbose with repeated phrases like 'resource/device' and covers extensive explanatory material that could be condensed. Still, front-loading the purpose and returns helps agents quickly grasp the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema and moderate complexity, the description is remarkably complete. It explains what topology is, when to use it, what information is included (layers, connections), use cases, and even how discovery works. This enables an agent to understand the tool's domain and invocation context thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'fields,' which is adequately described in the schema. The description does not add any additional semantic meaning or examples for this parameter, so it meets the baseline but does not exceed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get network topology information in LogicMonitor (LM) monitoring.' It specifies the exact resource (network topology) and distinguishes from sibling tools like list_resources and get_resource via the 'Related tools' section, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a dedicated 'When to use' section listing explicit use cases (e.g., understand network architecture, troubleshoot connectivity). It also names alternatives in 'Related tools,' guiding the agent on when to choose this tool over others. No explicit exclusions, but the guidance is comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userARead-only
Get detailed information about a specific user by their ID in LogicMonitor (LM) monitoring.
Returns: Complete user details: username, email, firstName, lastName, roles (permissions), status (active/suspended), last login time, created date, phone, timezone, API token count, two-factor auth status.
When to use:
Review user permissions and roles
Check last login time (identify inactive users)
Verify contact information
Audit user access before modification
Get user details for API token management
Key information:
roles: Array of role names (defines permissions)
status: "active" (can login) vs "suspended" (access revoked)
lastLoginOn: Epoch timestamp (identify inactive accounts)
apiTokens: Number of active API tokens
twoFAEnabled: Whether 2FA is configured
Security audit use cases:
Find users who haven't logged in for 90+ days
Review which users have admin roles
Check if former employees still have access
Verify API token usage per user
Workflow: Use "list_users" to find userId, then use this tool for complete user profile.
Related tools: "list_users" (find user), "list_roles" (see available roles), "list_api_tokens" (view user's tokens), "update_user" (modify).
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The ID of the user to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return fields in detail (username, email, roles, status, etc.) and explains their significance (e.g., 'status: active vs suspended'). Includes security audit use cases. Annotations already indicate read-only, and description reinforces safety with behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and bullet points. Every sentence adds value, though somewhat lengthy. Front-loaded with purpose. Could be slightly more concise, but structure aids readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description provides thorough coverage of return fields, use cases, and workflow. Complements high schema coverage and readOnlyHint annotation. Complete enough for an agent to understand what the tool does and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers both parameters with descriptions. Description adds no new parameter-level detail beyond schema. Baseline 3 for high schema coverage (100%). Description compensates slightly by explaining return fields that relate to the 'fields' parameter, but not enough to exceed baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get detailed information about a specific user by their ID in LogicMonitor (LM) monitoring.' Differentiates from sibling tools like list_users (find user ID) and update_user (modify). Purpose is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use: review permissions, check last login, verify contact, audit before modification, API token management. Provides workflow: use list_users to find userId then this tool. Mentions related tools for context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_websiteARead-only
Get detailed information about a specific website monitor by its ID in LogicMonitor (LM) monitoring.
Returns: Complete website monitor details: name, type (webcheck/pingcheck), domain/URL, monitoring configuration, checkpoint locations, response time thresholds, SSL settings, authentication, custom headers, alert status.
When to use:
Review monitoring configuration
Check checkpoint locations
Verify URL and settings
Troubleshoot failed checks
Audit SSL certificate monitoring
Configuration details returned:
steps: Multi-step transaction monitoring (for complex workflows)
checkpoints: Which global locations perform checks (e.g., US-East, EU-West, Asia-Pacific)
schema: HTTP vs HTTPS
testLocation: Internal (from collector) vs External (from cloud)
responseTimeThreshold: Alert if slower than X ms
sslCertExpirationDays: Alert X days before cert expires
Use cases:
Verify website is monitored from correct geographic locations
Check if SSL certificate expiration monitoring is enabled
Review response time thresholds (too strict? too lenient?)
Troubleshoot why website checks are failing
Document what endpoints are monitored
Workflow: Use "list_websites" to find websiteId, then use this tool for complete monitoring configuration.
Related tools: "list_websites" (find website), "update_website" (modify), "generate_website_link" (get URL), "list_website_checkpoints" (available locations).
| Name | Required | Description | Default |
|---|---|---|---|
| websiteId | Yes | The ID of the website to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description reinforces the readOnlyHint from annotations by stating it returns data. It details what configuration is returned (steps, checkpoints, thresholds, SSL) and includes use cases for troubleshooting, adding significant context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections and bullet points, but slightly verbose with multiple use case lists. The core purpose is front-loaded, and each section adds value, though some redundancy exists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Thoroughly explains return values (name, type, checkpoints, thresholds, SSL, etc.) and no output schema is present. The description covers all important aspects for a read tool, including related tools and a workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add significant new parameter-level detail beyond what the schema already provides for 'websiteId' and 'fields'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), resource ('website monitor'), and scope ('by its ID in LogicMonitor'). It distinguishes from sibling tools like 'list_websites' and 'update_website' by specifying unique functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes explicit 'When to use' and 'Workflow' sections, listing specific scenarios (e.g., review config, troubleshoot) and suggesting using 'list_websites' first. It also lists related tools with descriptions, providing clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_website_groupARead-only
Get detailed information about a specific website group by its ID in LogicMonitor (LM) monitoring.
Returns: Complete website group details: name, full path, parentId, description, number of websites (direct and total), number of subgroups, alert status.
When to use:
Get group path for documentation
Check website membership counts
Verify group hierarchy
Review group structure before creating monitors
Workflow: Use "list_website_groups" to find groupId, then use this tool for complete details.
Related tools: "list_website_groups" (find groups), "list_websites" (websites in group), "create_website_group" (create new).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The ID of the website group to retrieve | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description is consistent, describing a read operation. The description adds details on what the response contains but could explicitly state no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Structured with clear sections (Returns, When to use, Workflow, Related tools). Every sentence is informative and no redundant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage context, return values, and workflow. For a read-only get tool with good annotations, this is fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description does not need to explain parameters deeply. It only mentions 'by its ID' for groupId, which adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get detailed information about a specific website group by its ID' and lists what is returned. It distinguishes from sibling get tools by specifying the resource type (website group).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a dedicated 'When to use' section with specific use cases and a 'Workflow' section recommending prior use of list_website_groups. Related tools are explicitly named, offering alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_access_groupsARead-only
List all access groups in LogicMonitor (LM) monitoring.
Returns: Array of access groups with: id, name, description, tenant ID, number of associated resources, number of users.
What are access groups: Permission boundaries that control WHICH resources users can see and manage. Used in multi-tenant environments to isolate customer data, or to segment access by team/department. Users assigned to access group can only see resources in that group.
When to use:
Manage multi-tenant environments (MSPs)
Segment monitoring by department/team
Control resource visibility
Audit access control configuration
Find access group IDs for user assignment
Access groups vs Roles (important distinction):
Access Groups: Control WHAT resources you can see (visibility, data isolation)
Roles: Control WHAT actions you can perform (view/edit/delete permissions)
Users need BOTH: Role (what they can do) + Access Group (what they can see)
Common use cases:
MSP / Multi-tenant:
Access Group "Customer A" - User sees only Customer A resource/device
Access Group "Customer B" - User sees only Customer B resource/device
Prevents customers from seeing each other's data
Departmental isolation:
Access Group "Network Team" - See only network resource/device
Access Group "Server Team" - See only servers
Access Group "Database Team" - See only database servers
Environment separation:
Access Group "Production" - Only prod resource/device
Access Group "Dev/Test" - Only non-prod resource/device
Junior staff limited to dev/test access group
Workflow: Use this tool to find access groups, then assign users to groups via "update_user" to control resource visibility.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_access_group" (details), "create_access_group" (create new), "list_users" (see user assignments), "list_resources" (associate resource/device with groups).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide 'readOnlyHint: true', but the description adds valuable behavioral context: it notes that a negative 'total' value indicates incomplete results and explains pagination behavior (use size/offset or autoPaginate). This goes beyond the annotations and helps the agent understand edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (returns, what are, when to use, etc.) but is verbose. It could be more concise, as multiple paragraphs elaborate on concepts that could be summarized. The length is acceptable but not optimal for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 parameters, no output schema, and no nested objects, the description provides a thorough explanation: it states the purpose, usage guidelines, return fields, conceptual background, behavioral notes, and related tools. The explanation of what access groups are and the examples cover the context needed for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 5 parameters are described in the schema). The description does not add per-parameter details beyond the schema. However, it does include an 'Important' note about pagination and negative total, which indirectly relates to the pagination parameters. The baseline is 3, and this minor addition does not elevate the score significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all access groups in LogicMonitor (LM) monitoring.' It uses a specific verb ('list') and resource ('access groups'). It distinguishes from sibling tools like 'get_access_group' by noting it returns a list, and it explicitly contrasts with roles. The purpose is unambiguous and well-explained.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a dedicated 'When to use' section listing specific scenarios (multi-tenant, departmental isolation, environment separation). It also provides a crucial distinction between access groups (what you can see) and roles (what you can do), and gives a workflow: use list to find groups, then assign users via 'update_user'. This explicitly guides the agent on when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alert_rulesARead-only
List all alert rules in LogicMonitor (LM) monitoring.
Returns: Array of alert rules with: id, name, priority, enabled status, matching conditions (device/datasource/severity filters), escalation chain assigned, suppression settings.
What are alert rules: The ROUTING LOGIC that determines "which alerts go to which people." Act as traffic directors: "IF alert matches these conditions, THEN send to this escalation chain." Rules are evaluated in priority order (1st match wins).
When to use:
Audit who gets notified for different alert types
Understand notification routing logic
Find rule IDs for modifications
Troubleshoot "why didn't I get alerted?"
Document alert notification policies
How alert rules work: Alert triggers → Rules evaluated in priority order → First matching rule wins → Routes alert to that rule's escalation chain → Escalation chain notifies recipients
Common alert rule patterns:
Priority 1 (Critical Production): IF resource/device in "Production" group AND severity = critical → Route to "Critical On-Call" escalation chain
Priority 2 (Database Team): IF datasource contains "MySQL" OR "PostgreSQL" → Route to "Database Team" escalation chain
Priority 3 (Business Hours): IF severity = warning → Route to "Business Hours Email" chain (no pages)
Priority 99 (Catch-All): IF any alert not matched above → Route to "Default NOC" escalation chain
Use cases:
"Who gets paged for production CPU alerts?" → Find rule matching prod resources/devices+ CPU datasource
"Update team notifications" → Modify alert rule to route to different escalation chain
"Stop getting low-priority pages" → Check which rule routes those alerts, adjust severity or chain
Critical for notification troubleshooting: If alerts aren't reaching people, check:
Does alert match any rule?
Is matched rule enabled?
Is escalation chain configured correctly?
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_alert_rule" (detailed conditions), "list_escalation_chains" (destination chains), "update_alert_rule" (modify routing).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true, but the description adds valuable behavioral details: explaining that a negative 'total' indicates incomplete results, that pagination with size/offset or autoPaginate should be used, and describing how rules are evaluated in priority order. This goes well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized with sections, bullet points, and examples. Every section adds value, including common patterns and troubleshooting. It front-loads the core purpose. A slight reduction in length could improve conciseness, but the structure is excellent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, usage scenarios, behavioral notes, parameter hints, response structure (array of alert rules with fields), and troubleshooting tips. It is comprehensive despite lacking an output schema, and addresses potential pitfalls like negative totals and pagination.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage with clear descriptions for each parameter. The description adds extra value by explaining the filter syntax with specific examples and the significance of autoPaginate for large result sets. It does not repeat schema content but supplements it effectively.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all alert rules in LogicMonitor (LM) monitoring' and explains what alert rules are, distinguishing from siblings like get_alert_rule and list_escalation_chains. The verb 'list' and resource 'alert rules' are specific, and the additional context about routing logic and priority order makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section provides explicit scenarios such as auditing notifications, understanding routing, troubleshooting, and documentation. It also lists related tools. However, it does not explicitly state when not to use this tool (e.g., for detailed rule inspection vs. list overview), but the context is clear enough for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alertsARead-only
List active alerts in LogicMonitor (LM) monitoring.
Returns: Array of alerts with: id (alertId), severity (critical/error/warning), resource name, datasource, datapoint, alert message, start time (startEpoch), acknowledgement status (acked), alert rule.
When to use:
Get all critical production alerts
Find unacknowledged alerts needing attention
Monitor specific service health
Check CPU/memory alerts
Generate alert reports
Two search modes:
Simple search: Use query parameter with free text (e.g., query:"prod-web-01") - searches by resource/device name (monitorObjectName field)
Advanced filtering: Use filter parameter with LM filter syntax (e.g., filter:"severity:critical,acked:false") for precise control
Common filter patterns:
Critical alerts: filter:"severity:critical"
Unacknowledged: filter:"acked:false"
Specific device: filter:"monitorObjectName~*prod-web-01*"
CPU alerts: filter:"resourceTemplateName~*CPU*"
Recent alerts: filter:"startEpoch>1730851200" (epoch seconds)
Combined: filter:"severity:critical,acked:false" (AND logic)
Query vs Filter:
query: Simple text search by resource/device name only (e.g., query:"production", query:"k8s-cluster")
filter: Precise LM filter syntax with any alert field. Use for severity, acked status, etc.
If both provided, query is converted to filter and combined with provided filter using AND logic
Important: Alert API does NOT support OR operator (||). Use comma for AND only. For complex queries, make multiple calls.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_alert" (full details), "acknowledge_alert" (acknowledge), "add_alert_note" (add notes), "generate_alert_link" (get URL).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Simple search query. Free text (e.g., "prod-web-01", "k8s-cluster") searches by resource/device name (monitorObjectName). Can also use filter syntax (e.g., "severity:critical") which gets formatted automatically. | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. | |
| needMessage | No | Whether to include alert message details |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and the description adds behavioral details such as autoPaginate behavior, negative total meaning, and the conversion of query to filter. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Returns, When to use, Two search modes, Important notes) and front-loaded with purpose. While slightly verbose, every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides a comprehensive overview of return fields, pagination, modes, and limitations. It fully equips the agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 7 parameters have schema descriptions (100% coverage), and the description adds extra context: distinction between query and filter, conversion rules, and common filter patterns. This goes beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists active alerts in LogicMonitor and specifies the return structure. It distinguishes from sibling tools like get_alert, acknowledge_alert, etc., by providing context on related functionalities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section lists concrete scenarios (critical alerts, unacknowledged, etc.) and explains two search modes with guidance on when to use each. It includes important notes about OR operator limitations and negative total handling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_api_tokensARead-only
List API tokens for a specific user in LogicMonitor (LM) monitoring.
Returns: Array of API tokens for specified user with: id, note (description), created date, last used date, status (active/inactive), access ID, roles inherited from user.
What are API tokens: Authentication credentials for LogicMonitor REST API. Alternative to username/password for programmatic access. Each token inherits permissions from its user.
When to use:
Audit API access per user
Find unused/stale tokens for security cleanup
Check last usage time
Inventory API integrations
Before creating new token (check if existing one available)
Security considerations:
Each token has Access ID and Access Key (like username/password for API)
Token inherits all permissions from user (if user is admin, token has admin rights)
Tokens never expire automatically (must be manually revoked)
Last used date helps identify unused tokens that should be removed
Common use cases:
Security audit: "Find all API tokens, check last usage, remove stale ones"
Integration tracking: "Which integrations are using this user's tokens?"
Access review: "What API access does this user have?"
Token rotation: "List all tokens before rotating credentials"
Best practices:
Create service accounts (dedicated users) for API integrations instead of personal user tokens
Add descriptive notes to tokens (e.g., "Terraform automation", "Grafana integration")
Regularly audit and remove unused tokens (check lastUsedOn timestamp)
Use least-privilege: Create users with minimal required permissions, then create tokens for those users
Security workflow:
List all users with "list_users"
For each user, use this tool to check their API tokens
Review lastUsedOn - if >90 days, consider revoking
Check note field to understand token purpose
Workflow: Use this tool with userId from "list_users" to audit that user's API access.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "list_users" (find userId), "create_api_token" (generate new), "delete_api_token" (revoke access).
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | The user ID | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations say readOnlyHint=true, and the description adds important behavioral details: negative 'total' indicates incomplete results, pagination behavior, and security considerations about token permissions, going beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with sections, but is quite long and includes some redundant explanation (e.g., what are API tokens) that an AI might not need. Still, it is structured and front-loaded with key info.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 params, no output schema), the description is thoroughly complete: it covers return fields, use cases, best practices, workflows, and edge cases like negative total. No output schema needed due to detailed description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so baseline is 3; the description adds context (e.g., userId from list_users) and an important note about autoPaginate, but does not significantly enhance parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists API tokens for a specific user, and includes a workflow linking to sibling tools like 'create_api_token' and 'delete_api_token', distinguishing it well.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a dedicated 'When to use' section with specific scenarios (audit, find stale tokens, inventory), a 'Security workflow', and mentions related tools, giving clear guidance on when and how to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_audit_logsARead-only
List audit logs in LogicMonitor (LM) monitoring for compliance and security auditing.
Returns: Array of audit log entries with: id, username, IP address, timestamp (happenedOn in epoch SECONDS), description of action performed, sessionId.
When to use:
Investigate changes: "Who deleted this resource/device?" → filter:"description~*Delete*,description~*device*"
Track user activity: "What did john.doe do today?" → filter:"username:john.doe,happenedOn>1730851200"
Monitor API usage: Find actions performed via API tokens
Compliance audits: Export log history for specific time periods
Security investigation: Track login attempts, IP addresses, suspicious activities
Troubleshooting: "Who changed this alert rule?" → filter:"description~*AlertRule*"
Two search modes:
Simple search: Use query parameter with free text (e.g., query:"john.doe", query:"device") - searches across username, description, and IP fields
Advanced filtering: Use filter parameter with LM filter syntax (e.g., filter:"username:admin,happenedOn>1640995200") for precise control
Common filter patterns:
By user: filter:"username:john.doe"
By time: filter:"happenedOn>1640995200" (IMPORTANT: epoch SECONDS, not milliseconds!)
By action type: filter:"description~*Create*" or filter:"description~*Delete*" or filter:"description~*Update*"
By resource: filter:"description~*device*" or filter:"description~*dashboard*"
By IP: filter:"ip:192.168.1.100"
Combined (AND): filter:"username:admin,happenedOn>1640995200,description~*device*"
Query vs Filter:
query: Simple text search across username, description, IP (OR logic). Use for quick lookups: query:"john.doe", query:"device"
filter: Precise LM filter syntax with any field. Use for time ranges, exact matches: filter:"happenedOn>1640995200"
If both provided, query is converted to filter and combined with provided filter using AND logic
Critical notes:
Time uses epoch SECONDS (not milliseconds like other LM APIs)
Cannot use OR operator (||) in audit logs, only AND (comma)
Use autoPaginate:true for complete history (may take time for large datasets)
Web UI access: https://mycompany.logicmonitor.com/santaba/uiv4/settings/access-logs (Settings → Audit Logs)
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_audit_log" (details of specific entry).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Simple search query. Free text (e.g., "john.doe", "device", "192.168.1.100") automatically searches across username, description, and IP fields. Can also use filter syntax (e.g., "username:admin") which gets formatted automatically. | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behaviors: time in epoch seconds, no OR operator, autoPaginate handling, negative total meaning incomplete results, and query-filter interaction. Annotations only provide readOnlyHint, so description adds significant value 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with bullet points and sections. Some redundancy (e.g., web UI access) but overall efficient given complexity. Could be slightly more concise but not excessively long.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: return format, search modes, filter patterns, pitfalls, pagination, and integration with other tools. No output schema, but description fully compensates. Complete for an agent to use effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage, but description adds rich examples and nuanced explanations for each parameter (e.g., query vs. filter usage, filter syntax, autoPaginate implications). Far exceeds schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists audit logs for compliance and security auditing, with specific verb (list) and resource (audit logs). It distinguishes from sibling 'get_audit_log' which retrieves details of a specific entry.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides extensive guidance on when to use (investigate changes, track user activity, etc.), two search modes (simple vs. advanced), common filter patterns, and explicitly mentions related tool 'get_audit_log'. Includes when to use query vs. filter with examples.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collector_groupsARead-only
List all collector groups (folders) in LogicMonitor (LM) monitoring.
Returns: Array of collector groups with: id, name, parentId, full path, description, number of collectors, number of subgroups.
What are collector groups: Organizational folders for collectors (monitoring agents), similar to resource/device groups. Used to categorize collectors by location, function, or customer.
When to use:
Browse collector organization
Find group IDs for collector operations
Understand collector deployment structure
Navigate to specific collector folders
Common organization patterns:
By location: "US-West Collectors", "EU Collectors", "APAC Collectors"
By environment: "Production Collectors", "Dev/Test Collectors"
By customer: "Customer A Collectors", "Customer B Collectors" (MSP)
By datacenter: "DC1 Collectors", "DC2 Collectors", "AWS Collectors"
By function: "Network Collectors", "Server Collectors", "Cloud Collectors"
Use cases:
Organize collectors by geographic region
Group collectors by customer or tenant
Separate production vs non-production collectors
Structure multi-datacenter collector deployments
Workflow: Use this tool to browse hierarchy, then "list_collectors" filtered by groupId to see collectors in specific folder.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_collector_group" (details), "list_collectors" (collectors in group), "create_collector_group" (create folder).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. The description adds critical behavioral context: negative total indicates incomplete results, pagination behavior, and autoPaginate option. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long but well-organized with headers and bullet points. It provides valuable context, though some sections (e.g., common patterns) may be redundant for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description adequately explains the return format (fields like id, name, parentId) and pagination details. Covers all necessary information for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add parameter details beyond what the schema provides. The description includes filter syntax in the schema, but the description text itself does not elaborate on parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action (list) and resource (collector groups) and includes details about the returned fields. It distinguishes from siblings like get_collector_group and list_collectors by noting the purpose and related workflow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear use cases (browse organization, find group IDs) and workflow instructions (use with list_collectors). Does not explicitly state when not to use, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectorsARead-only
List all LogicMonitor (LM) monitoring collectors (monitoring agents).
Returns: Array of collectors with: id, description (collector name), hostname, platform (Windows/Linux), status (alive/dead), build version, number of monitored resources/devices, last heartbeat time.
When to use:
Check collector health status before adding resources/devices
Find available collectors for new resource/device assignments
Monitor collector capacity and load
Identify offline/dead collectors
What are collectors: Lightweight agents installed on-premise or in cloud that collect metrics from resources/devices. Each resource/device must be assigned to one collector.
Common filter patterns:
Alive collectors: filter:"status:alive"
By platform: filter:"platform:Linux" or filter:"platform:Windows"
By name: filter:"description~*prod*"
Low capacity: filter:"numberOfHosts<100"
Before creating resources/devices: Use this tool to find collectorId for the "preferredCollectorId" parameter in "create_resource".
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_collector" (details), "list_collector_groups" (browse groups), "list_collector_versions" (check updates).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only have readOnlyHint:true, which is consistent. The description adds important behavioral details: a negative 'total' indicates incomplete results and recommends pagination or autoPaginate. It also clarifies the read-only nature but could mention any rate limits or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, front-loaded with the main action, and each sentence adds value. It is slightly long but not wasteful; could be trimmed slightly for conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description compensates by listing return fields and explaining collector concept. It covers filter syntax, pagination behavior, and prerequisite usage (finding collectorId). Completeness is excellent for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by providing common filter patterns and usage context (e.g., 'Before creating resources/devices'), which helps agents understand parameter use beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a clear verb-resource combination: 'List all LogicMonitor (LM) monitoring collectors (monitoring agents).' It distinguishes this tool from siblings like get_collector and list_collector_groups through explicit related tools section and usage guidelines.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a dedicated 'When to use' section listing specific scenarios (check health, find available collectors, monitor capacity, identify offline) and explicitly recommends using this tool to find collectorId before creating resources, with a note on related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collector_versionsARead-only
List available collector versions in LogicMonitor (LM) monitoring.
Returns: Array of collector versions with: version number, release date, stability level (GA/EA/RC), changelog summary, download size, platform support (Windows/Linux), mandatory/recommended flag.
What are collector versions: Software releases for LogicMonitor collector agents. Collectors are installed on your infrastructure to gather monitoring data. Staying current ensures latest features, bug fixes, and security patches.
When to use:
Check for collector updates
Review changelog before upgrading
Find specific version for rollback
Verify platform compatibility
Plan maintenance windows for collector upgrades
Version types:
GA (Generally Available): Production-ready, stable, recommended
EA (Early Adopter): Beta, new features, use in non-production first
RC (Release Candidate): Pre-GA testing version
Mandatory: Critical security/bug fixes, upgrade required
Collector update workflow: 1. Use this tool to check available versions 2. Review changelog for breaking changes 3. Test new version on non-production collector first 4. Use "get_collector" to check current version on your collectors 5. Update collectors via LogicMonitor UI or API 6. Monitor collector health after upgrade
Version numbering: Format is typically X.Y.Z (e.g., 34.100.0) where:
X = Major release (significant changes)
Y = Minor release (features, improvements)
Z = Patch release (bug fixes)
Best practices:
Keep collectors within 2-3 versions of latest GA release
Subscribe to release notifications for critical updates
Test EA versions in lab before production
Upgrade during maintenance windows (may briefly interrupt monitoring)
Stagger upgrades (don't upgrade all collectors simultaneously)
Common scenarios:
"Check if newer version available" → Compare latest version to your collectors
"Plan upgrade" → Review changelog, schedule maintenance
"Rollback needed" → Find previous stable version
"Platform migration" → Verify version supports new OS
Related tools: "get_collector" (check current version on collector), "list_collectors" (find collectors to upgrade).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, but the description provides extensive behavioral context: the return format (array with fields), version types (GA, EA, RC, mandatory), and workflow. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings and bullet points, but it is verbose with sections on version numbering, best practices, and detailed workflow. While informative, it could be more concise for a tool definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains return values. It covers version types, use cases, best practices, and links to related tools. The 3 optional parameters are well-documented in the schema, so the description is complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description does not elaborate on parameters beyond what the schema provides. It focuses on output and usage, not parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the tool lists available collector versions in LogicMonitor. It specifies the verb, resource, and context. The description further distinguishes from siblings by mentioning related tools like 'get_collector' and 'list_collectors' for specific tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section lists five explicit scenarios (check updates, review changelog, find rollback, verify platform, plan upgrades). It also provides 'Common scenarios' and mentions related tools, giving clear guidance on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_configsourcesARead-only
List all ConfigSources in LogicMonitor (LM) monitoring.
Returns: Array of ConfigSources with: id, name, displayName, description, appliesTo logic, collection method.
What are ConfigSources: Track configuration file changes for compliance and change management. Similar to datasources, but for configs instead of metrics. Alert when configs change unexpectedly.
When to use:
Find ConfigSource for specific resource/device type (e.g., Cisco_IOS_Config)
Discover what configs are being tracked
Get ConfigSource IDs for API operations
Audit configuration monitoring coverage
What configs can be tracked:
Network resources/devices: Router configs, switch configs, firewall rules
Linux: /etc files, app configs, SSH authorized_keys
Windows: Registry keys, security policies
Cloud: Security groups, IAM policies
Use cases:
Compliance: "Alert when firewall rules change"
Change management: "Who modified this router config?"
Rollback: Compare current config to previous version
Audit: "Show all config changes in last 30 days"
Common ConfigSources:
Cisco_IOS_Config: Cisco router/switch configs
F5_LTM_Config: F5 load balancer configs
Palo_Alto_Config: Palo Alto firewall rules
Linux_Config_Files: Monitor /etc files
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_configsource" (details), "list_device_configs" (see configs for device).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
ReadOnlyHint is true, description adds context about pagination behavior (negative total indicates incomplete results) and autoPaginate. No contradictions, but could disclose more about authentication or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, front-loaded with main purpose. Slightly verbose but each section adds value, so earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description explicitly states return format (Array with fields), covers common use cases, examples of ConfigSources, and even alerts about negative total. Very complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds value by explaining the autoPaginate behavior and the negative total hint for pagination, which is beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all ConfigSources in LogicMonitor (LM) monitoring' and explains what ConfigSources are. Distinguishes from sibling tools like get_configsource and list_device_configs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use scenarios (find ConfigSource for specific resource, discover configs, get IDs, audit coverage) and mentions related tools at the end.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dashboard_groupsARead-only
List all dashboard groups (folders) in LogicMonitor (LM) monitoring.
Returns: Array of dashboard groups with: id, name, parentId, full path, description, number of dashboards, number of subgroups, owner.
What are dashboard groups: Organizational folders for dashboards, like directories in a file system. Used to organize dashboards by team, function, or application.
When to use:
Browse dashboard organization before creating/moving dashboards
Find group IDs for dashboard operations
Understand dashboard hierarchy
Navigate to specific dashboard folders
Common organization patterns:
By team: "Platform Team", "Database Team", "Network Team"
By environment: "Production", "Staging", "Development"
By application: "Web App", "API Services", "Background Jobs"
By cloud provider: "AWS Dashboards", "Azure Dashboards"
Workflow: Use this tool to browse hierarchy, then "list_dashboards" filtered by groupId to see dashboards in specific folder.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_dashboard_group" (details), "list_dashboards" (dashboards in group), "create_dashboard_group" (create folder).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds significant behavioral context beyond the readOnlyHint annotation: explains return fields, the 'negative total' edge case for incomplete results, and pagination behavior. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings and bullet points, making information easily scannable. However, somewhat verbose with background sections like 'What are dashboard groups' that may not be necessary for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fully covers all aspects: return type, pagination, filtering, field selection, edge cases, and workflow integration with related tools. No output schema exists, so the description compensates well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds minimal new information about parameters beyond what the schema provides. Examples for filter and fields are present but similar to schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'List all dashboard groups (folders)' – specific verb and resource. Explicitly distinguishes from sibling tools like get_dashboard_group and list_dashboards in the 'Related tools' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a dedicated 'When to use' section with concrete scenarios (browse organization, find group IDs, understand hierarchy). Provides workflow and explicitly mentions alternatives (get_dashboard_group for details).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_dashboardsARead-only
List all dashboards in LogicMonitor (LM) monitoring.
Returns: Array of dashboards with: id, name, description, groupId, groupName, widget count, owner.
When to use:
Find AWS/Azure/infrastructure dashboards
Discover available pre-built dashboards
Get dashboard IDs for generating links
List dashboards in specific group
Common filter patterns:
By name: filter:"name~*AWS*" (find all AWS dashboards)
By group: filter:"groupId:5" or filter:"groupName~*Cloud*"
By owner: filter:"owner:john.doe"
Next step: Use "generate_dashboard_link" with the dashboard ID to get the full clickable URL for sharing.
Tip: Dashboards are organized in groups. Use "list_dashboard_groups" to browse the hierarchy.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_dashboard" (details), "generate_dashboard_link" (get URL), "list_dashboard_groups" (browse hierarchy).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint: true, which the description does not contradict. The description adds important behavioral details: warning about negative 'total' indicating incomplete results, and explanation of autoPaginate behavior. This adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings, bullet points, and clear sections. It is slightly lengthy but every sentence adds value. Front-loaded with purpose and return specification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but the description specifies the return format: 'Array of dashboards with: id, name, description, groupId, groupName, widget count, owner.' It also covers pagination, filtering, and related tools, making it fully complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema covers 100% of parameters, and the description enriches them with 'Common filter patterns' (e.g., examples for filter), explanation of autoPaginate behavior, and fields usage. This adds significant meaning beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all dashboards in LogicMonitor (LM) monitoring.' It specifies the verb (list), resource (dashboards), and scope (all). It distinguishes from siblings like get_dashboard (details) and generate_dashboard_link (get URL) in the 'Related tools' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a dedicated 'When to use:' section with specific scenarios (e.g., find AWS/Azure dashboards, discover pre-built, get IDs for links). It also provides common filter patterns, a next step, and references to related tools, making usage very clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_datasourcesARead-only
List all available datasources in LogicMonitor (LM) monitoring.
Returns: Array of datasources with: id, name, displayName, description, appliesTo (which resource/device it monitors), collection method, datapoints/metrics collected.
What are datasources: Templates that define WHAT to monitor (e.g., CPU, memory, disk), HOW to collect it (SNMP, WMI, API), and WHEN to alert. LogicMonitor has 2000+ pre-built datasources for common technologies.
When to use:
Find datasource for specific technology (e.g., "AWS_EC2", "VMware_vCenter")
Discover what can be monitored
Get datasource IDs for API operations
Browse monitoring capabilities
Common filter patterns:
By name: filter:"name~*CPU*" or filter:"displayName~*Memory*"
Cloud providers: filter:"name~*AWS*" or filter:"name~*Azure*"
Database: filter:"name~*MySQL*" or filter:"name~*SQL_Server*"
Network: filter:"name~*Cisco*" or filter:"name~*SNMP*"
Examples: AWS_EC2 (monitors EC2 instances), SNMP_Network_Interfaces (network stats), WinCPU (Windows CPU), Linux_SSH (Linux via SSH).
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_datasource" (details), "list_resource_datasources" (see what's applied to specific resource/device).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behaviors: negative total indicates incomplete results, pagination details, and autoPaginate option. Consistent with readOnlyHint annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-organized with sections, but slightly verbose for a listing tool. Could trim some redundancy while keeping helpful examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, but description details return fields and pagination behavior. Covers all necessary context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already covers all 5 parameters with descriptions. Description adds valuable filter pattern examples and clarifies 'fields' parameter usage, but schema is already strong.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists all available datasources in LogicMonitor, explains what datasources are, and distinguishes from related tools like get_datasource and list_resource_datasources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' section with specific scenarios, filter pattern examples, and references to sibling tools for alternative functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_escalation_chainsARead-only
List all escalation chains in LogicMonitor (LM) monitoring.
Returns: Array of escalation chains with: id, name, description, escalation stages, recipients at each stage, timing/delays, enabled status.
What are escalation chains: Define HOW and WHO gets notified when alerts trigger. Multi-stage notification workflows: Stage 1 (notify team lead immediately) → Stage 2 (if still open after 15 min, notify manager) → Stage 3 (if still open after 30 min, page director).
When to use:
Audit notification routing
Find escalation chain IDs for alert rule configuration
Review who gets notified for critical alerts
Verify on-call escalation paths
How escalation chains work: Alert triggers → Alert Rule matches → Routes to Escalation Chain → Stage 1 notifies immediately → Wait X minutes → If still alerting, Stage 2 notifies → Repeat through stages
Common escalation patterns:
Critical Production: Stage 1: On-call engineer (0 min) → Stage 2: Team lead (15 min) → Stage 3: Engineering manager (30 min)
Standard: Stage 1: Team email (0 min) → Stage 2: PagerDuty (30 min)
Business Hours Only: Stage 1: Team Slack (0 min, 8am-6pm only)
Use cases:
"Who gets paged for critical database alerts?" → Check escalation chain
"Why didn't I get notified?" → Verify you're in the escalation chain
"Update on-call rotation" → Modify escalation chain recipients
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_escalation_chain" (detailed stages), "list_alert_rules" (see which rules use chain), "list_recipients" (available notification targets).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, confirming the tool is read-only. The description adds transparency by discussing pagination behavior (negative 'total' indicates incomplete results) and the effect of autoPaginate parameter, providing useful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with headings and bullet points, making it easy to scan. However, it is verbose with sections like 'Common escalation patterns' and 'Use cases' that, while informative, could be more concise for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema, the description compensates by detailing the return fields (id, name, description, etc.) and explaining escalation chain concepts. It covers pagination, usage scenarios, and examples, making the tool fully understandable without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description supplements this by explaining pagination behavior and the meaning of a negative 'total' value, which adds context for the size/offset/autoPaginate parameters, justifying a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all escalation chains in LogicMonitor (LM) monitoring' with a specific verb and resource. It provides detailed context on what escalation chains are, when to use the tool, and distinguishes from sibling tools like get_escalation_chain, list_alert_rules, and list_recipients.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes an explicit 'When to use' section with bullet points and a 'Related tools' section that lists alternatives, guiding the agent on appropriate use cases. However, it does not explicitly state when the tool should not be used or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_eventsourcesARead-only
List all EventSources in LogicMonitor (LM) monitoring.
Returns: Array of EventSources with: id, name, displayName, description, appliesTo logic, event collection method.
What are EventSources: Collect and process event data (logs, Windows events, syslog, traps). Different from DataSources (metrics) and ConfigSources (configs). Used for log monitoring and event correlation.
When to use:
Find EventSource for log monitoring
Discover what events are being collected
Get EventSource IDs for operations
Audit event monitoring coverage
Event types collected:
Windows Event Logs: Application, Security, System logs
Syslog: Linux/Unix system logs, network resource/device logs
SNMP Traps: Network resource/device alerts and notifications
Application logs: Custom app logs, web server logs
Cloud events: CloudWatch logs, Azure events
Common EventSources:
Windows_Application_EventLog: Windows application events
Windows_Security_EventLog: Security/audit logs
Linux_Syslog: Linux system logs via syslog
SNMP_Traps: Network resource/device SNMP traps
VMware_Events: vCenter events
Use cases:
Monitor Windows failed login attempts
Alert on ERROR/CRITICAL in application logs
Collect network resource/device syslog for troubleshooting
Track security events for compliance
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_eventsource" (details), "list_device_eventsources" (events for device).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only have readOnlyHint=true. Description adds rich behavioral details: warns about negative total indicating incomplete results, explains pagination behavior, lists return fields (id, name, displayName, etc.), and provides examples of EventSources. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is lengthy but well-structured with clear sections (Returns, What are, When to use, Event types, Common, Use cases, Important, Related tools). Some redundancy; could be more concise without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers all aspects: purpose, usage, common EventSources, event types, pagination warning, filter examples, and related tools. No output schema, but description lists return fields. Complete for a list tool with 5 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for all 5 parameters. Description adds value by explaining pagination implications ('use pagination...or set autoPaginate: true') and giving examples of filter expressions. This goes beyond baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List all EventSources in LogicMonitor (LM) monitoring' with clear verb and resource. It explains what EventSources are and distinguishes them from DataSources and ConfigSources. Differentiates from sibling tools 'get_eventsource' and 'list_device_eventsources'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use' bullet points (find EventSource, discover events, get IDs, audit coverage). Mentions related tools for details and device-specific listing. Does not explicitly state when not to use, but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integrationsARead-only
List all third-party integrations configured in LogicMonitor (LM) monitoring.
Returns: Array of integrations with: id, name, type (Slack/PagerDuty/ServiceNow/Jira/etc), status (active/inactive), configuration summary, authentication status.
What are integrations: Connections to external platforms for alert notifications, ticket creation, chat messages, incident management. Extend LogicMonitor alerting beyond email/SMS.
When to use:
Find integration IDs for escalation chains
Verify integrations are working
Audit external connections
Check authentication status
Review available integration options
Popular integrations:
Incident Management:
PagerDuty: Page on-call engineers for critical alerts
Opsgenie: Alternative incident management and on-call scheduling
VictorOps (Splunk On-Call): Alert routing and escalation
Ticketing:
ServiceNow: Auto-create incidents for alerts
Jira: Create tickets for infrastructure issues
Zendesk: Customer-facing service desk integration
Collaboration:
Slack: Post alerts to channels, interactive notifications
Microsoft Teams: Teams channel notifications
Mattermost: Self-hosted chat notifications
Workflow & Automation:
Webhooks: Custom integrations to any HTTP endpoint
API: Programmatic integration for custom workflows
Use cases:
"Post critical production alerts to #incidents Slack channel"
"Auto-create ServiceNow ticket for every critical alert"
"Page PagerDuty when datacenter resource/device go offline"
"Update Jira epic when deployment causes alerts"
Integration status:
Active: Integration configured and working
Inactive: Disabled or authentication failed
Test: Verify integration by triggering test notification
Workflow: Use this tool to find integrations, then use in escalation chains or as webhook recipients for alert delivery.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_integration" (configuration details), "test_integration" (verify working), "list_escalation_chains" (see usage).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only provide readOnlyHint: true, but the description adds significant behavioral details: a negative 'total' indicates incomplete results, pagination behavior (size/offset/autoPaginate), and integration status meanings (active/inactive/test). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose, including a lengthy 'Popular integrations' list and definitions of integrations that could be external documentation. It is front-loaded with purpose, but the extra content makes it longer than necessary for an AI agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a read-only list with no required parameters and clear annotations, the description is complete: it explains the return array structure, pagination edge cases, filtering, status meanings, and related tools. No output schema needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does not add meaningful semantics beyond the schema; the autoPaginate note is behavioral, not parameter-specific. Thus, no boost.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all third-party integrations in LogicMonitor, specifies what is returned (id, name, type, status, etc.), and distinguishes it from sibling tools like get_integration and test_integration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'When to use' section with five specific use cases and a 'Workflow' note, providing clear guidance on when to use this tool. It lacks explicit exclusions or when-not-to-use scenarios, but the context is comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_netscansARead-only
List all network discovery scans (NetScans) in LogicMonitor (LM) monitoring.
Returns: Array of netscans with: id, name, description, scan method (nmap/script/ICMP/SNMP), schedule, target networks (IP ranges/subnets), collector, last run time, resource/device discovered.
What are netscans: Automated network discovery that finds resource/device on your network and adds them to monitoring. Instead of manually adding resource/device one-by-one, netscan automatically discovers and onboards resource/device based on IP ranges or subnets.
When to use:
Audit existing discovery configurations
Check which networks are being scanned
Review netscan schedules
Troubleshoot why resource/device not auto-discovered
Find netscan IDs for modifications
How netscans work: Scheduled job → Scan network range (e.g., 192.168.1.0/24) → Find live resource/device → Check if already monitored → If new, add to LogicMonitor → Apply resource/device properties and datasources → Begin monitoring
NetScan methods:
nmap: Network mapper scan (comprehensive, detects OS, ports, services)
ICMP Ping: Simple ping sweep (fastest, basic reachability)
SNMP Walk: Query SNMP-enabled resource/device (network gear, servers with SNMP)
Script: Custom discovery logic (cloud APIs, CMDBs, etc.)
AWS/Azure/GCP: Cloud auto-discovery via APIs
Common use cases:
Data center discovery: Scan 10.0.0.0/16 network, auto-add all servers
Cloud auto-discovery: Scan AWS account, add all EC2 instances daily
Branch office monitoring: Scan remote office subnets, discover network resource/device
Dynamic infrastructure: Auto-discover containers, VMs as they spin up
Example NetScan configurations:
"Production Servers" - Scan 192.168.1.0/24 every 6 hours via nmap
"AWS EC2 Discovery" - Query AWS API every hour for new instances
"Network resources/Devices" - SNMP walk 10.0.0.0/8 daily for routers/switches
Workflow: Use this tool to review netscans, then "get_netscan" for detailed configuration including filters and resource/device properties.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_netscan" (configuration details), "create_netscan" (set up auto-discovery), "run_netscan" (trigger manual scan).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint, and the description adds important behavioral details: explains pagination behavior (negative total indicates incomplete results, use autoPaginate), describes the return structure, and explains what netscans are and how they work. This adds value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections like Returns, What are netscans, When to use, How netscans work, etc. It is front-loaded with the main purpose and every section adds value without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description provides a comprehensive overview of what is returned (list of netscans with fields), explains the domain, and gives proper usage guidance. It covers all necessary context for an AI agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The description does not add new information about the parameters themselves, though it provides context on using pagination (size, offset, autoPaginate) in the 'Important' note. This is helpful but largely behavioral, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists network discovery scans (NetScans) in LogicMonitor. It uses a specific verb (list) and resource (netscans), and differentiates from other list_* tools by focusing on netscans.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a dedicated 'When to use' section with specific use cases like auditing, checking networks, troubleshooting. It also provides a workflow (use this tool first, then get_netscan) and lists related tools (get_netscan, create_netscan, run_netscan) to guide when to use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_opsnotesARead-only
List all operational notes (OpsNotes) in LogicMonitor (LM) monitoring.
Returns: Array of OpsNotes with: id, note text, timestamp (epoch), who created it, tags, scope (applies to which resources/devices/groups), related SDTs.
What are OpsNotes: Timestamped operational annotations displayed on graphs and dashboards. Document changes, deployments, maintenance, incidents - anything that might affect metrics. Appear as vertical lines on metric graphs at the time they occurred.
When to use:
Correlate metric changes with operational events
Document deployments/changes
Create timeline of incidents and responses
Track maintenance activities
Generate operational reports
Use cases and examples:
Deployments:
"Deployed v2.5.0 to production" (explains CPU spike at deploy time)
"Database schema migration" (explains slow queries during migration)
Incidents:
"Customer reported slow load times - investigating"
"Found memory leak, restarting services"
"Incident resolved - bad cache configuration"
Maintenance:
"Scaled from 10 to 15 instances"
"Updated SSL certificates"
"Cleared old logs, freed 500GB disk"
Benefits:
Troubleshooting: "Latency increased at 2pm" → Check OpsNotes: "Deploy happened at 2pm"
Correlation: Understand cause of metric anomalies
Documentation: Automatic operational timeline
Communication: Share what happened with team
Common filter patterns:
By time: filter:"happenedOn>1730851200" (recent notes)
By tags: filter:"tags~deployment"
By device: filter:"monitorObjectName~prod-web"
Displayed on: Graphs, dashboards, resource/device pages - visible wherever metrics are shown.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_opsnote" (details), "create_opsnote" (add new), "create_device_sdt" (maintenance windows).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnlyHint annotation, the description details return format (Array of OpsNotes with specific fields), behavior with negative total indicating incomplete results, and pagination mechanics via autoPaginate. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is verbose but well-structured with clear headers (When to use, Use cases, Benefits, filter patterns, etc.). Front-loads purpose but includes extensive examples and benefits that could be condensed. Loses one point for length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, full schema coverage, and no output schema, the description is complete: explains return structure, common use cases, pagination nuances, and related tools. No gaps identified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides 100% coverage with full parameter descriptions. The description adds no new parameter semantics beyond what the schema already provides (e.g., filter patterns and pagination are already in schema). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all operational notes (OpsNotes) in LogicMonitor, with specific verb and resource. It distinguishes from siblings by mentioning related tools like get_opsnote, create_opsnote, and create_device_sdt.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' section listing scenarios, covers when not to use (alternative tools), and includes filter patterns and pagination advice. The description clearly guides the AI agent on context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipient_groupsARead-only
List all recipient groups in LogicMonitor (LM) monitoring.
Returns: Array of recipient groups with: id, name, description, member count, recipients list.
What are recipient groups: Collections of recipients treated as a single notification target. Simplify escalation chains by notifying entire teams at once. Example: "Database Team" group contains 5 team members - notify group = notify all 5.
When to use:
Find group IDs for escalation chains
Audit team notification lists
Review group membership before changes
Simplify notification management
Benefits over individual recipients:
Easier management: Update team once, applies to all escalation chains using that group
Team notifications: Notify entire team simultaneously
Organized: Group by function (DB team, Network team, On-call rotation)
Common recipient groups:
"On-Call Engineers" - Current on-call rotation members
"Database Team" - All database administrators
"Network Operations" - NOC team members
"Management" - For escalation to leadership
Use cases:
"Notify entire team for critical alerts" → Use group instead of 5 individual recipients
"Rotate on-call" → Update group members without touching escalation chains
"Add new team member" → Add to group, automatically included in alerts
Workflow: Use this tool to find groups, then use in escalation chains to notify multiple people at once.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_recipient_group" (details), "list_recipients" (individual members), "list_escalation_chains" (see usage).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint: true, so the description does not need to reiterate safety. It adds valuable behavioral context: negative total indicates incomplete results, pagination handling with autoPaginate, and explanation of recipient groups. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (returns, what are, when to use, benefits, etc.) and is front-loaded with core purpose. Every sentence adds meaning, and the length is appropriate for the context provided.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity and absence of output schema, the description is comprehensive. It explains return format, pagination, examples of groups, use cases, and workflow integration with related tools. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage for 5 parameters. The description adds context about pagination behavior (negative total) and autoPaginate, which goes beyond schema descriptions. Baseline 3 increased to 4 due to added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all recipient groups in LogicMonitor (LM) monitoring' and specifies the return value. It distinguishes from sibling tools like 'list_recipients' and 'list_escalation_chains' by mentioning related tools, and provides specific use cases and examples.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit 'When to use' bullet points (find group IDs, audit teams, etc.) and contrasts with individual recipients. It includes benefits and workflow. However, it lacks explicit 'when not to use' guidelines, though context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipientsARead-only
List all alert recipients (individual notification targets) in LogicMonitor (LM) monitoring.
Returns: Array of recipients with: id, type (email/SMS/webhook), contact information, method (email address, phone number, webhook URL), name, status.
What are recipients: Individual notification endpoints used in escalation chains. Can be: email addresses, SMS/phone numbers, webhook URLs, or integration endpoints (Slack, PagerDuty, etc.).
When to use:
Find recipient IDs for escalation chain configuration
Audit who can receive alerts
Verify contact information is current
Review notification endpoints before updating escalation chains
Recipient types explained:
Email: Email address (e.g., oncall@company.com, john.doe@company.com)
SMS: Mobile phone number (e.g., +1-555-123-4567)
Voice: Phone number for voice calls
Arbitrary: Custom webhooks for external integrations
Common use cases:
"Who can receive critical production alerts?" → List recipients used in escalation chains
"Update on-call phone number" → Find recipient by name, update contact info
"Add new team member to alerts" → Create recipient, add to escalation chain
"Remove former employee" → Find and delete recipient
Recipients vs Recipient Groups:
Recipients: Individual targets (one email, one phone)
Recipient Groups: Collections of recipients (notify entire team at once)
Workflow: Use this tool to find available recipients, then use in "create_escalation_chain" or "update_escalation_chain" to set up notifications.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_recipient" (details), "list_recipient_groups" (group management), "list_escalation_chains" (see who gets notified).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, confirming safe read operation. The description goes beyond by detailing the return format (array with specific fields), noting that a negative total indicates incomplete results, and explaining pagination behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections but is somewhat verbose. Some information (e.g., recipient types) is repeated in two places. It front-loads the core purpose and uses bullet points, but could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive: covers return format, use cases, workflows, related tools, and potential pitfalls (negative total). It explains pagination and filtering hints. Given no output schema, it fully compensates with detailed return array description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with detailed parameter descriptions. The tool description adds minimal new information about parameters (mainly the pagination note about negative total, which is more behavioral than parameter-specific). The schema already adequately explains each parameter, so the description provides marginal added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all alert recipients' and explains what recipients are, distinguishing them from associated concepts like recipient groups. It uses specific verb (list) and resource (alert recipients), and differentiates from sibling tools such as get_recipient, list_recipient_groups, and list_escalation_chains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly enumerates when to use the tool (find IDs, audit, verify, review) and provides a workflow section showing how it fits with create/update escalation chains. It contrasts recipients vs. recipient groups to guide tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_report_groupsARead-only
List all report groups (folders) in LogicMonitor (LM) monitoring.
Returns: Array of report groups with: id, name, parentId, full path, description, number of reports, number of subgroups.
What are report groups: Organizational folders for reports, like directories for files. Used to categorize reports by audience, frequency, purpose, or department.
When to use:
Browse report organization before creating reports
Find group IDs for report operations
Understand report hierarchy
Navigate to specific report folders
Common organization patterns:
By audience: "Executive Reports", "Operations Reports", "Customer Reports"
By frequency: "Daily Reports", "Weekly Reports", "Monthly Reports"
By department: "IT Reports", "Finance Reports", "Compliance Reports"
By type: "SLA Reports", "Capacity Reports", "Alert Summary Reports"
Use cases:
Organize reports for different stakeholders
Group compliance/audit reports separately
Separate internal vs customer-facing reports
Structure reports by delivery schedule
Workflow: Use this tool to browse hierarchy, then "list_reports" filtered by groupId to see reports in specific folder.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_report_group" (details), "list_reports" (reports in group), "create_report_group" (create folder).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, confirming safe read. The description adds behavioral details: return format (array of groups with fields), pagination behavior, autoPaginate option, and an important caveat about negative 'total' indicating incomplete results. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (returns, what are, when to use, common patterns, use cases, workflow, important). It front-loads the main action. Some sections (e.g., common patterns) are detailed but contribute to understanding; overall not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fully covers the tool's purpose, return format, pagination behavior, use cases, related tools, and a critical caveat. No output schema exists, but the description compensates by outlining the return fields. For a list tool with a well-defined schema, this is highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 5 parameters have schema descriptions (100% coverage). The description supplements with behavioral context beyond schema, such as the autoPaginate toggle effect and the negative total warning related to pagination. This adds value without repeating schema content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'List all report groups (folders) in LogicMonitor (LM) monitoring.' It clearly identifies the verb (list) and resource (report groups), and distinguishes from sibling tools like 'get_report_group' by explaining that this tool provides a list for browsing hierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a dedicated 'When to use' section with bullet points (e.g., browse organization, find group IDs) and a 'Related tools' section naming alternatives like 'list_reports' and 'get_report_group'. It also outlines a workflow: browse with this tool, then use 'list_reports' filtered by groupId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_reportsARead-only
List all reports (scheduled and on-demand) in LogicMonitor (LM) monitoring.
Returns: Array of reports with: id, name, type (alert/availability/capacity/performance), description, schedule, recipients, format (PDF/HTML/CSV), last run time.
What are reports: Scheduled or on-demand documents summarizing monitoring data. Generate PDFs, HTML, or CSV files with metrics, alerts, availability statistics, capacity planning data. Automatically email to stakeholders.
When to use:
Find existing reports before creating duplicates
Review report schedules
Check who receives reports
Audit reporting configuration
Report types:
Alert Reports: Summary of alerts over time period (count by severity, MTTR, top alerting resources/devices)
Availability Reports: Uptime statistics, SLA compliance, outage summaries
Capacity Planning: Disk growth trends, CPU/memory usage over time, forecasting
Performance Reports: Metric trends, top consumers, performance baselines
Custom Reports: User-defined queries and visualizations
Common use cases:
Executive summaries: Monthly availability report to leadership
SLA reporting: Prove 99.9% uptime to customers
Capacity planning: Forecast when to add storage/servers
Compliance: Document monitoring coverage and alert response
Billing: Usage reports for chargebacks
Report schedules:
Daily: 8am delivery for NOC shift handoff
Weekly: Monday morning management briefing
Monthly: End-of-month SLA reports
Quarterly: Capacity planning reviews
On-demand: Generate for specific incidents/audits
Workflow: Use this tool to find reports, then "get_report" for details, or "generate_report" to run on-demand.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_report" (details), "list_report_groups" (organization), "generate_report" (run now).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return format (array of reports with fields), pagination behavior (negative total, autoPaginate), and provides rich additional context like report types, use cases, and schedules. Annotations declare readOnlyHint=true, and description aligns with that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headers and bullet points, front-loading the main purpose. However, the extensive educational material on report types and use cases adds length. Could be trimmed without losing essential guidance, but still organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by detailing return fields and behavior. Covers pagination, filter, fields, and related tools. Comprehensive enough for an agent to use correctly in various scenarios.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by explaining pagination parameters in context (size, offset, autoPaginate) and filter syntax. It does not repeat parameter descriptions but provides useful usage tips beyond basics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all reports (scheduled and on-demand) in LogicMonitor (LM) monitoring.' It uses a specific verb (list) and resource (reports), and distinguishes from sibling tools like 'get_report' (details) and 'list_report_groups' (organization).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance on when to use (e.g., find existing reports before creating duplicates, review schedules) and when not (e.g., use 'get_report' for details). It also mentions related tools and workflows, including a 'Important' note about negative total indicating incomplete results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resource_datasourcesARead-only
List datasources applied to a specific resource/device in LogicMonitor (LM) monitoring.
Returns: Array of datasources actively monitoring this resource/device with: id (deviceDataSourceId), dataSourceName, dataSourceDisplayName, status, alert status, instance count, last poll time.
When to use:
See what's being monitored on a resource/device
Verify datasource is collecting data
Get deviceDataSourceId for metric retrieval
Troubleshoot missing data
Check datasource health
What you discover:
Which datasources are active (e.g., WinCPU, WinMemory, SNMP_Network_Interfaces)
How many instances per datasource (e.g., 3 disks, 4 network interfaces)
Collection status: Collecting data vs errors
Alert status: Any active alerts from this datasource
This is step 1 for getting metrics: Complete workflow to retrieve metric data: 1. Use this tool → get deviceDataSourceId for datasource you want (e.g., WinCPU) 2. Use "list_device_instances" → get instanceId for specific instance 3. Use "get_device_instance_data" → get actual metric values
Troubleshooting use cases:
"Why no CPU data?" → Check if WinCPU datasource is applied and collecting
"Find disk datasource" → Look for datasource with "disk" or "volume" in name
"Check datasource errors" → Review status field for error messages
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "list_device_instances" (next step), "get_device_instance_data" (get metrics), "update_device_datasource" (enable/disable).
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The resource/device ID | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, and description adds critical behavioral details: negative total indicates incomplete results, pagination behavior described, and return fields listed. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections (When to use, What you discover, Workflow, Troubleshooting, Important). Each section earns its place, but the description is slightly lengthy; could be more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description compensates by detailing return fields. Covers pagination, filtering, troubleshooting, and workflow. Context from siblings shows this tool is unique for listing datasources on a resource.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all params described). Description adds context beyond schema: autoPaginate behavior, filter syntax with examples, fields parameter usage. Does not cover every nuance but adds significant value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb and resource: 'List datasources applied to a specific resource/device'. It distinguishes from sibling tools like 'get_resource_datasource' (single) and other list tools (different entities).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a 'When to use' section with specific use cases and a workflow (step 1 for metrics). Mentions related tools but does not explicitly state when NOT to use this tool or alternatives beyond the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resource_group_propertiesARead-only
List all custom properties for a specific resource/device group in LogicMonitor (LM) monitoring. Properties set at group level are inherited by all resource/device in the group.
Returns: Array of properties with: name, value, type (custom vs system), and inheritance source.
When to use:
Review properties before bulk updates
Audit credentials/settings applied to resource/device group
Verify property inheritance from parent groups
Check which properties resource/device will inherit when added to group
Document group configuration
What are group properties: Key-value pairs set at group level that ALL resource/device in the group inherit. Common uses: credentials (SSH/SNMP), environment tags, owner/team info, monitoring settings.
Property inheritance:
Properties set on group apply to ALL resource/device in group
Child groups inherit from parent groups
Device-level properties override group properties
Used by datasource "appliesTo" logic and authentication
Common group properties:
Credentials: ssh.user, ssh.pass, snmp.community, wmi.user, wmi.pass
Tags: env (production/staging), location (datacenter), owner (team name)
Business metadata: cost.center, sla.tier, compliance.level
Monitoring config: polling.interval, alert.threshold.multiplier
Use cases:
Audit credentials: Check which credentials are configured for group
Before bulk update: See current values before changing
Troubleshoot authentication: Verify credentials applied to resource/device
Document configuration: Export group settings
Workflow: Use "list_resource_groups" to find groupId, then use this tool to see properties, then "update_device_group_property" to modify.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "update_device_group_property" (modify property), "get_resource_group" (group details), "list_device_properties" (device-level properties).
| Name | Required | Description | Default |
|---|---|---|---|
| groupId | Yes | The resource/device group ID | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the tool is read-only. The description adds details about return format (array of properties with fields) and an important behavioral note about negative 'total' values indicating incomplete results and pagination behavior. This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is relatively long but well-structured with sections (When to use, Property inheritance, Common properties, Use cases, Workflow, Important). It is front-loaded with the core purpose. Each section adds value, though some redundancy exists (e.g., use cases overlapping with when-to-use).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description explains the return format and lists possible fields (name, value, type, inheritance source). It covers domain context like property inheritance, common examples, and workflow. For a list tool, this is highly complete and leaves minimal ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add significant parameter-specific semantics beyond the schema. It provides context about property types and inheritance but doesn't elaborate on individual parameters. The schema descriptions are sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists custom properties for a resource/device group, and distinguishes from related tools like list_resource_properties (device-level) and update_device_group_property. The specific verb 'list' and resource 'group properties' are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a dedicated 'When to use' section with specific scenarios (bulk updates, audit, verify inheritance) and a workflow linking to sibling tools. It lacks explicit when-not-to-use but offers clear guidance on appropriate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resource_groupsARead-only
List all resource/device groups (folders) in LogicMonitor (LM) monitoring.
Returns: Array of groups with: id, name, parentId, full path, description, number of resources/devices, number of subgroups, custom properties.
What are groups: Organizational folders for resources/devices, like directories in a file system. Used to organize by location, environment, customer, or any logical structure.
When to use:
Browse resource/device organization
Find group IDs for resource/device creation/assignment
Understand resource/device hierarchy
Get group IDs for group-level operations (properties, SDT)
Common use cases:
Geographic: "US-West", "EU-Central", "APAC"
Environment: "Production", "Staging", "Development"
Customer: "Customer-A", "Customer-B" (for MSPs)
Function: "Web Servers", "Database Servers", "Network resources/Devices"
Common filter patterns:
By name: filter:"name~*Production*"
Root groups: filter:"parentId:1"
Non-empty: filter:"numOfDirectDevices>0"
Groups inherit properties: Custom properties set on group are inherited by all resource/device in that group (useful for credentials, location tags).
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_resource_group" (details), "create_resource_group" (create new), "list_resource_group_properties" (group properties).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds behavioral context beyond readOnlyHint annotation: explains negative total meaning, pagination, property inheritance, and filter syntax.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, front-loaded purpose, but lengthy; every sentence is useful but could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Completes the picture with output structure, use cases, filter patterns, property inheritance, and related tools, compensating for no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, description adds value with filter pattern examples and pagination guidance, but does not deeply elaborate on each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool lists all resource/device groups, defines what groups are, and distinguishes from siblings like get_resource_group and list_resource_group_properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use with bullet points, provides common use cases and filter patterns, and mentions related tools for alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resource_instancesARead-only
List instances of a datasource on a specific resource/device in LogicMonitor (LM) monitoring.
Returns: Array of instances with: id, name, displayName, description, status, alert status, last collection time.
What are instances: Individual components monitored by a datasource. Examples: individual disks (C:, D:, E:), network interfaces (eth0, eth1), database tables, processes.
When to use:
List all disks on a server before getting disk metrics
Find specific network interface for bandwidth data
Discover what instances are being monitored
Get instance IDs for metric retrieval
Example workflow: Device "web-server-01" has datasource "WinVolumeUsage-" → instances: C:, D:, E: (each disk is an instance) Device "router-01" has datasource "SNMP_Network_Interfaces" → instances: GigabitEthernet0/1, GigabitEthernet0/2 (each interface is an instance)
Complete workflow to get metrics:
Use "list_resource_datasources" to get deviceDataSourceId
Use this tool to list instances and get instanceId
Use "get_resource_instance_data" with instanceId to get actual metrics
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "list_resource_datasources" (first step), "get_resource_instance_data" (get metrics).
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The resource/device ID | |
| deviceDataSourceId | Yes | The resource/device datasource ID | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, and description aligns perfectly by describing a read operation. Adds behavioral context beyond annotations: return structure (array with fields), pagination behavior, and significance of negative total. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is well-structured with headers and bullet points, front-loading purpose. While somewhat lengthy, every section serves a purpose (examples, workflow, important notes). Minor verbosity is justified for a tool involved in multi-step processes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description compensates by listing returned fields. Explains concept of instances, provides examples, details pagination behavior, and outlines complete workflow. Covers all essential context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, so baseline is 3. Description adds value by explaining workflow context (deviceDataSourceId from list_resource_datasources), filter syntax examples, and autoPaginate behavior, which goes beyond schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists instances of a datasource on a specific resource/device, with a specific verb and resource. It distinguishes from sibling tools like list_resource_datasources by focusing on instances rather than datasources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides 'When to use' bullets and a 'Complete workflow to get metrics' that positions this tool in a sequence with siblings. Also warns about negative total indicating incomplete results and suggests pagination, giving clear guidance on when to use pagination.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resource_propertiesARead-only
List all custom properties (system and user-defined) for a specific resource/device in LogicMonitor (LM) monitoring.
Returns: Array of properties with: name, value, source (device-level vs inherited from group), type (system vs custom).
When to use:
Review resource/device configuration
Check credentials/authentication settings
See inherited vs device-specific properties
Troubleshoot datasource applies logic
Audit resource/device metadata
Property types:
System properties (auto-populated by LogicMonitor):
system.hostname: Device hostname
system.devicetype: Device category (server, network, cloud)
system.ips: IP addresses
system.categories: Auto-detected technologies (e.g., "AWS/EC2")
Custom properties (user-defined):
Credentials: ssh.user, snmp.community, wmi.user
Tags: env (prod/staging), owner (team name), location
Integration IDs: servicenow.ci_id, jira.project
Business metadata: cost.center, sla.tier, backup.policy
Property inheritance: Properties can be set at: Device level (highest priority) → Group level → Parent group (inherited).
Datasource appliesTo logic uses properties: Many datasources check properties to decide if they should monitor device. Example: AWS_EC2 datasource checks if resource/device has "aws.resourcetype=ec2" property.
Workflow: Use "list_resources" to find deviceId, then use this tool to see all properties including inherited ones.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "update_device_property" (modify), "get_resource" (see summary), "list_datasources" (see how properties affect monitoring).
| Name | Required | Description | Default |
|---|---|---|---|
| deviceId | Yes | The resource/device ID | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds significant behavioral context: return structure (name, value, source, type), inheritance hierarchy, the meaning of a negative 'total' value, and pagination details. This goes beyond the annotations to help the agent understand edge cases and output interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections (Returns, When to use, Property types, Workflow, Important note) and front-loaded with the core purpose. It is relatively long but every section adds value, though some examples (e.g., detailed property lists) could be trimmed without losing essential guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, no enums, no output schema, and 100% schema coverage, the description provides thorough context: usage scenarios, inheritance details, pagination pitfalls, property type examples, and a suggested workflow ('Use list_resources to find deviceId, then use this tool'). It covers what the agent needs to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good parameter descriptions. The description adds contextual usage notes (e.g., pagination behavior, filter examples) that aren't in the schema, but it doesn't significantly augment the semantics of individual parameters beyond what the schema already provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb ('List') and resource ('properties for a resource/device'), clearly distinguishing from sibling tools like list_resource_group_properties. It explicitly states the scope (system and user-defined) and the product (LogicMonitor).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'When to use' section listing five concrete scenarios (review configuration, check credentials, see inheritance, troubleshoot datasource, audit metadata) and mentions related tools (update_device_property, get_resource, list_datasources). It provides clear context for appropriate usage, though it could explicitly state when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_resourcesARead-only
List all monitored resources/devices in LogicMonitor (LM) monitoring.
Returns: Array of resource/device with: id, displayName, name (IP/hostname), hostStatus (dead/alive/unknown), preferredCollectorId, deviceType, custom properties, group memberships.
When to use:
Get inventory of all monitored resources/devices
Find specific resource/device by name/IP/property
Check resource/device health status
Get resource/device IDs for other operations
Two search modes:
Simple search: Use query parameter with free text (e.g., query:"production", query:"web-server") - automatically searches displayName, description, and name fields
Advanced filtering: Use filter parameter with LM filter syntax (e.g., filter:"hostStatus:alive,displayName~*web*") for precise control
Common filter patterns:
By name: filter:"displayName~*prod*" (wildcard search)
By status: filter:"hostStatus:alive" or filter:"hostStatus:dead"
By type: filter:"systemProperties.name:system.devicetype,value:server"
By custom property: filter:"customProperties.name:company.team,customProperties.value:teamA"
By collector: filter:"preferredCollectorId:123"
Multiple conditions: filter:"hostStatus:alive,displayName~*web*" (comma = AND)
Query vs Filter:
query: Simplified search across displayName, description, name (OR logic). Use for quick lookups: query:"prod-web-01"
filter: Precise LM filter syntax with any field. Use for complex conditions: filter:"hostStatus:alive,displayName~*prod*"
If both provided, query is converted to filter and combined with provided filter using AND logic
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Performance tips: Use autoPaginate:false for large environments (>1000 resources/devices) and paginate manually to avoid timeouts.
Related tools: "get_resource" (details), "generate_resource_link" (get UI link).
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Simple search query. Free text (e.g., "production", "web-server", "192.168.1.100") automatically searches across displayName, description, and name fields. Can also use filter syntax (e.g., "hostStatus:alive") which gets formatted automatically. | |
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and the description confirms read-only behavior. It additionally discloses potential incomplete results (negative total), autoPaginate default behavior, and performance considerations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, bullet points, and examples. Every section adds value, but some redundancy exists (e.g., query vs filter explained twice). Not perfectly concise but still clear and organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 parameters, no output schema), the description covers usage contexts, both search modes with examples, filter syntax, pagination handling, and performance guidance. It also links to related tools. Highly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage, but the description adds significant value by explaining search modes (query vs filter), common filter patterns, and pagination behavior. It goes beyond the schema's minimal descriptions, warranting a score above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all monitored resources/devices in LogicMonitor. It distinguishes from sibling tools like get_resource (details) and generate_resource_link (UI link), and uses specific verbs and resource naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (inventory, find by name/IP, check health, get IDs), compares query vs filter search modes, provides common filter patterns, and mentions pagination and performance tips. Also references related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_rolesARead-only
List all roles (permission sets) in LogicMonitor (LM) monitoring.
Returns: Array of roles with: id, name, description, custom flag, associated users count, permissions (view/manage/delete for resources/alerts/reports/settings).
What are roles: Permission templates assigned to users. Control who can view/modify/delete resources, alerts, dashboards, settings. Essential for RBAC (role-based access control).
When to use:
Discover available roles before creating users
Audit permission structure
Find role IDs for user assignment
Compare custom vs built-in roles
Compliance documentation
Built-in roles (examples):
administrator: Full access to everything
readonly: View-only access to monitoring data
manager: Manage resources/devices/alerts but not settings
Custom roles: Organizations create custom roles for specific needs (e.g., "database-team-role", "view-prod-only").
Common use cases:
"What roles exist?" → List all to see options
"Who can delete resources/devices?" → Check which roles have delete permissions
"Create read-only user" → Find "readonly" role ID for user creation
Workflow: Use this tool to discover roles, then "get_role" for detailed permissions, then use in "create_user" or "update_user".
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_role" (detailed permissions), "list_users" (see user assignments), "create_user" (assign roles to new users).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds behavior beyond: notes that a negative 'total' indicates incomplete results, explains pagination and autoPaginate, and mentions result shape. This supplements the annotation with practical behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with sections, but somewhat lengthy. Contains explanatory text like 'What are roles' which may be extraneous. Could be more concise without losing key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and read-only annotation, description provides sufficient context: return shape, pagination, filter syntax, common use cases, and workflow. Lacks error handling or rate limits, but overall complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. Description adds extra meaning: explains filter syntax with examples, autoPaginate behavior, and fields parameter usage. Enhances understanding beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all roles (permission sets) in LogicMonitor (LM) monitoring.' It specifies verb (list) and resource (roles), and differentiates from siblings by referencing related tools like get_role and create_user.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly lists when to use: discover roles before creating users, audit permissions, find role IDs, compare roles, compliance. Provides workflow: use this tool, then get_role, then create_user. Offers clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sdtsARead-only
List all Scheduled Down Times (SDTs) in LogicMonitor (LM) monitoring.
Returns: Array of SDTs with: id, type (DeviceSDT/DeviceGroupSDT/etc), device/group name, start/end times, duration, comment, creator, status (active/scheduled/expired).
What are SDTs: Maintenance windows that suppress alerting to prevent false alarms during planned work. No alerts are generated during SDT periods.
When to use:
View active maintenance windows
Check upcoming scheduled maintenance
Verify SDT was created correctly
Find SDTs to extend or cancel
Audit who scheduled downtime
Common filter patterns:
Active now: filter:"isEffective:true"
Future SDTs: filter:"startDateTime>{epoch}"
By device: filter:"deviceDisplayName~*prod-web*"
One-time vs recurring: filter:"type:oneTime" or filter:"type:monthly"
By creator: filter:"admin:john.doe"
SDT types explained:
DeviceSDT: All monitoring on specific resource/device
DeviceGroupSDT: All resource/device in group
DeviceDataSourceSDT: Specific datasource on resource/device
DeviceDataSourceInstanceSDT: Specific instance only (e.g., C: drive)
Best practice: Always add meaningful comment explaining maintenance reason for audit trail.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "create_resource_sdt" (schedule maintenance), "delete_sdt" (cancel maintenance), "get_sdt" (details).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true. Description adds value by explaining that SDTs suppress alerting during maintenance, describes return structure, and warns about negative total values indicating incomplete results. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While longer, the description is well-structured with clear sections (returns, what are SDTs, when to use, filter patterns, types, best practice, important note, related tools). Front-loaded with main purpose. Slightly verbose but every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, description fully documents return structure. Covers edge cases (negative total), best practices (meaningful comments), and common use cases. For a list tool with 5 parameters and no output schema, this is complete and self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 5 parameters. Description adds filter pattern examples (e.g., 'isEffective:true') and clarifies autoPaginate behavior beyond schema, providing meaningful additional context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all Scheduled Down Times (SDTs) in LogicMonitor (LM) monitoring.' It uses a specific verb+resource combination and explains what SDTs are, distinguishing it from sibling tool 'get_sdt' which retrieves a single SDT.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' section with five specific scenarios (view active, check upcoming, verify creation, etc.), common filter patterns, SDT types explained, and related tools. This gives comprehensive guidance on when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_groupsARead-only
List all service groups (folders) in LogicMonitor (LM) monitoring.
Returns: Array of service groups with: id, name, parentId, full path, description, number of services, number of subgroups.
What are service groups: Organizational folders for business services, similar to resource/device groups for resources/devices. Used to categorize services by business unit, region, customer, or application stack.
When to use:
Browse service organization before creating services
Find group IDs for service operations
Understand service hierarchy
Navigate to specific service folders
Common organization patterns:
By business unit: "E-Commerce", "Marketing Platform", "Internal IT"
By customer: "Customer A Services", "Customer B Services" (MSP environments)
By region: "APAC Services", "EMEA Services", "Americas Services"
By tier: "Tier 1 Critical", "Tier 2 Standard", "Tier 3 Best Effort"
Use cases:
Organize services for different stakeholders
Group services by SLA tiers
Separate internal vs customer-facing services
Structure multi-tenant service monitoring
Workflow: Use this tool to browse hierarchy, then "list_services" filtered by groupId to see services in specific folder.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_service_group" (details), "list_services" (services in group), "create_service_group" (create folder).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, and the description adds value by detailing return fields, the meaning of negative total, and pagination behavior. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections, but slightly lengthy. However, each section adds value, and the key purpose is front-loaded. Minor deduction for verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters and no output schema, the description covers return fields, use cases, organization patterns, workflow, and pagination details. It is comprehensive and leaves no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already describes all parameters. The description adds context like the meaning of negative total and the effect of autoPaginate, which is valuable beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all service groups (folders) in LogicMonitor (LM) monitoring.' It specifies the verb (list) and resource (service groups), and distinguishes from sibling tools like get_service_group (details) and list_services (services in group).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'When to use' section explicitly lists scenarios: browse before creating, find IDs, understand hierarchy, navigate. It also provides workflow guidance and mentions related tools, helping the agent choose this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesARead-only
List all business services in LogicMonitor (LM) monitoring.
Returns: Array of services with: id, name, description, health status, dependencies, monitored resources, service level objectives (SLOs), availability percentage.
What are services: Business-level monitoring constructs that aggregate multiple resources/devices/resources into a single health status. Represent customer-facing services, applications, or business processes. Example: "E-Commerce Platform" service includes web servers, databases, load balancers, and APIs - one health indicator for entire platform.
When to use:
Monitor business service health vs individual resource/device health
Track SLA compliance for customer-facing services
Understand service dependencies
Create business-level dashboards
Report on application availability
Service health calculation: Service health = Aggregate of all dependent resources. If critical resource fails, service status = down. Allows stakeholders to see "Is the application working?" instead of "Is server X working?"
Use cases and examples:
Customer-facing services:
"E-Commerce Website" - Web servers + database + payment gateway + CDN
"Mobile App Backend" - API servers + auth service + push notifications
"SaaS Platform" - All infrastructure for multi-tenant application
Internal services:
"Employee VPN" - VPN servers + RADIUS auth + firewall
"Corporate Email" - Mail servers + spam filter + archiving
"CI/CD Pipeline" - Jenkins + artifact storage + deployment agents
Benefits:
Business perspective: Non-technical stakeholders understand "Shopping Cart is 99.5% available"
SLA tracking: Measure uptime for customer SLAs
Root cause: When service is down, see which specific resource failed
Dependencies: Visualize what resources comprise a service
Common filter patterns:
By status: filter:"status:normal" or filter:"status:dead"
By name: filter:"name~production"
Workflow: Use this tool to find services, then "get_service" for detailed dependency tree and health status.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_service" (details and dependencies), "list_service_groups" (organization), "create_service" (define new business service).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context beyond the readOnlyHint annotation, including details about return fields (with examples), the meaning of negative 'total' for pagination, and health calculation. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with sections and front-loaded key information, but it is lengthy. While rich, it could be more concise without losing value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Even without an output schema, the description thoroughly explains the return format, concepts, use cases, and workflow, making it complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value with filter pattern examples, explanation of autoPaginate behavior, and the negative total note, justifying a higher score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all business services in LogicMonitor, explains what services are, and distinguishes from sibling tools like 'get_service' and 'list_service_groups'. It uses specific verbs and context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit 'When to use' bullet points, common filter patterns, a workflow, and lists related tools, offering clear guidance on when to use this tool vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_usersARead-only
List all users in LogicMonitor (LM) monitoring.
Returns: Array of users with: id, username, email, roles, status (active/suspended), last login time, created date, API token count.
When to use:
Audit user access
Find user IDs for API token management
Check who has admin access
Identify inactive users
Compliance reporting
Common filter patterns:
Active users: filter:"status:active"
By email: filter:"email~*@company.com"
By role: filter:"roles:*administrator*"
Recent logins: filter:"lastLoginOn>{epoch}"
Never logged in: filter:"lastLoginOn:0"
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_user" (details), "list_roles" (available roles), "list_api_tokens" (user's API tokens).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true. The description adds value by disclosing behavior: it reveals the return structure (array of users with specific fields) and an important warning about negative 'total' values indicating incomplete results and requiring pagination. This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Returns, When to use, Common filter patterns, Important, Related tools) and is front-loaded with the core purpose. It provides substantial information without being overly verbose for a tool of this complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 5 optional parameters, no output schema, and read-only annotation, the description covers return values, usage scenarios, pagination quirks, and filter examples adequately. It could mention error handling or rate limits but is sufficiently complete for typical use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-defined. The description adds common filter pattern examples and emphasizes autoPaginate behavior, which provides practical meaning beyond the schema's formal definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all users in LogicMonitor (LM) monitoring' with a specific verb and resource. It distinguishes from sibling tools like 'get_user' and 'list_roles' by explicitly mentioning related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'When to use' section listing concrete use cases (audit user access, find user IDs, etc.) and provides common filter patterns for real-world queries, giving clear context for when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_website_checkpointsARead-only
List available checkpoint locations for website monitoring in LogicMonitor (LM) monitoring.
Returns: Array of checkpoint locations with: id, name, geographic region, status, type (internal/external).
What are checkpoints: Global testing locations from which LogicMonitor runs synthetic website checks. Think "test my website from New York, London, Tokyo" - checkpoints are those global vantage points.
When to use:
Check available checkpoint locations before creating website monitors
Verify geographic coverage for multi-region testing
Select appropriate locations for SLA monitoring
Plan website monitoring strategy
Checkpoint types:
External (Cloud): LogicMonitor-managed locations around the world (US-East, EU-West, Asia-Pacific, etc.)
Internal (Collector-based): Tests run from your own collectors (test internal apps, VPNs, private networks)
Common checkpoint locations:
North America: US-East, US-West, US-Central, Canada
Europe: EU-West (Ireland), EU-Central (Frankfurt), UK
Asia-Pacific: Singapore, Sydney, Tokyo
South America: SĂŁo Paulo
Use cases:
Global SLA monitoring: Test from regions where customers are located
CDN verification: Ensure content delivery works worldwide
Regional compliance: Monitor from specific geographic locations
Multi-region performance: Compare response times across locations
Failover testing: Verify DR sites accessible from all regions
Best practices:
Select checkpoints near your user base
Use multiple checkpoints for critical services (avoid false positives from single location issues)
Mix internal and external checkpoints for comprehensive coverage
Consider timezone differences for result interpretation
Workflow: Use this tool to discover available locations, then use those checkpoint IDs when creating website monitors via "create_website".
Related tools: "list_websites" (existing monitors), "create_website" (configure checkpoints), "get_website" (verify checkpoint configuration).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds context about checkpoint types (internal/external), return fields, and use cases without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with headings but verbose, containing extensive background on checkpoints, use cases, and best practices that could be condensed for a simple list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 optional param, no output schema), the description fully covers purpose, usage, workflow, and return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add additional meaning beyond the schema's parameter description for 'fields'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List available checkpoint locations for website monitoring' with specific verb and resource. Distinguishes from siblings like 'list_websites' via the 'Related tools' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit 'When to use:' section with four bullet points and a 'Workflow' subsection that describes when to use before creating monitors. Mentions alternative tools like 'list_websites' and 'create_website', but does not explicitly state when NOT to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_website_groupsARead-only
List all website groups (folders) in LogicMonitor (LM) monitoring.
Returns: Array of website groups with: id, name, parentId, full path, description, number of websites, number of subgroups.
What are website groups: Organizational folders for website monitors (synthetic checks), similar to resource/device groups. Used to categorize monitored URLs/services by application, environment, or customer.
When to use:
Browse website organization before creating monitors
Find group IDs for website operations
Understand monitoring hierarchy
Navigate to specific website folders
Common organization patterns:
By application: "E-Commerce Site", "API Endpoints", "Marketing Pages"
By environment: "Production URLs", "Staging URLs", "DR Sites"
By location: "US Sites", "EU Sites", "APAC Sites"
By customer: "Customer A Sites", "Customer B Sites" (MSP)
By type: "Public Websites", "Internal Apps", "Third-Party APIs"
Use cases:
Organize monitors by application or service
Group customer-facing vs internal endpoints
Separate production vs non-production monitoring
Structure multi-region website monitoring
Workflow: Use this tool to browse hierarchy, then "list_websites" filtered by groupId to see monitors in specific folder.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_website_group" (details), "list_websites" (websites in group), "create_website_group" (create folder).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds valuable context: the return structure (array with id, name, parentId, etc.), handling of negative 'total' for incomplete results, and pagination behavior. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Returns, What are website groups, When to use, etc.) and front-loaded purpose. Some sections are explanatory (e.g., 'What are website groups') which is helpful for context but could be trimmed for an AI agent. Overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is comprehensive: it explains the concept, usage scenarios, organizational patterns, workflow, pagination pitfalls, and related tools. No output schema exists, so the description compensates by detailing the return array fields. Fully satisfies information needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all 5 parameters have descriptions). The description adds minimal extra meaning for parameters, only mentioning pagination and filter syntax. Baseline 3 is appropriate as the schema already fully documents parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'List all website groups (folders) in LogicMonitor (LM) monitoring.' It clearly specifies the verb (list), resource (website groups), and scope (all). It distinguishes from siblings like get_website_group and list_websites by explaining its role in browsing hierarchy.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use scenarios are provided, e.g., 'Browse website organization before creating monitors', 'Find group IDs for website operations'. It also includes a workflow: 'Use this tool to browse hierarchy, then list_websites filtered by groupId to see monitors in specific folder.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_websitesARead-only
List all website monitors (synthetic checks) in LogicMonitor (LM) monitoring.
Returns: Array of website monitors with: id, name, type (webcheck/pingcheck), domain/URL, status, checkpoint locations, response time, availability percentage.
What are website monitors: Synthetic checks that test URL/service availability from multiple global locations. Like "ping from the internet" to verify your services are accessible.
When to use:
List all monitored URLs/services
Check website availability status
Find website IDs for other operations
Audit monitored endpoints
Monitor types:
webcheck: Full HTTP/HTTPS check (status code, response time, content validation, SSL cert)
pingcheck: Simple ICMP ping test (faster, simpler)
Common filter patterns:
By domain: filter:"domain~*example.com*"
By type: filter:"type:webcheck" or filter:"type:pingcheck"
By status: filter:"overallAlertStatus:critical" (find down sites)
By name: filter:"name~*production*"
Use cases: Monitor public websites, API endpoints, login pages, load balancer health checks, SaaS service availability.
Important: A negative "total" value in the response indicates incomplete results. Use pagination (size/offset parameters) or set autoPaginate: true to retrieve all items.
Related tools: "get_website" (details), "create_website" (add new), "generate_website_link" (get URL).
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Number of results per page (default: 50, max: 1000). | |
| offset | No | Starting offset for pagination (default: 0). Use this to skip a specific number of results. | |
| autoPaginate | No | Automatically fetch all pages (default: false). When true, fetches all results across multiple pages. When false, returns only the requested page. Use false for large result sets to avoid long response times. | |
| filter | No | Filter expression using LogicMonitor query syntax. Examples: name:*prod*, displayName~*server*, id>100, hostStatus:normal. Available operators: : (equals), ~ (includes), !: (not equals), !~ (not includes), >: (greater than or equals), <: (less than or equals), > (greater than), < (less than). Multiple conditions: Use comma (,) for AND, use || for OR. Do NOT use &&. | |
| fields | No | Comma-separated list of fields to include in response. Examples: "id,displayName,hostStatus" or use "*" for all fields. Omit this parameter to receive a curated set of commonly used fields. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint: true, but the description adds significant behavioral context: it explains the return structure (array with id, name, type, domain, status, etc.), notes that a negative total indicates incomplete results, and details pagination behavior with autoPaginate. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Returns, What are website monitors, When to use, Monitor types, Common filter patterns, Use cases, Important, Related tools). It is front-loaded with the main purpose. While somewhat lengthy, each section adds distinct value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 5 parameters (100% schema coverage), the description thoroughly explains the return format, filter patterns, pagination, monitor types, and edge cases (negative total). It leaves no obvious gaps for an agent to understand the tool's usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond schema by providing common filter patterns with examples (e.g., filter:'domain\~\*example.com\*') and explaining pagination parameters in more context, making them more actionable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List all website monitors (synthetic checks) in LogicMonitor (LM) monitoring.' It specifies the action (list) and resource (website monitors), and distinguishes from siblings like get_website, create_website, and generate_website_link via the 'Related tools' section.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a 'When to use' section with specific use cases (list all monitored URLs, check availability, etc.) and provides common filter patterns. Related tools are listed, but explicit 'when not to use' guidance is absent, though implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
70 tool updates
v0.1.0- First observed
generate_alert_link - First observed
generate_dashboard_link - First observed
generate_resource_link - First observed
generate_website_link - First observed
get_access_group - First observed
get_alert - First observed
get_alert_rule - First observed
get_audit_log - First observed
get_collector - First observed
get_collector_group - First observed
get_configsource - First observed
get_dashboard - First observed
get_dashboard_group - First observed
get_datasource - First observed
get_escalation_chain - First observed
get_eventsource - First observed
get_integration - First observed
get_netscan - First observed
get_opsnote - First observed
get_recipient - First observed
get_recipient_group - First observed
get_report - First observed
get_report_group - First observed
get_resource - First observed
get_resource_datasource - First observed
get_resource_group - First observed
get_resource_instance_data - First observed
get_role - First observed
get_sdt - First observed
get_service - First observed
get_service_group - First observed
get_topology - First observed
get_user - First observed
get_website - First observed
get_website_group - First observed
list_access_groups - First observed
list_alert_rules - First observed
list_alerts - First observed
list_api_tokens - First observed
list_audit_logs - First observed
list_collector_groups - First observed
list_collector_versions - First observed
list_collectors - First observed
list_configsources - First observed
list_dashboard_groups - First observed
list_dashboards - First observed
list_datasources - First observed
list_escalation_chains - First observed
list_eventsources - First observed
list_integrations - First observed
list_netscans - First observed
list_opsnotes - First observed
list_recipient_groups - First observed
list_recipients - First observed
list_report_groups - First observed
list_reports - First observed
list_resource_datasources - First observed
list_resource_group_properties - First observed
list_resource_groups - First observed
list_resource_instances - First observed
list_resource_properties - First observed
list_resources - First observed
list_roles - First observed
list_sdts - First observed
list_service_groups - First observed
list_services - First observed
list_users - First observed
list_website_checkpoints - First observed
list_website_groups - First observed
list_websites
TDQS
Each tool targets a distinct entity or action (e.g., list_alerts vs get_alert vs generate_alert_link). Overlap is minimal and descriptions clearly distinguish them.
All tools follow the verb_noun pattern consistently (e.g., list_resources, get_resource, generate_resource_link). The naming is predictable and easy to navigate.
70 tools is excessive for the scope. While the server covers many features, it would benefit from consolidation (e.g., merging list/get pairs or using parameters). This volume may overwhelm an agent.
The tool surface covers most CRUD operations and key workflows for alerts, resources, websites, dashboards, etc. Minor gaps exist (e.g., no update_resource or update_dashboard), but core paths are complete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- mttrlyOAuthcom.mttrly
AI-powered incident management and server monitoring via MCP.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for AI access to SmartBear tools, including BugSnag, Reflect, Swagger, PactFlow, QTM4J.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Related MCP Servers
- FlicenseAqualityCmaintenanceAn MCP server that connects AI assistants to the NinjaOne remote monitoring and management platform via the REST API v2. It provides tools for device inventory, organization management, alert handling, maintenance scheduling, and automated job execution.221-
- AlicenseAqualityAmaintenanceMCP server for Domotz network monitoring and management. Enables AI assistants to query network devices, alerts, and topology via the Domotz API.225Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server for ServiceNow that provides over 60 pre-built tools for ITSM, ITOM, and App Dev operations, enabling AI agents to manage incidents, changes, users, service catalog, and projects through a unified interface.6MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for network operations that lets AI assistants interact with Cisco/Juniper network devices through safe, well-defined tools like compliance audits and configuration backups.MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/monitoringartist/logicmonitor-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server