Skip to main content
Glama
alexgoller

Illumio MCP Server

by alexgoller

find-unknown-endpoints

Identify unknown IP endpoints in Illumio traffic that are not inventoried workloads, then profile their connections, peers, ports, and behavior.

Instructions

Which IP addresses show up in traffic that the PCE does not know as a workload at all, and what do they do. Unknown = Explorer attached no workload to that side of the flow AND the IP is not an interface address of any inventoried workload (managed or unmanaged). Not the same as find-unmanaged-traffic, whose test is 'no app label'. One Explorer pull, one workload pull, one IP-list pull. Per endpoint: fqdn, address_class (private | public | link_local | multicast | broadcast | loopback), ip_lists (named lists containing it; the 0.0.0.0/0 default list is dropped), likely_provider for public addresses, neighbourhood (the /24 or /64 it shares with N managed workloads), as_source / as_destination blocks (connections, flows, peer workloads, peer apps as 'app (env)', top-10 ports with an admin flag, policy mix, first/last seen), peers_enforced, and profile shapes: scanner, fan_in_server, admin_reach, high_volume, single_peer, with the numbers each test used. Noise classes are counted but listed only with include_noise. With ip set, profiles that one address: full peer x port table and a timeline (1h buckets up to two days, else 1d) with the shared spike rule. Read-only.

Input Schema

NameRequiredDescriptionDefault
ipNoProfile this one address instead of listing: Explorer is filtered to it server-side, the peer x port table is complete, and a timeline is added. An address that is in the inventory is reported as known without a query.
top_nNoEndpoints to return, ranked by connections (default 50). totals.unknown_endpoints says how many exist.
end_dateNoYYYY-MM-DD or ISO-8601 timestamp; defaults to today
directionNoRelative to workloads: inbound = unknown sources reaching workloads (as_source), outbound = workloads reaching unknown destinations (as_destination). Default both.
query_nameNo
start_dateNoYYYY-MM-DD or ISO-8601 timestamp; defaults to lookback_days ago
max_resultsNoExplorer cap per query (default 200000); totals.flows_truncated says when it was hit
include_noiseNoAlso list link-local, multicast, broadcast and loopback endpoints under `noise` (default false; they are always counted)
lookback_daysNoUsed when start_date is omitted (default 7)
max_workloadsNoInventory cap (default 10000); totals.inventory_truncated says when it was hit
min_connectionsNoDrop endpoints with fewer connections in the chosen direction (default 1)
include_servicesNoRestrict the pull to these services, as in the other traffic tools
policy_decisionsNoDefault ['allowed', 'potentially_blocked', 'blocked']

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.13.0

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does: it declares 'Read-only', discloses the three underlying data pulls, enumerates the per-endpoint payload blocks, and explains derived classifications (profile shapes with the numbers each test used). It also discloses non-obvious behaviors: noise classes are counted but suppressed from output, and the timeline bucket size changes with range under a shared spike rule.

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

Conciseness4/5

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

Front-loaded with the operative question and then the disambiguation, so the agent gets the decision-relevant content first. The middle is dense and run-on (a long comma-chained list of endpoint fields), but each clause carries real information rather than filler.

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

Completeness5/5

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

For a 13-parameter tool with no output schema, the description supplies the return shape in detail (per-direction blocks, peers, ports, policy mix, timestamps) plus truncation/ranking semantics that live only in the schema. Nothing needed to call it correctly or interpret the result is missing.

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

Parameters3/5

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

Schema description coverage is 92%, so the schema already documents nearly every parameter. The description reinforces the `ip` mode and the include_noise gating, but largely restates what the schema says rather than adding new semantics; the field-level detail it provides (neighbourhood, admin flag) describes return values, not inputs.

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

Purpose5/5

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

Opens with the exact question the tool answers ('Which IP addresses show up in traffic that the PCE does not know as a workload at all') and then formalizes the definition of 'unknown' precisely (no workload attached to that side AND not an interface address of any inventoried workload). It explicitly names and rules out the nearest sibling, find-unmanaged-traffic, so an agent can route without opening either schema.

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 a clear discriminator against find-unmanaged-traffic ('no app label' vs. no workload plus no interface match) and states the two operating modes (list vs. profile-a-single-address with `ip`). It also states when noise endpoints appear (only with include_noise). Missing a short 'reach for this when…' framing for the broader tool family (get-traffic-flows, discover-process-egress), but the alternatives are largely addressed.

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