Illumio MCP Server
The Illumio MCP Server provides programmatic access to interact with the Illumio Policy Compute Engine (PCE) for comprehensive security policy management. With this server, you can:
Workload Management: Create, update, delete, and retrieve workloads
Label Operations: Manage key-value label pairs for organization
Traffic Analysis: Get detailed and summarized traffic flow data with extensive filtering options
Policy Management: Create and manage rulesets, including ring-fencing patterns
IP Lists Management: Create and maintain IP Lists with filtering capabilities
Service Management: Retrieve and filter services by name, port, protocol, and process
Event Management: Access events with filtering by status, severity, and type
Connection Testing: Verify PCE connectivity and credentials
Conversational AI: Enable AI-assisted interactions for specific security tasks
Offers containerized deployment of the Illumio MCP server with configuration options for environment variables, volume mounting, and integration with Claude Desktop.
Creates diagram visualizations for Illumio project planning and implementation timelines.
Provides an interface to interact with Illumio PCE (Policy Compute Engine), enabling programmatic management of workloads, labels, and traffic flow analysis in Illumio's zero-trust segmentation platform.
Generates visualizations and interactive components for Illumio data analysis, including application dependencies, traffic patterns, security assessments, and remediation planning.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Illumio MCP Servershow me traffic flows from the last 24 hours"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Clone the repository:
git clone https://github.com/alexgoller/illumio-mcp-server.git
cd illumio-mcp-serverInstall dependencies:
uv syncConfiguration
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 8080The 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-resourceUnauthenticated 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-httpThe server logs a prominent warning. Do NOT use in production.
Health endpoints (always unauthenticated)
GET /healthz— livenessGET /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 |
| PCE creds | Onboarding | PCE-side audit |
Per-user (default) |
| One PCE API key per authenticated user, encrypted in keystore | User registers via | PCE logs show the real human via per-user API key |
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
/setupstep)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-httpPer-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.dbThe 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):
Browser — visit
/setupafter authenticating; paste credentials in the form.MCP client — call the
register-pce-credentialstool; 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=readerTool-by-tool defaults:
Tool category | Roles allowed | Examples |
Reads | reader, operator, admin |
|
Writes | operator, admin |
|
Provisioning + bulk | admin |
|
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.dbAudit 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 minHow a client uses it
Call the mutating tool without a token → server returns:
{"error": "confirm_required", "params_hash": "<sha256>", "message": "..."}Call
POST /confirmwith 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}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.
Step-up auth (optional, recommended for production)
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 resultscreate-workload— Create an unmanaged workload with name, IP addresses, and labelsupdate-workload— Update an existing workload's propertiesdelete-workload— Remove a workload from PCE
Label Operations
get-labels— Retrieve labels with optional filtering by key, value, and max resultscreate-label— Create a new label with key-value pairupdate-label— Update an existing labeldelete-label— Remove a label
Ruleset & Rule Management
get-rulesets— Get rulesets with optional filtering by name, description, and enabled statuscreate-ruleset— Create a new ruleset with scopesupdate-ruleset— Update ruleset propertiesdelete-ruleset— Remove a rulesetcreate-deny-rule— Create a deny rule (regular or override deny) in a rulesetupdate-deny-rule— Update an existing deny ruledelete-deny-rule— Remove a deny rule
IP List Management
get-iplists— Get IP lists with optional filtering by name, description, FQDN, and max resultscreate-iplist— Create a new IP listupdate-iplist— Update an existing IP listdelete-iplist— Remove an IP list
Service Management
get-services— Get services with optional filtering by name, port, protocol, and max resultscreate-service— Create a new service definitionupdate-service— Update an existing servicedelete-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 moreget-traffic-flows-summary— Get aggregated traffic summaries grouped by app, env, port, and protocol
Automated Ringfencing
create-ringfence— Automated 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_consumerparameter):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) ornewly_allowed(filling a policy gap). Summary shows how many remote apps are already covered vs need new rules.skip_allowedparameter — set totrueto only create rules for traffic not yet covered by existing policy, producing minimal rulesets that fill gaps onlyMerge-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-services— Discover 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_patternfield ("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-policy— Provision 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-active— Compare 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-readiness— Assess 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-batch— Ringfence multiple apps at once. Optionally usesidentify-infrastructure-servicesto 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-status— Get 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-report— Generate 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-traffic— Find 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-paths— Detect 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-check— Check 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/ -vThe 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:
Essential rules — built-in, cannot be modified
Override Deny rules — block traffic overriding all allows (emergency use)
Allow rules — permit traffic (ringfence remote app rules go here)
Deny rules — block specific traffic (ringfence deny-all-inbound goes here)
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
Detailed view of application communication patterns and dependencies
Analysis of traffic patterns between different application tiers
Infrastructure Insights
Overview dashboard showing key infrastructure metrics and status
Detailed analysis of infrastructure service communications
Security Assessment
Comprehensive security analysis report
Security assessment findings for high-risk vulnerabilities
PCI compliance assessment findings
SWIFT compliance assessment findings
Remediation Planning
Overview of security remediation planning
Detailed steps for security remediation implementation
Policy Management
Management interface for IP lists
Overview of ruleset categories and organization
Configuration of application ruleset ordering
Workload Management
Detailed workload analysis and metrics
Identification and analysis of workload traffic patterns
Label Management
Organization of PCE labels by type and category
Service Analysis
Automatic inference of service roles based on traffic patterns
Analysis of top 5 traffic sources and destinations
Project Planning
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 ringfenceapplication_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 analyzeapplication_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

Step 2: Choose from installed MCP servers

Step 3: Fill in required prompt arguments:

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:latestYou can also use a specific version by replacing latest with a version number:
docker pull ghcr.io/alexgoller/illumio-mcp-server:1.0.0Run with Claude Desktop
To use the container with Claude Desktop, you'll need to:
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-secretAdd 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_USERNAMEwith your actual usernameCreate 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:latestDocker 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.envThen run:
docker-compose upContributing
Fork the repository
Create a feature branch
Commit your changes
Push to the branch
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 toolsadd-noteD
Add a new note
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| content | Yes |
TDQS
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.
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.
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.
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.
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.
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?
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the IP List | |
| description | No | Description of the IP List | |
| ip_ranges | Yes | List of IP ranges to include | |
| fqdn | No | Fully Qualified Domain Name (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the ruleset (e.g., 'RS-ELK'). Must be unique in the PCE. | |
| description | No | Description of the ruleset (optional) | |
| scopes | Yes | List 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. | |
| rules | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| ip_addresses | Yes | ||
| labels | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| href | No | Href of the IP List to delete | |
| name | No | Name of the IP List to delete (alternative to href) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | ||
| value | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| href | No | Href of the ruleset to delete | |
| name | No | Name of the ruleset to delete (alternative to href) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| event_type | No | Filter by event type (e.g., 'system_task.expire_service_account_api_keys') | |
| severity | No | Filter by event severity | |
| status | No | Filter by event status | |
| max_results | No | Maximum number of events to return |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter IP lists by name (optional) | |
| description | No | Filter by description (optional) | |
| ip_ranges | No | Filter by IP ranges (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter rulesets by name (optional) | |
| enabled | No | Filter by enabled/disabled status (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Filter services by name | |
| description | No | Filter services by description | |
| port | No | Filter services by port number | |
| proto | No | Filter services by protocol (e.g., tcp, udp) | |
| process_name | No | Filter services by process name |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Starting datetime (YYYY-MM-DD or timestamp) | |
| end_date | Yes | Ending datetime (YYYY-MM-DD or timestamp) | |
| include_sources | No | Sources to include (label/IP list/workload HREFs, FQDNs, IPs) | |
| exclude_sources | No | Sources to exclude (label/IP list/workload HREFs, FQDNs, IPs) | |
| include_destinations | No | Destinations to include (label/IP list/workload HREFs, FQDNs, IPs) | |
| exclude_destinations | No | Destinations to exclude (label/IP list/workload HREFs, FQDNs, IPs) | |
| include_services | No | ||
| exclude_services | No | ||
| policy_decisions | No | ||
| exclude_workloads_from_ip_list_query | No | ||
| max_results | No | ||
| query_name | No |
TDQS
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.
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.
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.
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.
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.
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 : '
| Name | Required | Description | Default |
|---|---|---|---|
| start_date | Yes | Starting datetime (YYYY-MM-DD or timestamp) | |
| end_date | Yes | Ending datetime (YYYY-MM-DD or timestamp) | |
| include_sources | No | Sources 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_sources | No | Sources 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_destinations | No | Destinations 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_destinations | No | Destinations 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_services | No | ||
| exclude_services | No | ||
| policy_decisions | No | ||
| exclude_workloads_from_ip_list_query | No | ||
| max_results | No | ||
| query_name | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| href | No | Href of the IP List to update | |
| name | No | Name of the IP List to update (alternative to href) | |
| description | No | New description for the IP List (optional) | |
| ip_ranges | No | New list of IP ranges | |
| fqdn | No | New Fully Qualified Domain Name (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| href | No | Label href (e.g., /orgs/1/labels/42). Either href or both key and value must be provided to identify the label. | |
| key | No | Label type (e.g., role, app, env, loc) | |
| value | No | Current value of the label | |
| new_value | No | New value for the label |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| href | No | Href of the ruleset to update | |
| name | No | Name of the ruleset to update (alternative to href) | |
| description | No | New description for the ruleset | |
| enabled | No | Whether the ruleset is enabled | |
| scopes | No | New scopes for the ruleset |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| ip_addresses | Yes | ||
| labels | No |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
A Model Context Protocol server for Wix AI tools
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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.
- FlicenseNot gradedqualityDmaintenanceA 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.
- AlicenseNot gradedqualityDmaintenanceModel Context Protocol server that connects AI agents with CrowdStrike Falcon platform for intelligent security analysis and automation.MIT
- AlicenseNot gradedqualityDmaintenanceA 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.2Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/alexgoller/illumio-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server