Skip to main content
Glama
endpoint-aiops-mcp

endpoint-aiops-mcp

drift_report

Read-only

Detect endpoints that drifted from a per-field baseline or fleet majority, then return drifted and compliant counts by field for patch, agent, OS, and profile checks.

Instructions

[READ] Report endpoints drifted from a per-field baseline (patch/agent/OS/profile).

Answers "which endpoints have drifted from the fleet?" With no baseline it derives one by fleet majority (the most common value per field is treated as intended), so it works before any gold image is declared. Pass 'endpoints' for pure analysis, or a target to pull live inventory.

Args: baseline: Field→intended-value map; omit to derive the fleet majority. fields: Inventory fields to check (default agentVersion, patchLevel, osBuild, profileId). endpoints: Injected inventory rows; skips live collection. target: Endpoint-management target name from config; omit for the default. limit: Max drifted endpoints to return (default 200).

Returns dict: {totalEndpoints, baselineSource, baseline, fieldsChecked, driftedCount, compliantCount, driftByField, driftedEndpoints:{items[], returned, limit, truncated}}. driftedCount is the full count; when driftedEndpoints.truncated is true, re-run with a higher limit.

Example: drift_report(endpoints=[{"hostname":"tc01","patchLevel":"2026-06"}, {"hostname":"tc02","patchLevel":"2026-05"}]).

Input Schema

NameRequiredDescriptionDefault
limitNo
fieldsNo
targetNo
baselineNo
endpointsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.10.3
    • addedInput schema / properties / limit
      Added value: +{
      +  "default": 200,
      +  "title": "Limit",
      +  "type": "integer"
      +}
  2. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint=true, but the description goes well beyond that: it explains the fleet-majority baseline derivation algorithm, that it functions without a declared gold image, that injected endpoints skip live collection, and that truncated results require re-running with a higher limit. This is exactly the behavioral context the annotation cannot supply.

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

Conciseness5/5

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

Front-loads the [READ] tag and the one-line purpose, then moves to usage, args, return shape, and a concrete example. Given the absence of schema descriptions and an output schema, every block earns its place with no filler.

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

Completeness5/5

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

With no output schema and 0% parameter coverage, the description compensates fully by documenting the return dict fields (baselineSource, driftedCount vs driftedEndpoints.items, truncation) and the truncation recovery path, so an agent has everything needed to invoke and interpret the call.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the load, and it does: all five parameters (baseline, fields, endpoints, target, limit) are explained with their semantics and defaults, including what omitting baseline triggers and that endpoints is an injection bypass of live collection.

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

Purpose4/5

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

States a specific verb and resource — reporting endpoints whose fields have drifted from a baseline — and narrows the concept with '(patch/agent/OS/profile)'. An agent can distinguish this drift analysis from patch_status or patch_compliance, though no sibling is named explicitly, so it falls short of full sibling differentiation.

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

Usage Guidelines4/5

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

Gives clear operating context: it answers 'which endpoints have drifted from the fleet?' and explains that passing 'endpoints' yields pure analysis while a 'target' pulls live inventory, and that it works before any gold image exists. It does not, however, state when to prefer this over patch_compliance or endpoint_health_score.

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