Skip to main content
Glama
alexgoller

Illumio MCP Server

by alexgoller

Illumio MCP Server

A Model Context Protocol (MCP) server that provides an interface to interact with Illumio PCE (Policy Compute Engine). This server enables programmatic access to Illumio workload management, label operations, traffic flow analysis, automated ringfencing, and infrastructure service identification.

What can it do?

Use conversational AI to talk to your PCE:

  • Full CRUD on workloads, labels, IP lists, services, and rulesets

  • Traffic analysis — query flows, get summaries, filter by policy decision

  • Automated ringfencing — analyze traffic and create app-to-app segmentation policies with one command

  • Selective enforcement — add deny rules for apps in selective mode with configurable consumer flavors

  • Infrastructure service identification — discover which apps are infrastructure services using graph centrality analysis, so you know what to policy first

  • Deny rule management — create, update, and delete deny rules (including override deny for emergencies)

  • Event monitoring — query PCE events with severity and type filters

  • PCE health checks — verify connectivity and credentials

Related MCP server: OpenCTI MCP Server

Prerequisites

  • Python 3.8+

  • Access to an Illumio PCE instance

  • Valid API credentials for the PCE

Installation

  1. Clone the repository:

git clone https://github.com/alexgoller/illumio-mcp-server.git
cd illumio-mcp-server
  1. Install dependencies:

uv sync

Configuration

You should run this using the uv command, which makes it easier to pass in environment variables and run it in the background.

Using uv and Claude Desktop

On MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json On Windows: %APPDATA%/Claude/claude_desktop_config.json

Add the following to the custom_settings section:

"mcpServers": {
    "illumio-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/illumio-mcp-server",
        "run",
        "illumio-mcp"
      ],
      "env": {
        "PCE_HOST": "your-pce-host",
        "PCE_PORT": "your-pce-port",
        "PCE_ORG_ID": "1",
        "API_KEY": "api_key",
        "API_SECRET": "api_secret"
      }
    }
  }
}

HTTP transport with OAuth Resource Server (Phase 3a)

The server runs over HTTP using the MCP Streamable HTTP transport (spec rev 2025-03-26) and validates OAuth 2.1 bearer tokens issued by your IdP. This is Phase 3a: identity is enforced; per-user PCE keys land in Phase 3b.

Running with auth (production-shaped)

export MCP_PUBLIC_URL=https://mcp.illumio.example
export MCP_OAUTH_ISSUER=https://login.microsoftonline.com/<tenant-id>/v2.0
export MCP_OAUTH_JWKS_URL=https://login.microsoftonline.com/<tenant-id>/discovery/v2.0/keys
export MCP_OAUTH_AUDIENCE=https://mcp.illumio.example
export MCP_OAUTH_REQUIRED_SCOPE=illumio-mcp.use   # default; override if needed
illumio-mcp-http --host 127.0.0.1 --port 8080

The server refuses to start without these env vars (unless MCP_DEV_INSECURE=1).

MCP clients discover the AS via the standard RFC 9728 endpoint:

GET /.well-known/oauth-protected-resource

Unauthenticated requests to /mcp return 401 with WWW-Authenticate: Bearer resource_metadata="<URL>", which any spec-compliant MCP client (Claude Desktop, ChatGPT, MCP Inspector) follows automatically to run PKCE auth code flow against the configured AS.

Running without auth (dev only)

MCP_DEV_INSECURE=1 illumio-mcp-http

The server logs a prominent warning. Do NOT use in production.

Health endpoints (always unauthenticated)

  • GET /healthz — liveness

  • GET /readyz — readiness (Phase 3a returns the same as healthz; Phase 3b/c will add PCE + JWKS reachability)

Two PCE modes (Phase 3b vs Phase 3e)

The HTTP server supports two ways to source PCE credentials, selected via MCP_PCE_MODE:

Mode

MCP_PCE_MODE

PCE creds

Onboarding

PCE-side audit

Per-user (default)

per_user

One PCE API key per authenticated user, encrypted in keystore

User registers via /setup page or register-pce-credentials tool

PCE logs show the real human via per-user API key

Shared

shared

One PCE service-account key from env (same as stdio)

None — works immediately for any authenticated user

PCE logs show the service account; the MCP audit log is the source of truth for "who did what"

Choose per-user when:

  • You want PCE-side audit attribution to identify the human

  • Users are happy to provide their own PCE API key once

  • You can tolerate the per-user PCE key sprawl (PCE has limits)

Choose shared when:

  • The PCE limits API keys per user too aggressively for per-user mode

  • You want zero-friction onboarding (no /setup step)

  • You're OK relying on the MCP audit log alone for human-level attribution

  • You operate the PCE service account yourself and rotate it on a schedule

In shared mode, /setup is not mounted, the credential-management tools (register-pce-credentials, delete-pce-credentials) refuse with a friendly error, and MCP_KEK is not required. SSO + JWT + role-based authz + audit log + confirm tokens all still apply identically.

# Shared mode — same env that stdio uses today, plus auth/role config
export MCP_PCE_MODE=shared
export PCE_HOST=https://your-pce.example.com
export PCE_PORT=8443
export PCE_ORG_ID=1
export API_KEY=your_pce_api_key_name
export API_SECRET=your_pce_api_key_secret
# (other auth/role env vars from earlier sections still apply)
illumio-mcp-http

Per-user PCE keys (Phase 3b)

Each authenticated user has their own PCE API key/secret stored in an encrypted SQLite keystore. PCE-side audit logs attribute correctly per human; revoking a user is a single tool call.

Additional env required when running with auth:

export MCP_KEK=$(python -c 'import os, base64; print(base64.b64encode(os.urandom(32)).decode())')
export MCP_KEYSTORE_PATH=/var/lib/illumio-mcp/keys.db   # default: ./data/keys.db

The KEK is never stored next to the database. Loss of KEK = total loss of stored creds (intentional, fail-closed). For production, source MCP_KEK from KMS or Vault rather than the operator's shell.

Onboarding paths (either works):

  1. Browser — visit /setup after authenticating; paste credentials in the form.

  2. MCP client — call the register-pce-credentials tool; the only tool available before credentials are registered.

Other credential tools:

  • check-pce-credentials-status — does this user have credentials registered?

  • delete-pce-credentials — remove this user's credentials.

Role-based authorization (Phase 3c)

The server maps each user's IdP groups to one of three internal roles: reader, operator, admin. Per-tool authorization is enforced by the dispatcher using the roles metadata on each ToolSpec.

Configure group → role mapping via env (comma-separated):

# A user matching ANY of these groups gets that role; highest role wins.
export MCP_ROLE_GROUPS_ADMIN=sg-illumio-mcp-admin
export MCP_ROLE_GROUPS_OPERATOR=sg-illumio-mcp-operator,sg-illumio-mcp-admin
export MCP_ROLE_GROUPS_READER=sg-illumio-mcp-readonly,sg-illumio-mcp-operator,sg-illumio-mcp-admin

# Optional: fallback role when no group matches. Leave unset to refuse.
# export MCP_ROLE_DEFAULT=reader

Tool-by-tool defaults:

Tool category

Roles allowed

Examples

Reads

reader, operator, admin

get-labels, get-workloads, get-traffic-flows

Writes

operator, admin

create-*, update-*, delete-*

Provisioning + bulk

admin

provision-policy, ringfence-batch

A user without a matching role (and no MCP_ROLE_DEFAULT) receives a structured forbidden_no_role error.

Audit log (Phase 3c)

Every dispatcher decision (allow / deny / error) is written to a SQLite audit database. Schema and storage location:

# Defaults to <keystore_dir>/audit.db
export MCP_AUDIT_LOG_PATH=/var/lib/illumio-mcp/audit.db

Audit rows include (ts, sub, iss, tool, decision, reason, role, request_id)never tool arguments. The request_id matches the X-Request-Id response header so external traces can be correlated.

Query examples:

-- Recent denied calls per user
SELECT ts, sub, tool, reason FROM audit_log
WHERE decision='denied'
ORDER BY ts DESC LIMIT 20;

-- Tool-call volume by user
SELECT sub, COUNT(*) FROM audit_log
WHERE ts > date('now', '-7 days')
GROUP BY sub ORDER BY 2 DESC;

Confirm tokens for mutating tools (Phase 3d)

Tools marked requires_confirm=True (currently provision-policy, ringfence-batch, register-pce-credentials, delete-pce-credentials) require a server-issued single-use confirm token in params._meta.confirm_token when called over HTTP. Stdio mode is unaffected — the operator who launched the process can call mutating tools directly.

Required env in auth mode:

export MCP_CONFIRM_HMAC_KEY=$(python -c 'import os, base64; print(base64.b64encode(os.urandom(32)).decode())')
# Optional:
# export MCP_CONFIRM_TTL_SECONDS=120
# export MCP_CONFIRM_JTI_PATH=/var/lib/illumio-mcp/jti.db
# export MCP_CONFIRM_FRESH_AUTH_SECONDS=300   # require JWT auth_time within 5 min

How a client uses it

  1. Call the mutating tool without a token → server returns:

    {"error": "confirm_required", "params_hash": "<sha256>", "message": "..."}
  2. Call POST /confirm with the JWT and the params_hash:

    curl -X POST https://mcp.illumio.example/confirm \
      -H "Authorization: Bearer $JWT" \
      -H "Content-Type: application/json" \
      -d '{"tool":"provision-policy","params_hash":"<sha256>"}'
    # → {"confirm_token": "...", "expires_in": 120}
  3. Re-call the tool with the token in params._meta.confirm_token.

Tokens are single-use (replays return confirm_token_replay) and scoped to (sub, tool, params_hash). Tampering with any field invalidates the token.

Set MCP_CONFIRM_FRESH_AUTH_SECONDS=300 to require the JWT's auth_time claim to be within the last 5 minutes. Forces the user to re-authenticate before minting a token — the strongest prompt-injection defense available without an interactive session model. Requires the IdP to issue auth_time (Entra and Okta both do for OIDC sign-in flows).

Tools

Workload Management

  • get-workloads — Retrieve workloads with optional filtering by name, hostname, IP, labels, and max results

  • create-workload — Create an unmanaged workload with name, IP addresses, and labels

  • update-workload — Update an existing workload's properties

  • delete-workload — Remove a workload from PCE

Label Operations

  • get-labels — Retrieve labels with optional filtering by key, value, and max results

  • create-label — Create a new label with key-value pair

  • update-label — Update an existing label

  • delete-label — Remove a label

Ruleset & Rule Management

  • get-rulesets — Get rulesets with optional filtering by name, description, and enabled status

  • create-ruleset — Create a new ruleset with scopes

  • update-ruleset — Update ruleset properties

  • delete-ruleset — Remove a ruleset

  • create-deny-rule — Create a deny rule (regular or override deny) in a ruleset

  • update-deny-rule — Update an existing deny rule

  • delete-deny-rule — Remove a deny rule

IP List Management

  • get-iplists — Get IP lists with optional filtering by name, description, FQDN, and max results

  • create-iplist — Create a new IP list

  • update-iplist — Update an existing IP list

  • delete-iplist — Remove an IP list

Service Management

  • get-services — Get services with optional filtering by name, port, protocol, and max results

  • create-service — Create a new service definition

  • update-service — Update an existing service

  • delete-service — Remove a service

Traffic Analysis

  • get-traffic-flows — Get detailed traffic flow data with filtering by date range, source/destination, service, policy decision, and more

  • get-traffic-flows-summary — Get aggregated traffic summaries grouped by app, env, port, and protocol

Automated Ringfencing

  • create-ringfenceAutomated app-to-app segmentation policy creation. Analyzes traffic flows to discover which remote apps communicate with a target app, then creates a ruleset with:

    • Intra-scope allow rule — all workloads within the app can communicate freely

    • Extra-scope allow rules — each discovered remote app gets an allow rule on All Services

    • Selective enforcement mode (selective=true) — adds a deny rule blocking all inbound, with allow rules for known apps processed first. Gets you to enforcement faster than full enforcement mode.

    • Deny consumer flavors (deny_consumer parameter):

      • any (default) — IP list Any (0.0.0.0/0) as consumer, deny only at destination. Safest.

      • ams — All Workloads as consumer, deny pushed to every managed workload. Broader.

      • ams_and_any — Both. Maximum coverage.

    • Policy coverage awareness — each rule is annotated as already_allowed (traffic covered by existing policy, created for documentation) or newly_allowed (filling a policy gap). Summary shows how many remote apps are already covered vs need new rules.

    • skip_allowed parameter — set to true to only create rules for traffic not yet covered by existing policy, producing minimal rulesets that fill gaps only

    • Merge-safe — detects existing rulesets and rules, never creates duplicates

    • Dry-run support — preview what would be created without making changes

Infrastructure Service Identification

  • identify-infrastructure-servicesDiscover which apps are infrastructure services by analyzing traffic patterns. Builds an app-to-app communication graph and uses dual-pattern scoring to recognize two types of infrastructure:

    Provider infra (AD, DNS, shared DB) — consumed by many apps, high in-degree, low out-degree. Consumer infra (monitoring, backup, log shipping) — connects out to many apps, high out-degree, low in-degree.

    Two scores are computed per app, and the higher one wins:

    Score

    Degree metric (40%)

    Directionality (30%)

    Betweenness (25%)

    Volume (5%)

    Provider

    In-degree

    Consumer ratio (in/total)

    Betweenness centrality

    Connection volume

    Consumer

    Out-degree

    Producer ratio (out/total)

    Betweenness centrality

    Connection volume

    Mixed-traffic dampening: score *= 1 / (1 + min(in_degree, out_degree) * 0.3) — apps with both significant inbound AND outbound connections are business apps, not infrastructure. Pure directional apps (all in OR all out) get no penalty.

    Non-production environments (staging, dev, etc.) receive a 50% score penalty since infrastructure services typically live in production.

    Apps are classified into tiers:

    • Core Infrastructure (score >= 75) — monitoring, AD, SIEM, DNS. Policy these first.

    • Shared Service (score >= 50) — shared databases, message queues. Policy these second.

    • Standard Application (score < 50) — normal business apps.

    Each result includes a dominant_pattern field ("provider" or "consumer") indicating which type of infrastructure the app resembles.

    Why this matters: Infrastructure services are consumed by many apps OR connect out to many apps. If you ringfence apps without allowing infrastructure services first, you break dependencies. This tool tells you what to policy first.

Policy Lifecycle

  • provision-policyProvision pending draft changes to move them from draft to active state. Can provision all pending changes or specific items by href. Includes change descriptions for audit trail.

  • compare-draft-activeCompare draft vs active policy to preview what would change on provisioning. Shows created, updated, and deleted rulesets, rules, IP lists, and services.

Enforcement Readiness

  • enforcement-readinessAssess whether an app is ready for enforcement. Analyzes traffic flows, existing policy coverage, enforcement modes, and ringfence status. Returns a readiness score (0-100) with actionable recommendations:

    • Policy coverage (40 points) — what percentage of traffic is covered by rules

    • Ringfence exists (20 points) — has a ringfence ruleset been created

    • Enforcement mode (20 points) — are workloads in full/selective/visibility_only

    • No blocked traffic (10 points) — no unintended blocks

    • All remote apps covered (10 points) — no uncovered remote app traffic

Batch Operations

  • ringfence-batchRingfence multiple apps at once. Optionally uses identify-infrastructure-services to auto-order apps by infrastructure score (infrastructure first, then standard apps). Supports dry-run mode to preview all changes before applying.

Workload Enforcement Status

  • get-workload-enforcement-statusGet enforcement mode status across workloads, grouped by app and environment. Shows counts per mode (idle, visibility_only, selective, full) and identifies apps with mixed enforcement states — a common issue during rollouts.

Policy Coverage

  • get-policy-coverage-reportGenerate a policy coverage report for an app showing what traffic is covered by existing rules vs what would be blocked. Breaks down by inbound/outbound, identifies uncovered services and remote apps, and provides an overall coverage percentage.

  • find-unmanaged-trafficFind traffic involving unmanaged workloads or IP addresses. These are sources/destinations without app/env labels, representing policy blind spots. Filters by direction (inbound/outbound/both) and connection count.

Security Analysis

  • detect-lateral-movement-pathsDetect potential lateral movement paths by analyzing app-to-app traffic patterns. Identifies articulation points (bridge nodes) whose compromise would provide access to otherwise disconnected app groups. Computes reachability from any starting app and traces multi-hop paths up to a configurable depth.

  • compliance-checkCheck policy compliance against frameworks (PCI-DSS, NIST 800-53, CIS Controls, or general best practices). Evaluates segmentation, enforcement modes, high-risk port exposure, and policy coverage. Returns a compliance score with per-check findings (PASS/FAIL/WARNING).

Event Monitoring

  • get-events — Get PCE events with optional filtering by event type, severity, status, and result limits

Connection Testing

  • check-pce-connection — Verify PCE connectivity and credentials

Testing

The project includes a comprehensive integration test suite that runs against a real PCE using the MCP protocol.

# Set up credentials in .env
cat > .env << EOF
PCE_HOST=your-pce-host
PCE_PORT=8443
PCE_ORG_ID=1
API_KEY=your-api-key
API_SECRET=your-api-secret
EOF

# Run all tests
uv run pytest tests/ -v

The test suite covers:

  • Tool listing and schema validation

  • Full CRUD lifecycle for workloads, labels, IP lists, services, rulesets, and deny rules

  • Traffic flow queries and summaries

  • Ringfence creation (standard, selective, deny consumer flavors, merge idempotency)

  • Infrastructure service identification (scoring, sorting, tier classification)

  • Error handling for missing resources

Illumio Rule Processing Order

Understanding rule processing is essential for ringfencing:

  1. Essential rules — built-in, cannot be modified

  2. Override Deny rules — block traffic overriding all allows (emergency use)

  3. Allow rules — permit traffic (ringfence remote app rules go here)

  4. Deny rules — block specific traffic (ringfence deny-all-inbound goes here)

  5. Default action — selective mode = allow-all, full enforcement = deny-all

In selective enforcement, the default is allow-all, so a deny rule is needed to make the ringfence effective. Known remote apps get allow rules (step 3) which are processed before the deny (step 4).

Visual Examples

All the examples below were generated by Claude Desktop and with data obtained through this MCP server.

Application Analysis

Application Analysis Detailed view of application communication patterns and dependencies

Application Tier Analysis Analysis of traffic patterns between different application tiers

Infrastructure Insights

Infrastructure Analysis Dashboard Overview dashboard showing key infrastructure metrics and status

Infrastructure Services Detailed analysis of infrastructure service communications

Security Assessment

Security Analysis Report Comprehensive security analysis report

High Risk Findings Security assessment findings for high-risk vulnerabilities

PCI Compliance PCI compliance assessment findings

SWIFT Compliance SWIFT compliance assessment findings

Remediation Planning

Remediation Plan Overview Overview of security remediation planning

Detailed Remediation Steps Detailed steps for security remediation implementation

Policy Management

IP Lists Overview Management interface for IP lists

Ruleset Categories Overview of ruleset categories and organization

Application Ruleset Ordering Configuration of application ruleset ordering

Workload Management

Workload Analysis Detailed workload analysis and metrics

Workload Traffic Identification and analysis of workload traffic patterns

Label Management

PCE Labels by Type Organization of PCE labels by type and category

Service Analysis

Service Role Inference Automatic inference of service roles based on traffic patterns

Top Sources and Destinations Analysis of top 5 traffic sources and destinations

Project Planning

Project Plan Project implementation timeline and milestones

Available Prompts

Ringfence Application

The ringfence-application prompt helps create security policies to isolate and protect applications by controlling inbound and outbound traffic.

Required Arguments:

  • application_name: Name of the application to ringfence

  • application_environment: Environment of the application to ringfence

Features:

  • Creates rules for inter-tier communication within the application

  • Uses traffic flows to identify required external connections

  • Implements inbound traffic restrictions based on source applications

  • Creates outbound traffic rules for necessary external communications

  • Handles both intra-scope (same app/env) and extra-scope (external) connections

  • Creates separate rulesets for remote application connections

Analyze Application Traffic

The analyze-application-traffic prompt provides detailed analysis of application traffic patterns and connectivity.

Required Arguments:

  • application_name: Name of the application to analyze

  • application_environment: Environment of the application to analyze

Analysis Features:

  • Orders traffic by inbound and outbound flows

  • Groups by application/environment/role combinations

  • Identifies relevant label types and patterns

  • Displays results in a React component format

  • Shows protocol and port information

  • Attempts to identify known service patterns (e.g., Nagios on port 5666)

  • Categorizes traffic into infrastructure and application types

  • Determines internet exposure

  • Displays Illumio role, application, and environment labels

How to use MCP prompts

Step1: Click "Attach from MCP" button in the interface

MCP Prompt Workflow

Step 2: Choose from installed MCP servers

MCP Prompt Workflow

Step 3: Fill in required prompt arguments:

MCP Prompt Workflow

Step 4: Click Submit to send the configured prompt

How prompts work

  • The MCP server sends the configured prompt to Claude

  • Claude receives context through the Model Context Protocol

  • Allows specialized handling of Illumio-specific tasks

This workflow enables automated context sharing between Illumio systems and Claude for application traffic analysis and ringfencing tasks.

Docker

The application is available as a Docker container from the GitHub Container Registry.

Pull the container

docker pull ghcr.io/alexgoller/illumio-mcp-server:latest

You can also use a specific version by replacing latest with a version number:

docker pull ghcr.io/alexgoller/illumio-mcp-server:1.0.0

Run with Claude Desktop

To use the container with Claude Desktop, you'll need to:

  1. Create an environment file (e.g. ~/.illumio-mcp.env) with your PCE credentials:

PCE_HOST=your-pce-host
PCE_PORT=your-pce-port
PCE_ORG_ID=1
API_KEY=your-api-key
API_SECRET=your-api-secret
  1. Add the following configuration to your Claude Desktop config file:

On MacOS (~/Library/Application Support/Claude/claude_desktop_config.json):

{
    "mcpServers": {
        "illumio-mcp-docker": {
            "command": "docker",
            "args": [
                "run",
                "-i",
                "--init",
                "--rm",
                "-v",
                "/Users/YOUR_USERNAME/tmp:/var/log/illumio-mcp",
                "-e",
                "DOCKER_CONTAINER=true",
                "-e",
                "PYTHONWARNINGS=ignore",
                "--env-file",
                "/Users/YOUR_USERNAME/.illumio-mcp.env",
                "illumio-mcp:latest"
            ]
        }
    }
}

Make sure to:

  • Replace YOUR_USERNAME with your actual username

  • Create the log directory (e.g. ~/tmp)

  • Adjust the paths according to your system

Run Standalone

You can also run the container directly:

docker run -i --init --rm \
  -v /path/to/logs:/var/log/illumio-mcp \
  -e DOCKER_CONTAINER=true \
  -e PYTHONWARNINGS=ignore \
  --env-file ~/.illumio-mcp.env \
  ghcr.io/alexgoller/illumio-mcp-server:latest

Docker Compose

For development or testing, you can use Docker Compose:

version: '3'
services:
  illumio-mcp:
    image: ghcr.io/alexgoller/illumio-mcp-server:latest
    init: true
    volumes:
      - ./logs:/var/log/illumio-mcp
    environment:
      - DOCKER_CONTAINER=true
      - PYTHONWARNINGS=ignore
    env_file:
      - ~/.illumio-mcp.env

Then run:

docker-compose up

Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Commit your changes

  4. Push to the branch

  5. Create a Pull Request

License

This project is licensed under the GPL-3.0 License. See the LICENSE file for details.

Support

For support, please create an issue.

Available Tools

22 tools
add-noteD

Add a new note

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
contentYes

TDQS

D1.7/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Add a new note' implies a write/mutation operation, but the description fails to disclose critical behavioral traits such as permissions required, whether the operation is idempotent, what happens on conflicts (e.g., duplicate names), or what the response contains. This leaves significant gaps for safe and effective tool invocation.

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 extremely concise at just three words, with no wasted language. It is front-loaded with the core action ('Add a new note'). While this brevity contributes to under-specification in other dimensions, it meets the criteria for conciseness perfectly.

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

Completeness1/5

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

Given the tool's complexity (a write operation with two required parameters), lack of annotations, 0% schema coverage, and no output schema, the description is completely inadequate. It doesn't explain the domain context (e.g., notes within a security or workload system hinted by sibling tools), parameter meanings, behavioral expectations, or return values. The agent lacks essential information for correct usage.

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

Parameters1/5

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

The schema description coverage is 0%, meaning neither parameter ('name' or 'content') has any documentation in the schema. The description 'Add a new note' provides no additional semantic information about these parameters—it doesn't explain what 'name' represents (e.g., note title, identifier), what 'content' should contain, or any constraints/formatting. With two required parameters and zero coverage, the description fails to compensate.

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

Purpose2/5

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

The description 'Add a new note' is a tautology that essentially restates the tool name 'add-note' without providing meaningful elaboration. It does specify the verb 'add' and resource 'note', but fails to distinguish this tool from any potential sibling note-related tools (though none are listed among siblings). The purpose is minimally stated but lacks specificity about what kind of note system this operates within.

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

Usage Guidelines1/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, context, or comparison with sibling tools (e.g., whether notes are part of a larger system like workloads or rulesets). The agent receives no help in determining appropriate usage scenarios.

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

check-pce-connectionB

Are my credentials and the connection to the PCE working?

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral insight. It implies a diagnostic/read-only operation but doesn't disclose response format (e.g., success/failure details), error conditions, or side effects (e.g., if it logs attempts). More context on what 'working' entails would help.

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 a single, direct question that efficiently conveys the tool's intent without redundancy. It's front-loaded and wastes no words, making it easy for an agent to parse quickly.

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

Completeness3/5

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

Given the tool's simplicity (0 params, no output schema, no annotations), the description is minimally adequate. However, it lacks details on what a successful/failed check returns, which is crucial for a diagnostic tool. Without annotations or output schema, more behavioral context would improve completeness.

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?

The tool has 0 parameters with 100% schema coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, aligning with the schema. A baseline of 4 is applied as it avoids unnecessary parameter details.

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

Purpose4/5

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

The description clearly states the tool's purpose as checking credentials and connection to PCE, using specific verbs ('check', 'working') and identifying the resource (PCE). However, it doesn't explicitly differentiate from siblings like get-events or get-workloads, which are data retrieval tools rather than connectivity checks.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., after credential setup), exclusions (e.g., not for data operations), or relate to sibling tools like get-events for actual data access after connection verification.

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

create-iplistC

Create a new IP List in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the IP List
descriptionNoDescription of the IP List
ip_rangesYesList of IP ranges to include
fqdnNoFully Qualified Domain Name (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It states the tool creates something but doesn't describe what happens after creation (e.g., whether the IP list is immediately active, if there are rate limits, or if it requires specific permissions). For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with zero wasted text. Every part of the sentence earns its place by conveying essential information.

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

Completeness2/5

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

Given the tool's complexity (a mutation operation with 4 parameters) and the lack of annotations and output schema, the description is incomplete. It doesn't address behavioral aspects like permissions, side effects, or response format, which are critical for an agent to use the tool correctly. The high schema coverage helps with parameters but doesn't compensate for the overall gaps.

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?

The description adds no parameter information beyond what the input schema provides. Since schema description coverage is 100%, the baseline score is 3. The schema fully documents all parameters (name, description, ip_ranges, fqdn) with clear descriptions, so the description doesn't need to compensate but also doesn't add extra context like examples or constraints.

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

Purpose4/5

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

The description clearly states the action ('Create') and resource ('new IP List in the PCE'), making the purpose immediately understandable. It distinguishes from sibling tools like 'update-iplist' and 'delete-iplist' by specifying creation rather than modification or deletion. However, it doesn't explicitly differentiate from other creation tools like 'create-label' or 'create-ruleset' beyond the resource type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication, permissions), when not to use it, or how it relates to sibling tools like 'update-iplist' or 'get-iplists'. The agent must infer usage from the tool name and context alone.

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

create-labelC

Create a label of a specific type and the value in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a creation operation, implying mutation, but doesn't cover critical aspects like required permissions, whether the label is unique, error handling, or what happens on success. For a mutation tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 a single, efficient sentence with no wasted words. It's front-loaded with the core action ('Create a label') and includes essential details without redundancy. Every part of the sentence contributes to understanding the tool's purpose.

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

Completeness2/5

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

Given the tool's complexity as a mutation operation with no annotations, 2 undocumented parameters, and no output schema, the description is insufficient. It doesn't explain what 'PCE' stands for, the expected return value, error conditions, or how this tool fits into broader workflows (e.g., labeling workloads). For a creation tool in this context, more completeness is needed.

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

Parameters2/5

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

The input schema has 2 required parameters with 0% description coverage, meaning 'key' and 'value' are undocumented. The description adds minimal semantics by implying 'key' relates to 'type' and 'value' is the label content, but it doesn't clarify what 'type' means (e.g., format, allowed values) or how these parameters interact. This doesn't adequately compensate for the schema's lack of documentation.

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

Purpose4/5

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

The description clearly states the action ('Create a label') and specifies the resource type ('of a specific type and the value in the PCE'), which distinguishes it from sibling tools like 'delete-label' or 'update-label'. However, it doesn't explicitly differentiate from other creation tools like 'create-iplist' or 'create-ruleset' beyond the resource type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, such as needing a PCE connection (implied by sibling 'check-pce-connection'), or specify use cases like labeling workloads versus other resources. There's no explicit when-not-to-use advice or comparison with similar tools.

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

create-rulesetC

Create a ruleset in the PCE with support for ring-fencing patterns

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the ruleset (e.g., 'RS-ELK'). Must be unique in the PCE.
descriptionNoDescription of the ruleset (optional)
scopesYesList of label combinations that define scopes. Each scope is an array of label values. This need to be label references like /orgs/1/labels/57 or similar. Get the label href from the get-labels tool.
rulesNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a ruleset, implying a write operation, but doesn't cover critical behaviors: whether this requires specific permissions, if the creation is idempotent, what happens on duplicate names, error conditions, or the format of the response. The mention of 'ring-fencing patterns' adds some context but is vague without explanation.

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?

The description is a single, efficient sentence that front-loads the core purpose. It avoids unnecessary words, but could be slightly more structured by explicitly mentioning key parameters or outcomes. Every part earns its place, though it's brief given the tool's complexity.

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

Completeness2/5

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

Given the tool's complexity (4 parameters, nested 'rules' object, no output schema, and no annotations), the description is inadequate. It doesn't explain the output, error handling, or behavioral nuances like the impact of 'ring-fencing patterns'. For a creation tool with significant parameter detail, more context is needed to guide effective use.

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?

The schema description coverage is 75%, providing good documentation for parameters like 'name', 'description', and 'scopes'. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain 'ring-fencing patterns' in relation to the parameters or provide usage examples. Since schema coverage is high, the baseline score of 3 is appropriate, but the description doesn't compensate for the remaining 25% gap (e.g., clarifying 'rules' structure).

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

Purpose4/5

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

The description clearly states the action ('Create a ruleset') and the resource ('in the PCE'), and mentions a specific capability ('with support for ring-fencing patterns'). It distinguishes from siblings like 'update-ruleset' or 'delete-ruleset' by specifying creation, but doesn't explicitly differentiate from other creation tools like 'create-iplist' or 'create-label' beyond the resource type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing labels from 'get-labels' as hinted in the schema), when ring-fencing patterns are applicable, or how this differs from other rule-related operations. The agent must infer usage from context alone.

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

create-workloadC

Create a Illumio Core unmanaged workload in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
ip_addressesYes
labelsNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Create' implies a write operation, but doesn't cover critical aspects like required permissions, whether the creation is idempotent, error handling, or what happens on success (e.g., returns a workload ID). This is inadequate for a mutation tool with zero annotation coverage.

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 a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly, though this brevity contributes to gaps in other dimensions.

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

Completeness2/5

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

Given the complexity of a creation tool with 3 parameters, 0% schema coverage, no annotations, and no output schema, the description is incomplete. It lacks details on behavior, parameters, and expected outcomes, making it insufficient for reliable tool invocation by an AI agent.

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

Parameters2/5

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

The schema description coverage is 0%, so the description must compensate by explaining parameters, but it adds no semantic information beyond what's inferred from the tool name. Parameters like 'name', 'ip_addresses', and 'labels' are undocumented in both schema and description, leaving their purpose and format unclear.

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

Purpose4/5

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

The description clearly states the action ('Create') and the resource ('Illumio Core unmanaged workload in the PCE'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'create-iplist' or 'create-label', which would require mentioning what makes a workload distinct from those other resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a PCE connection), exclusions (e.g., when not to create workloads), or compare it to related tools like 'update-workload' or 'delete-workload', leaving the agent with no usage context.

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

delete-iplistC

Delete an IP List from the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
hrefNoHref of the IP List to delete
nameNoName of the IP List to delete (alternative to href)

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool deletes an IP List, implying a destructive mutation, but doesn't cover critical aspects like whether deletion is permanent, requires specific permissions, has side effects (e.g., on associated rules), or provides confirmation. This leaves significant gaps for a destructive operation.

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 a single, direct sentence with zero waste: 'Delete an IP List from the PCE'. It front-loads the key action and resource efficiently, making it easy to parse without unnecessary details. Every word earns its place in conveying the core purpose.

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

Completeness2/5

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

Given the tool's destructive nature, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., irreversibility, permissions), output expectations, or error handling. For a delete operation with zero annotation coverage, this minimal description fails to provide sufficient context for safe and effective use.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for 'href' and 'name' as alternatives for identifying the IP List. The description adds no parameter semantics beyond what the schema provides, such as explaining the relationship between href and name or usage recommendations. With high schema coverage, the baseline score of 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Delete') and the resource ('an IP List from the PCE'), making the purpose unambiguous. It distinguishes from siblings like 'get-iplists' (read) and 'update-iplist' (modify), but doesn't explicitly differentiate from other delete operations like 'delete-label' or 'delete-workload', which target different resources.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing the IP List's href or name), when not to use it (e.g., if the IP List is in use), or compare with siblings like 'update-iplist' for modifications instead of deletion. The description only states what it does, not when to apply it.

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

delete-labelC

Delete a label in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
valueYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While 'Delete' implies a destructive, irreversible operation, the description doesn't specify permissions required, whether deletion is synchronous or asynchronous, error conditions (e.g., if the label doesn't exist), or side effects. For a destructive tool with zero annotation coverage, this is inadequate.

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 a single, direct sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place by conveying essential information without redundancy.

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

Completeness2/5

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

Given the tool's destructive nature, lack of annotations, no output schema, and undocumented parameters, the description is insufficient. It doesn't explain what happens upon deletion, error handling, or return values. For a high-stakes operation like deletion, more context is needed to ensure safe and correct usage.

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

Parameters2/5

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

The input schema has 2 required parameters (key and value) with 0% description coverage, meaning neither parameter is documented in the schema. The description adds no information about what these parameters represent, their format, or examples (e.g., whether 'key' is a label name and 'value' is its value). This leaves the agent guessing about proper usage.

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

Purpose4/5

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

The description clearly states the action ('Delete') and the resource ('a label in the PCE'), making the purpose immediately understandable. It distinguishes itself from sibling tools like 'create-label' and 'update-label' by specifying the destructive operation. However, it doesn't specify what 'PCE' stands for or provide additional context about the label system.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., the label must exist), consequences (e.g., what happens to workloads using this label), or when to choose deletion over updating. With siblings like 'update-label' and 'get-labels' available, this lack of differentiation is a significant gap.

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

delete-rulesetC

Delete a ruleset from the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
hrefNoHref of the ruleset to delete
nameNoName of the ruleset to delete (alternative to href)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action ('Delete') but does not mention critical details like whether deletion is permanent, requires specific permissions, has side effects, or what happens on success/failure. This is inadequate for a destructive operation.

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 a single, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand quickly.

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

Completeness2/5

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

For a deletion tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits, error handling, or return values, which are crucial for such a potentially destructive operation. The high schema coverage does not compensate for these gaps.

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?

The input schema has 100% description coverage, clearly documenting the 'href' and 'name' parameters and their 'oneOf' requirement. The description adds no additional meaning beyond the schema, so it meets the baseline for high schema coverage without compensating value.

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

Purpose4/5

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

The description clearly states the verb ('Delete') and resource ('a ruleset from the PCE'), making the purpose unambiguous. However, it does not differentiate from sibling tools like 'delete-iplist' or 'delete-label', which follow the same pattern for different resources, so it lacks specific distinction.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives, such as when to delete a ruleset instead of updating it with 'update-ruleset', or prerequisites for deletion. The description only states what it does, not the context for its use.

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

delete-workloadC

Delete a workload from the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Delete', implying a destructive mutation, but lacks details on permissions needed, whether deletion is permanent or reversible, side effects (e.g., impact on related resources), or error handling. This is a significant gap for a destructive tool with zero annotation coverage.

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 a single, efficient sentence with zero waste—it directly states the tool's action and target. It's appropriately sized and front-loaded, making it easy to parse quickly without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's destructive nature, lack of annotations, no output schema, and low parameter coverage, the description is incomplete. It doesn't address critical aspects like what happens post-deletion, return values, or error conditions. For a mutation tool with such complexity, more context is needed to be adequately helpful.

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

Parameters2/5

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

The input schema has 1 parameter with 0% description coverage, and the tool description adds no information about the 'name' parameter. It doesn't explain what 'name' refers to (e.g., workload identifier, display name), format, or constraints. The description fails to compensate for the low schema coverage, leaving the parameter meaning unclear.

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

Purpose4/5

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

The description clearly states the action ('Delete') and the resource ('a workload from the PCE'), making the purpose specific and understandable. It distinguishes from siblings like 'delete-iplist' or 'delete-label' by specifying the resource type. However, it doesn't explicitly contrast with 'update-workload' or 'create-workload', which would elevate it to a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., workload must exist), exclusions (e.g., cannot delete if in use), or comparisons to siblings like 'update-workload' or 'get-workloads'. This leaves the agent with minimal context for selection.

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

get-eventsC

Get events from the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
event_typeNoFilter by event type (e.g., 'system_task.expire_service_account_api_keys')
severityNoFilter by event severity
statusNoFilter by event status
max_resultsNoMaximum number of events to return

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure but offers minimal information. It states what the tool does ('Get events') but doesn't describe return format, pagination, rate limits, authentication needs, or whether this is a read-only operation. For a tool with 4 parameters and no annotation coverage, this leaves significant behavioral gaps.

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 a single, efficient sentence with zero wasted words. It's appropriately sized for a straightforward retrieval tool and front-loads the core purpose. Every word earns its place, making it easy to parse quickly.

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

Completeness2/5

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

For a tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'PCE' stands for, what types of events are available, how results are structured, or any limitations. The combination of missing behavioral context and lack of output information creates significant gaps for an agent trying to use this tool effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds no parameter-specific information beyond what's in the schema, providing no additional context about how filters combine or what 'PCE' refers to. This meets the baseline for high schema coverage but doesn't enhance understanding.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('events from the PCE'), making the purpose immediately understandable. It doesn't differentiate from sibling tools like 'get-iplists' or 'get-workloads', but the resource specificity is adequate. The description avoids tautology by not just restating the tool name.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get-traffic-flows' or 'get-workloads' that might retrieve different types of data, nor does it specify prerequisites or appropriate contexts for event retrieval. Usage is implied only by the tool name and description.

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

get-iplistsC

Get IP lists from the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter IP lists by name (optional)
descriptionNoFilter by description (optional)
ip_rangesNoFilter by IP ranges (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Get IP lists' but doesn't specify if this is a read-only operation, how results are returned (e.g., pagination), or any limitations (e.g., rate limits). This leaves significant gaps in understanding the tool's behavior.

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 a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool's complexity (a retrieval operation with filtering parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'IP lists' entail, how results are structured, or any behavioral traits, leaving the agent with insufficient context for effective use.

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?

The input schema has 100% description coverage, documenting all three optional parameters (name, description, ip_ranges) as filters. The description adds no additional parameter information beyond what the schema provides, so it meets the baseline for high schema coverage without compensating further.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('IP lists from the PCE'), making the purpose understandable. However, it doesn't distinguish this tool from its sibling 'get-events', 'get-labels', etc., which also retrieve different resources from the PCE, so it lacks specific differentiation.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get-events' or 'get-workloads', nor does it mention any prerequisites or exclusions. It's a generic statement that offers no contextual usage advice.

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

get-labelsC

Get all labels from PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNo

TDQS

C2.6/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 'Get all labels' but doesn't explain what 'all' entails (e.g., pagination, filtering options, or return format). For a retrieval tool with zero annotation coverage, this lacks critical behavioral details like safety, performance, or output expectations.

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 a single, efficient sentence with no wasted words. It's appropriately sized for a simple tool and front-loaded with the core action, making it easy to scan. Every part of the sentence contributes directly to the purpose.

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

Completeness2/5

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

Given the complexity (a retrieval tool with one parameter), lack of annotations, and no output schema, the description is incomplete. It doesn't explain the parameter, return values, or behavioral traits, leaving gaps that could hinder an AI agent's ability to use the tool effectively. More context is needed for adequate completeness.

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

Parameters2/5

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

The input schema has one parameter ('name') with 0% description coverage, and the tool description doesn't mention parameters at all. This leaves the parameter undocumented in both schema and description, failing to compensate for the low schema coverage. The description adds no value beyond the schema.

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

Purpose4/5

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

The description clearly states the action ('Get all labels') and the resource ('from PCE'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get-iplists' or 'get-workloads' beyond the resource type, and 'PCE' is unexplained. This is clear but lacks 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, and with siblings like 'create-label' or 'delete-label', there's no indication of when retrieval vs. mutation is appropriate. This is a significant gap in usage guidance.

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

get-rulesetsC

Get rulesets from the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter rulesets by name (optional)
enabledNoFilter by enabled/disabled status (optional)

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden but only states the action without behavioral details. It doesn't disclose if this is a read-only operation, requires authentication, has rate limits, returns paginated results, or what 'PCE' refers to, leaving significant gaps.

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 a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for a simple tool, earning full marks for conciseness.

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

Completeness2/5

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

Given no annotations, no output schema, and a read operation with filtering parameters, the description is incomplete. It doesn't explain return values, error handling, or the 'PCE' context, making it inadequate for reliable agent use.

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

Parameters3/5

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

Schema description coverage is 100%, so parameters 'name' and 'enabled' are documented in the schema. The description adds no additional meaning beyond implying filtering (from 'Get rulesets'), which is already covered. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose3/5

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

The description states the tool 'Get rulesets from the PCE', which provides a clear verb ('Get') and resource ('rulesets'), but it's vague about scope (e.g., all rulesets vs. filtered) and doesn't distinguish from sibling tools like 'get-events' or 'get-workloads'. It's functional but lacks specificity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., after creating a ruleset), or exclusions, leaving the agent to infer usage from the name alone.

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

get-servicesC

Get services from the PCE with optional filtering

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter services by name
descriptionNoFilter services by description
portNoFilter services by port number
protoNoFilter services by protocol (e.g., tcp, udp)
process_nameNoFilter services by process name

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states 'Get services' but doesn't disclose behavioral traits like whether this is a read-only operation, if it requires authentication, rate limits, pagination, or what the output format looks like. This is inadequate for a tool with multiple parameters and no output schema.

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 a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for the tool's complexity, earning full marks for conciseness.

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

Completeness2/5

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

Given the tool has 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks details on behavior, output, and usage context, making it insufficient for an agent to fully understand how to invoke and interpret results from this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds minimal value by mentioning 'optional filtering' but doesn't provide additional context, syntax, or examples beyond what's in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('services from the PCE'), making the purpose understandable. However, it doesn't distinguish this tool from other 'get-' siblings like 'get-events' or 'get-workloads' beyond the resource type, missing specific differentiation.

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

Usage Guidelines2/5

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

The description mentions 'optional filtering' but provides no guidance on when to use this tool versus alternatives. It doesn't specify prerequisites, context, or exclusions, leaving the agent to infer usage from the tool name alone.

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

get-traffic-flowsC

Get traffic flows from the PCE with comprehensive filtering options

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStarting datetime (YYYY-MM-DD or timestamp)
end_dateYesEnding datetime (YYYY-MM-DD or timestamp)
include_sourcesNoSources to include (label/IP list/workload HREFs, FQDNs, IPs)
exclude_sourcesNoSources to exclude (label/IP list/workload HREFs, FQDNs, IPs)
include_destinationsNoDestinations to include (label/IP list/workload HREFs, FQDNs, IPs)
exclude_destinationsNoDestinations to exclude (label/IP list/workload HREFs, FQDNs, IPs)
include_servicesNo
exclude_servicesNo
policy_decisionsNo
exclude_workloads_from_ip_list_queryNo
max_resultsNo
query_nameNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't clarify permissions, rate limits, pagination, or what 'comprehensive filtering' entails beyond the schema. For a tool with 12 parameters and no annotation coverage, this is insufficient.

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 a single, efficient sentence that front-loads the core purpose ('Get traffic flows') and adds a key feature ('comprehensive filtering options'). There is no wasted language or redundancy, making it highly concise and well-structured.

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

Completeness2/5

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

Given the complexity (12 parameters, no annotations, no output schema), the description is inadequate. It doesn't explain the return format, error conditions, or how filtering interacts with the many parameters. For a data retrieval tool with extensive filtering, more context is needed to guide effective use.

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?

The schema description coverage is 50%, with detailed descriptions for some parameters (e.g., date formats, source/destination types) but none for others (e.g., 'exclude_workloads_from_ip_list_query', 'max_results', 'query_name'). The description adds no parameter-specific information beyond 'comprehensive filtering options', which is vague. Baseline 3 is appropriate given the partial schema coverage.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('traffic flows from the PCE'), and specifies 'comprehensive filtering options' which distinguishes it from the sibling tool 'get-traffic-flows-summary' that likely provides aggregated data. However, it doesn't explicitly contrast with that sibling, keeping it from a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get-traffic-flows-summary' or other data retrieval tools. It mentions filtering options but doesn't specify use cases, prerequisites, or exclusions, leaving the agent to infer usage from the tool name alone.

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

get-traffic-flows-summaryC

Get traffic flows from the PCE in a summarized text format, this is a text format that is not a dataframe, it also is not json, the form is: 'From to on : '

ParametersJSON Schema
NameRequiredDescriptionDefault
start_dateYesStarting datetime (YYYY-MM-DD or timestamp)
end_dateYesEnding datetime (YYYY-MM-DD or timestamp)
include_sourcesNoSources to include (label/IP list/workload HREFs, FQDNs, IPs). Best case these are hrefs like /orgs/1/labels/57 or similar. Other way is app=env as an example (label key and value)
exclude_sourcesNoSources to exclude (label/IP list/workload HREFs, FQDNs, IPs). Best case these are hrefs like /orgs/1/labels/57 or similar. Other way is app=env as an example (label key and value)
include_destinationsNoDestinations to include (label/IP list/workload HREFs, FQDNs, IPs). Best case these are hrefs like /orgs/1/labels/57 or similar. Other way is app=env as an example (label key and value)
exclude_destinationsNoDestinations to exclude (label/IP list/workload HREFs, FQDNs, IPs). Best case these are hrefs like /orgs/1/labels/57 or similar. Other way is app=env as an example (label key and value)
include_servicesNo
exclude_servicesNo
policy_decisionsNo
exclude_workloads_from_ip_list_queryNo
max_resultsNo
query_nameNo

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the output format ('summarized text format') and provides an example structure, which is helpful. However, it lacks critical behavioral details: it doesn't mention whether this is a read-only operation, potential performance impacts, rate limits, authentication requirements, or error handling. For a tool with 12 parameters and no annotations, this is a significant gap.

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?

The description is a single, efficient sentence that front-loads the key information: getting traffic flows in a summarized text format. It avoids redundancy and waste, though it could be slightly more structured by separating format details from the core purpose. Every part of the sentence contributes value.

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

Completeness2/5

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

Given the complexity (12 parameters, 50% schema coverage, no annotations, no output schema), the description is incomplete. It explains the output format but doesn't address the tool's behavior, error conditions, or parameter usage. For a data retrieval tool with many filtering options, more context is needed to guide effective use, especially without annotations or output schema.

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 50%, meaning half the parameters lack descriptions in the schema. The tool description adds no parameter-specific information beyond the output format example, which implies parameters like 'source', 'destination', 'port', and 'proto' but doesn't explain their mapping to schema fields or provide additional context. The description doesn't compensate for the low schema coverage, resulting in a baseline score.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('traffic flows from the PCE'), specifying it returns data in a 'summarized text format'. It distinguishes from the sibling 'get-traffic-flows' by emphasizing the text format output, though it doesn't explicitly compare them. The purpose is specific but could more directly contrast with the sibling tool.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives is provided. The description mentions the output format but doesn't explain why one would choose this summarized text format over other formats (e.g., JSON or dataframe-like structures from sibling tools). There's no mention of prerequisites, limitations, or typical use cases.

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

get-workloadsC

Get workloads from the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states 'Get workloads from the PCE', which implies a read operation but doesn't cover critical aspects like permissions required, rate limits, pagination, error handling, or what the return format might be. This is inadequate for a tool with no annotation coverage.

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 a single, efficient sentence with zero waste. It's appropriately sized and front-loaded, clearly stating the tool's purpose without unnecessary details. Every word earns its place.

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

Completeness1/5

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

Given the tool's complexity (a read operation with one parameter), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't provide enough context for an AI agent to understand how to use it effectively, missing details on behavior, parameters, and output.

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

Parameters1/5

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

The input schema has one required parameter 'name' with 0% description coverage, and the tool description adds no information about parameters. It doesn't explain what 'name' refers to (e.g., workload name, filter criteria), its format, or examples. With low schema coverage, the description fails to compensate.

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

Purpose3/5

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

The description states the action ('Get') and resource ('workloads from the PCE'), providing a basic purpose. However, it's vague about what 'workloads' are or what 'PCE' stands for, and it doesn't differentiate from sibling tools like 'get-events' or 'get-services' beyond the resource name. It meets the minimum viable standard but lacks specificity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There are no explicit or implied contexts, exclusions, or references to sibling tools like 'get-traffic-flows' or 'create-workload'. It merely states what it does without indicating usage scenarios.

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

update-iplistC

Update an existing IP List in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
hrefNoHref of the IP List to update
nameNoName of the IP List to update (alternative to href)
descriptionNoNew description for the IP List (optional)
ip_rangesNoNew list of IP ranges
fqdnNoNew Fully Qualified Domain Name (optional)

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool updates an existing IP list, implying a mutation operation, but lacks details on permissions required, whether changes are reversible, rate limits, or what happens to unspecified fields. This is inadequate for a mutation tool with zero annotation coverage.

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 a single, clear sentence with zero wasted words. It's front-loaded with the core action and resource, making it easy to scan and understand immediately.

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

Completeness2/5

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

For a mutation tool with 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't cover behavioral aspects like error handling, side effects, or response format, leaving significant gaps for an AI agent to use it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 5 parameters. The description adds no additional parameter semantics beyond what's in the schema, such as explaining the relationship between 'href' and 'name' or the structure of 'ip_ranges'. Baseline 3 is appropriate when schema does all the work.

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

Purpose4/5

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

The description clearly states the action ('Update') and resource ('an existing IP List in the PCE'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'create-iplist' or 'delete-iplist' beyond the verb, which prevents a perfect score.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'create-iplist' or 'delete-iplist'. The description assumes the user knows they have an existing IP list to update, but offers no context on prerequisites, error conditions, or best practices.

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

update-labelC

Update an existing label in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
hrefNoLabel href (e.g., /orgs/1/labels/42). Either href or both key and value must be provided to identify the label.
keyNoLabel type (e.g., role, app, env, loc)
valueNoCurrent value of the label
new_valueNoNew value for the label

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states this is an update operation but doesn't mention whether it's idempotent, what permissions are required, if changes are reversible, what happens on conflicts, or what the response looks like. For a mutation tool with zero annotation coverage, this is a significant gap.

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 a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose and appropriately sized for what it communicates.

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

Completeness2/5

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

For an update tool with 4 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what gets updated (only value based on schema inference), success/failure behavior, or system implications. The agent must rely heavily on schema alone for critical context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 4 parameters and their constraints (two identification methods via oneOf). The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high coverage.

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

Purpose4/5

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

The description clearly states the action ('Update') and resource ('an existing label in the PCE'), which distinguishes it from sibling tools like create-label and delete-label. However, it doesn't specify what aspects of the label can be updated (only value vs. key or other properties), which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like create-label or delete-label. It doesn't mention prerequisites (e.g., label must exist), error conditions, or typical use cases, leaving the agent to infer usage from the tool name alone.

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

update-rulesetC

Update an existing ruleset in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
hrefNoHref of the ruleset to update
nameNoName of the ruleset to update (alternative to href)
descriptionNoNew description for the ruleset
enabledNoWhether the ruleset is enabled
scopesNoNew scopes for the ruleset

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool updates an existing ruleset, implying a mutation operation, but doesn't describe what happens during the update (e.g., whether all fields must be provided, if partial updates are allowed, or if changes are reversible). It also lacks information on permissions, rate limits, or error conditions, leaving significant gaps for a mutation tool.

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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized for a tool with comprehensive schema documentation and is front-loaded with the essential action and resource.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the update operation entails, what happens to unspecified fields, or what the response looks like. While the schema covers parameters well, the behavioral context and output expectations are missing, which is problematic for a tool that modifies data.

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?

The input schema has 100% description coverage, providing clear documentation for all 5 parameters. The description adds no additional parameter information beyond what's in the schema. According to the scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description, which applies here.

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

Purpose4/5

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

The description clearly states the action ('update') and resource ('existing ruleset in the PCE'), making the purpose immediately understandable. It distinguishes itself from siblings like 'create-ruleset' and 'delete-ruleset' by specifying it modifies existing rulesets. However, it doesn't explicitly differentiate from 'update-iplist' or 'update-label' beyond the resource type.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing ruleset), when to choose 'href' vs 'name' for identification, or how it differs from other update tools like 'update-iplist'. The agent must infer usage from the tool name and schema alone.

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

update-workloadC

Update a workload in the PCE

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
ip_addressesYes
labelsNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states 'Update' implies a mutation, but doesn't specify required permissions, whether changes are reversible, error handling, or any side effects. This is inadequate for a mutation tool with zero annotation coverage, as critical behavioral traits are missing.

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 a single, efficient sentence with zero waste. It's front-loaded and appropriately sized for the tool's complexity, making it easy to parse quickly without unnecessary elaboration.

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

Completeness2/5

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

Given the tool's complexity (mutation with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what a 'workload' is, what 'PCE' stands for, or provide any context on the update operation's scope or effects, leaving significant gaps for an AI agent.

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

Parameters2/5

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

The schema description coverage is 0%, so the description must compensate by explaining parameters, but it adds no information beyond the tool name. Parameters like 'name', 'ip_addresses', and 'labels' are undocumented in both schema and description, leaving their purpose and format unclear. This fails to compensate for the low coverage.

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

Purpose4/5

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

The description 'Update a workload in the PCE' clearly states the verb ('Update') and resource ('workload in the PCE'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'update-iplist', 'update-label', or 'update-ruleset', which also update resources in the PCE, so it lacks specific distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an existing workload), exclusions, or comparisons to sibling tools like 'create-workload' or 'delete-workload'. This leaves the agent with minimal context for tool selection.

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

TDQS

B3/5.0
Disambiguation4/5

Most tools have distinct purposes targeting specific resources like IP lists, labels, rulesets, workloads, and events, with clear CRUD operations. However, 'get-traffic-flows' and 'get-traffic-flows-summary' overlap significantly in purpose, potentially causing confusion as both retrieve traffic flow data with only format differences, which might not be obvious from descriptions alone.

Naming Consistency4/5

Tool names follow a consistent verb-noun pattern with hyphens (e.g., create-iplist, delete-label, get-workloads), making them predictable and readable. Minor deviations include 'add-note' (using 'add' instead of 'create') and 'check-pce-connection' (which is more descriptive but breaks the pattern slightly), but overall the naming is highly consistent.

Tool Count4/5

With 22 tools, the count is on the higher side but reasonable for a comprehensive Illumio PCE management server, covering multiple resource types and operations. It feels slightly heavy but not excessive, as each tool serves a specific function in the domain, avoiding redundancy except for the traffic flows overlap.

Completeness5/5

The tool set provides complete CRUD coverage for key resources like IP lists, labels, rulesets, and workloads, along with additional operations for events, services, and traffic flows. There are no obvious gaps; agents can perform full lifecycle management and monitoring tasks without dead ends in the Illumio domain.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that connects AI assistants to MISP threat intelligence platforms. It enables threat intelligence search, IOC lookup, and event analysis through natural conversation.
  • F
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that connects AI assistants to OpenCTI threat intelligence platforms. It enables natural language interaction for searching threat intelligence, analyzing reports, managing indicators, and monitoring connectors.
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that enables AI assistants to perform comprehensive AWS security analysis through natural language queries, bridging AI with AWS security services.
    2
    Apache 2.0

Latest Blog Posts

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/alexgoller/illumio-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server