Skip to main content
Glama
alexgoller

Illumio MCP Server

by alexgoller

create-deny-rule

Create a deny rule in an existing ruleset to block specified traffic between providers and consumers. Use override deny for emergency isolation or compliance blocks that take priority over allow rules.

Instructions

Create a deny rule in an existing ruleset. Deny rules block specific traffic (processed after allow rules). Override deny rules (override_deny=true) are the HIGHEST priority — they block traffic even when allow rules exist, meaning 'this must not happen under any circumstances.' Use override deny for emergency isolation, hard compliance blocks, or active attack response — NOT for normal segmentation or ringfencing. Rule processing order: 1) Essential rules, 2) Override Deny (blocks above all), 3) Allow rules, 4) Deny rules, 5) Default action. WRITE OPERATION: changes PCE state. In clients that gate tool calls (Claude Desktop, Claude Code), this pauses for the user to approve it -- the call has not failed and must not be retried while waiting.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
consumersYesArray of consumer (source) references: 'ams' for all workloads, label hrefs, key=value pairs, or 'iplist:<name>'
providersYesArray of provider (destination) references: 'ams' for all workloads, label hrefs, key=value pairs, or 'iplist:<name>'
ruleset_hrefNoHref of the ruleset to add the deny rule to (e.g., /orgs/1/sec_policy/draft/rule_sets/123)
ruleset_nameNoName of the ruleset to add the deny rule to (alternative to ruleset_href)
override_denyNoIf true, creates an override deny rule — the highest priority deny that blocks traffic even if allow rules exist. Means 'this must not happen under any circumstances.' Use for emergency isolation, hard compliance blocks (e.g., PCI zones), or active attack response. If false (default), creates a regular deny rule (processed after allow rules).
ingress_servicesYesServices this rule covers. Each entry is EITHER an inline port ({'port': 443, 'proto': 'tcp'}), OR a service object by href ({'href': '/orgs/1/sec_policy/draft/services/42'}), OR a service by exact name ({'service': 'All Services'}). Mixing those keys in one entry is an error. For 'any service' use {'service': 'All Services'} — an empty list is rejected by the PCE and {'port': 0} does not mean all ports. Deny rules cannot use services carrying Windows process qualifiers; write those as an allow above a broad deny.
unscoped_consumersNoWhether to allow unscoped consumers (extra-scope rule)

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.8.0

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral disclosure burden and meets it: it flags 'WRITE OPERATION: changes PCE state,' discloses that gated clients pause for user approval, and warns that 'the call has not failed and must not be retried while waiting.' It also discloses the priority-ordering behavior (override deny blocks above all). This is exactly the operational context an agent needs to avoid retrying a write that is merely awaiting approval.

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

Conciseness5/5

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

The description is front-loaded with the core action, then structured with a numbered list for processing order and an all-caps 'WRITE OPERATION' flag for the critical warning. Every sentence carries distinct information — purpose, priority semantics, use cases, exclusion, order, and retry behavior — with no filler or repetition of schema content.

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

Completeness4/5

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

For a 7-parameter write operation with no annotations and no output schema, the description covers the invocation semantics, use-case selection, priority behavior, and the approval-gating pause comprehensively. The remaining gaps are minor: it doesn't state what a successful response returns or how conflicts with existing rules are handled. These are non-blocking for correct invocation.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds meaning on top by explaining the full rule processing order (1-5), which gives the override_deny parameter its operational weight, and by reinforcing the 'must not happen under any circumstances' semantics. It does not add much for consumers/providers/ruleset addressing, but the schema already documents those thoroughly.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Create a deny rule in an existing ruleset,' and immediately defines what a deny rule does (blocks specific traffic, processed after allow rules). It clearly distinguishes override deny rules from regular deny rules, and the tool is unambiguously differentiated from siblings like delete-deny-rule, update-deny-rule, create-ruleset, and create-ringfence.

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

Usage Guidelines4/5

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

The description gives explicit when-to-use guidance: override deny for 'emergency isolation, hard compliance blocks, or active attack response' and an explicit exclusion — 'NOT for normal segmentation or ringfencing.' The numbered processing order also tells the agent where deny rules sit relative to allow rules. The only gap is that it never names the alternative sibling tool (e.g., create-ringfence) for the normal segmentation case, leaving that to inference.

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