Skip to main content
Glama
JaxonDigital

Optimizely DXP MCP Server

by JaxonDigital

Optimizely DXP MCP Server

npm version License: MIT Downloads

🎉 What's New in v3.46

Major improvements since September 2024:

  • ⚡ 3-10x Faster Operations: PowerShell fully removed, direct REST API with HMAC-SHA256 authentication

  • 🔷 TypeScript Migration: Complete codebase conversion with strict mode compliance (479 errors fixed)

  • 📊 Streaming Log Analysis: New analyze_logs_streaming tool - 2x faster than download+analyze

  • 🔄 45 Tools: Expanded from 38 tools with unified naming and complete automation support

  • 🤖 24 Tools with structuredContent: Perfect for automation platforms (n8n, Zapier, Make.com)

  • 🔴 Redis Integration: Optional caching with circuit breaker and reconnection logic

  • 📡 MCP Resources: Real-time deployment monitoring via event subscription

  • 🔀 Dual Transport Modes: stdio for Claude Desktop, HTTP for automation platforms (n8n, Zapier, Docker)

  • 🎯 Zero Dependencies: No PowerShell, no Python, no external tools - just npm install

Related MCP server: Dokploy MCP Server

🤔 The Problem

You invested in enterprise DXP, but you're only using 10% of its power.

You chose Optimizely to deliver exceptional digital experiences, but:

  • Your team spends more time on DevOps tasks than building features

  • Critical issues hide in logs until customers complain

  • Deployments are scary, manual, multi-step processes

  • Setting up dev environments takes hours or days

  • You can't move fast enough to beat competitors embracing AI

Meanwhile, AI is revolutionizing how software gets built and managed. Companies using AI-powered automation are shipping 10x faster, finding issues before customers do, and freeing their teams to focus on innovation.

✨ The Solution

Your infinite DevOps workforce - AI that never sleeps, never breaks, always delivers.

This MCP server transforms your Optimizely DXP into an AI-powered platform that goes far beyond replacing Google searches. Just as Optimizely Opal provides an infinite workforce for marketing, this MCP creates your infinite workforce for DXP operations:

  • AI Specialists that understand your infrastructure, deployments, and data

  • Intelligent Agents that handle complex multi-step workflows autonomously

  • 24/7 Operations that scale infinitely without adding headcount

  • Your team elevated from operators to innovators

Finally get the ROI your DXP investment promised - ship faster, break less, sleep better.

🚀 The Transformation

From DXP operator to digital experience innovator:

  • Ship 10x faster - What took hours now takes seconds

  • Zero-downtime deployments - AI handles the complexity

  • Proactive issue resolution - Fix problems before customers notice

  • Instant dev environments - Full production replicas in minutes

  • Competitive advantage - Move at AI speed while others click through portals

  • Maximum DXP ROI - Finally use all those powerful features you're paying for

🔌 What is MCP?

Model Context Protocol (MCP) is the bridge between AI's intelligence and your DXP's capabilities.

While others use AI just to search documentation or write code snippets, MCP enables something revolutionary: AI that takes action. This isn't about better search results - it's about AI that can:

  • Execute complex operations autonomously

  • Orchestrate multi-step workflows across environments

  • Monitor systems and self-heal issues

  • Learn from your infrastructure to make smarter decisions

  • Scale infinitely without human bottlenecks

Think of it as evolving from "AI as advisor" to "AI as workforce" - the difference between asking for directions and having a chauffeur.

🌟 Key Features & Capabilities

Zero Dependencies Architecture

Direct REST API - No External Tools Required

  • HMAC-SHA256 authentication: Secure, standards-based API access

  • No PowerShell: Completely removed in v3.44 - never needed again

  • No Python: All JavaScript/TypeScript with Node.js runtime

  • Cross-platform: Identical behavior on macOS, Linux, and Windows

  • Dual transport modes: stdio for Claude Desktop, HTTP for automation platforms

  • Single install: Just npm install - that's it!

Performance Improvements:

  • Deployment operations: 3-10x faster vs PowerShell

  • Database exports: 5x faster

  • Log downloads: 3x faster

AI-Powered Operations (45 Tools)

Comprehensive DXP Management:

1. Deployment Management

  • Autonomous deployment with health monitoring

  • Rollback and reset capabilities

  • Content sync between environments

  • Real-time progress tracking with ETAs

  • MCP Resources subscription for live events

2. Log Analysis & Intelligence

  • Streaming analysis (2x faster than download+analyze)

  • Compare logs tool for deployment decisions

  • AI agent detection and pattern recognition

  • Performance metrics and error analysis

  • Structured output for automation workflows

3. Database Operations

  • Interactive export workflow with smart monitoring

  • Automated backup downloads

  • Export status tracking

  • Background downloads with progress updates

4. Storage Management

  • Incremental blob downloads (only changed files)

  • Manifest tracking for efficiency

  • Pattern-based filtering (*.pdf, *.jpg, etc.)

  • 5x faster with parallel downloads

5. Real-Time Monitoring

  • MCP Resources subscription for deployment events

  • Webhook notifications for external automation

  • Health checks and connection testing

  • Environment access verification

Enterprise-Ready Architecture

Built for Scale and Reliability:

  • Redis Integration (Optional)

    • Circuit breaker pattern for automatic fallback

    • Reconnection logic with exponential backoff

    • Caching layer for repeated queries

    • 12 integration tests covering all scenarios

  • Rate Limiting & Retry

    • Automatic retry with exponential backoff

    • HTTP 429 (rate limit) handling

    • Respects Retry-After headers

  • Event System

    • MCP Resources for real-time updates

    • Webhook-ready for external integration

    • Event streaming without polling

  • Type Safety

    • Full TypeScript with strict mode

    • 479 type errors fixed across codebase

    • Better IDE support and auto-completion

Automation Platform Support

Native Integration with Workflow Tools:

  • HTTP Transport Mode: Dual-mode operation (stdio for Claude, HTTP for automation)

  • 24 Tools with structuredContent: Native MCP field for structured data

  • Direct Property Access: No JSON.parse() needed - response.structuredContent.data.deploymentId

  • Platform Support: n8n, Zapier, Make.com, custom workflows

  • Webhook-Ready: Event system for external automation

See N8N_INTEGRATION.md for automation platform setup.

🔀 Transport Modes

The MCP server supports two transport modes for different deployment scenarios:

stdio Mode (Default)

Best for: Claude Desktop, local AI clients, single-user development

Characteristics:

  • Process-to-process communication via stdin/stdout

  • No network ports required

  • Automatically started by Claude Desktop

  • Lowest latency and most secure (no network exposure)

  • Ideal for local development and desktop AI applications

Setup:

{
  "mcpServers": {
    "optimizely-dxp": {
      "command": "npx",
      "args": ["-y", "@jaxon-digital/optimizely-dxp-mcp"],
      "env": {
        "OPTIMIZELY_PROJECT_ID": "your-id",
        "OPTIMIZELY_PROJECT_KEY": "your-key",
        "OPTIMIZELY_PROJECT_SECRET": "your-secret"
      }
    }
  }
}

No additional configuration needed - stdio is the default mode.


HTTP Mode

Best for: n8n, Zapier, Make.com, Docker, remote access, multi-tenant platforms

Characteristics:

  • RESTful HTTP server with JSON-RPC 2.0

  • MCP endpoint: POST /mcp

  • Health check: GET /health

  • Supports concurrent remote connections

  • Production-ready with graceful shutdown

Setup:

# Start HTTP server
DXP_MCP_MODE=http DXP_MCP_PORT=3001 npm start

# Or with Docker
docker run -p 3001:3001 \
  -e DXP_MCP_MODE=http \
  -e OPTIMIZELY_PROJECT_ID=your-id \
  -e OPTIMIZELY_PROJECT_KEY=your-key \
  -e OPTIMIZELY_PROJECT_SECRET=your-secret \
  jaxon-digital/optimizely-dxp-mcp

Configuration:

Variable

Default

Description

DXP_MCP_MODE

stdio

Set to http to enable HTTP mode

DXP_MCP_PORT

3001

HTTP server port (1-65535)

DXP_MCP_HOST

0.0.0.0

Bind address (localhost for local only, 0.0.0.0 for Docker/remote)

Health Check:

curl http://localhost:3001/health
# Returns: {"status":"ok","service":"optimizely-dxp-mcp","version":"3.46.0"}

Decision Guide

Scenario

Mode

Why

Claude Desktop usage

stdio

Default, fastest, most secure

n8n workflow automation

http

REST API, remote access

Zapier/Make.com integration

http

Webhook support, structured data

Docker deployment

http

Network connectivity, multiple clients

Local development (single user)

stdio

Simplest setup, no ports needed

Multi-tenant SaaS platform

http

Concurrent connections, load balancing

Remote server deployment

http

Network accessibility required

All 45 tools work identically in both modes - only the transport layer changes.

📋 Complete Tool Reference (45 Tools)

Permission & Access Management (4 tools)

  • test_connection - Validate setup and show capabilities

  • check_permissions - Detailed environment access breakdown

  • verify_access - Confirm specific environment access

  • health_check - System status with structured health data

Deployments & Content Sync (10 tools)

  • list_deployments - Show deployment history with filters

  • start_deployment - Initiate code deployment

  • monitor_deployment - Real-time progress with auto-refresh

  • complete_deployment - Finish verification state

  • reset_deployment - Rollback if needed

  • get_deployment_status - Current status with wait-then-check support

  • copy_content - Sync content between environments

  • list_content_copies - Show content copy history

Database Management (4 tools)

  • export_database - Interactive workflow with smart monitoring

  • check_export_status - Progress tracking with auto-download flag

  • download_database_export - Get export file with background progress

  • list_recent_exports - Export history and monitoring

Log Analysis & Downloads (6 tools)

  • analyze_logs_streaming - NEW: Stream and analyze in-memory (2x faster)

  • compare_logs - NEW: Side-by-side comparison for deployment decisions

  • download_logs - Download with manifest tracking (incremental)

  • list_log_containers - Show available log containers

  • discover_logs - Find logs by date range and type

  • check_download_status - Progress tracking for active downloads

Storage Management (5 tools)

  • list_storage_containers - Show blob containers with structured data

  • download_blobs - Incremental downloads (only changed files, 5x faster with parallel)

  • generate_storage_sas_link - Create temporary access URLs

  • list_download_history - Show completed downloads with manifests

Multi-Project Management (3 tools)

  • list_projects - Show all configured projects

  • switch_project - Change active project context

  • current_project - Display active project info

Configuration & Utilities (6 tools)

  • get_ai_guidance - Context-aware best practices

  • get_version - Version info with update checks

  • get_download_paths - Show download configuration

  • set_download_path - Configure paths by type

  • list_active_downloads - Progress for all background downloads

  • cancel_download - Stop background download

Advanced Features (7 tools)

  • get_rate_limit_status - Show API quota and limits

  • get_cache_status - Redis cache statistics (if enabled)

  • monitor_project_upgrades - Track DXP CMS version updates

  • enable_http_logs - Configure HTTP log streaming

  • disable_http_logs - Disable HTTP log streaming

  • get_tool_availability - Show which tools work in current context

  • subscribe_deployment_events - NEW: MCP Resources for real-time updates

Total: 45 tools organized in 8 categories

🎯 Performance Benchmarks

REST API vs PowerShell (v3.44+)

Operation

PowerShell

REST API

Improvement

Start Deployment

8-12s

1-2s

5-10x faster

Database Export

10-15s

2-3s

5x faster

Log Download

6-9s

2-3s

3x faster

Environment List

4-6s

0.5-1s

6-8x faster

Streaming vs Download+Analyze

Operation

Download+Analyze

Streaming

Improvement

Last Hour Logs

30-45s

15-20s

2x faster

Memory Usage

High (full download)

Low (streaming)

4-6x less

Disk I/O

Heavy (write + read)

None (memory only)

Eliminated

Automation Ready

Post-processing needed

Structured output

Immediate

Parallel Downloads

Files

Sequential

Parallel

Improvement

100 blobs

250s

50s

5x faster

500 blobs

1250s

260s

5x faster

Log archives

180s

45s

4x faster

⚠️ IMPORTANT: No Manual Startup Required

DO NOT run npm start or node index.js - The MCP is NOT a traditional server!

❌ What NOT to Do

  • DO NOT run npm start - The MCP is not a standalone server

  • DO NOT run node dist/index.js directly - Claude handles execution automatically

  • DO NOT keep a terminal window open - The MCP runs on-demand

  • DO NOT look for a running process - It starts and stops as needed

✅ How MCP Actually Works

  1. Claude automatically starts the MCP when you open a conversation

  2. The MCP runs as a subprocess managed entirely by Claude

  3. It starts and stops automatically based on your usage

  4. No manual intervention required - just use Claude normally

🎯 Correct Installation & Usage

# ONE-TIME SETUP:
# Option 1: Configure to use npx (always latest)
# Add to Claude's config - no install needed!

# Option 2: Global install for faster startup
npm install -g @jaxon-digital/optimizely-dxp-mcp

# THEN: Just use Claude! The MCP starts automatically

That's it! Configure once in Claude's settings, then forget about it. The MCP runs invisibly in the background whenever Claude needs it.

🛠️ System Requirements

Minimal Requirements - Zero External Dependencies:

  • Node.js 18+ (LTS recommended) - Download

  • Optimizely DXP Project with API credentials

  • That's it! No PowerShell, no Python, no external tools

Supported Platforms:

  • ✅ macOS (Intel & Apple Silicon)

  • ✅ Linux (Ubuntu, Debian, RHEL, etc.)

  • ✅ Windows 10/11 (no PowerShell needed!)

Optional Enhancements:

  • Redis (optional) - For caching and performance boost

  • Docker (optional) - For containerized deployment with automation platforms

🚀 Quick Start

Installation

No installation needed! Configure Claude to use npx:

{
  "mcpServers": {
    "optimizely-dxp": {
      "command": "npx",
      "args": [
        "-y",
        "@jaxon-digital/optimizely-dxp-mcp"
      ],
      "env": {
        "OPTIMIZELY_PROJECT_ID": "your-project-id",
        "OPTIMIZELY_PROJECT_KEY": "your-key",
        "OPTIMIZELY_PROJECT_SECRET": "your-secret"
      }
    }
  }
}

Option 2: Global Install (Faster Startup)

npm install -g @jaxon-digital/optimizely-dxp-mcp

Then configure Claude:

{
  "mcpServers": {
    "optimizely-dxp": {
      "command": "jaxon-optimizely-dxp-mcp",
      "env": {
        "OPTIMIZELY_PROJECT_ID": "your-project-id",
        "OPTIMIZELY_PROJECT_KEY": "your-key",
        "OPTIMIZELY_PROJECT_SECRET": "your-secret"
      }
    }
  }
}

Configuration

Single Project Setup

Using Environment Variables:

export OPTIMIZELY_PROJECT_ID="12345678-1234-1234-1234-123456789012"
export OPTIMIZELY_PROJECT_KEY="your_api_key"
export OPTIMIZELY_PROJECT_SECRET="your_api_secret"

In Claude's config.json:

{
  "env": {
    "OPTIMIZELY_PROJECT_ID": "12345678-1234-1234-1234-123456789012",
    "OPTIMIZELY_PROJECT_KEY": "your_api_key",
    "OPTIMIZELY_PROJECT_SECRET": "your_api_secret"
  }
}

Multi-Project / Multi-Tenant Setup

For agencies managing multiple clients:

export CLIENT1="id=uuid1;key=key1;secret=secret1;logPath=/logs/client1;dbPath=/db/client1"
export CLIENT2="id=uuid2;key=key2;secret=secret2;logPath=/logs/client2;dbPath=/db/client2"

Then use:

"switch to CLIENT2"
"list projects"
"show current project"

See MULTI_PROJECT_CONFIG.md for complete guide.

Advanced Configuration

Redis Integration (Optional):

export REDIS_HOST="localhost"
export REDIS_PORT="6379"
export REDIS_PASSWORD="optional"
export REDIS_ENABLED="true"

HTTP Transport for Automation Platforms:

export DXP_MCP_MODE="http"
export DXP_MCP_PORT="3001"
export DXP_MCP_HOST="0.0.0.0"

Download Path Configuration (7-level priority):

  1. Command parameter: downloadPath=/custom/path

  2. Compact field: PROJECT="...;logPath=/path"

  3. Project + type: OPTIMIZELY_PROJECT_DOWNLOAD_PATH_LOGS=/path

  4. Project-specific: OPTIMIZELY_PROJECT_DOWNLOAD_PATH=/path

  5. Type-specific: OPTIMIZELY_DOWNLOAD_PATH_LOGS=/path

  6. Global: OPTIMIZELY_DOWNLOAD_PATH=/path

  7. Smart OS defaults: ~/Downloads/optimizely-mcp/

🛠️ AI-Enabled Solutions

Empower AI to handle your entire DXP lifecycle - from development to production:

1️⃣ Permission & Access Management

# Know exactly what your AI can do
"test connection"                          # Validates setup & shows capabilities
"check permissions"                        # Detailed environment access breakdown
"verify access to production"              # Confirm specific environment access

2️⃣ Deployments & Content Sync

# Deploy code and sync content between environments
"start deployment to production"           # Code deployment from preproduction
"start deployment from int to prep"        # Explicit source and target
"copy content from prod to integration"    # Content sync (downward)
"reset deployment in production"           # Rollback if needed
"complete deployment"                      # Finish verification state

3️⃣ Real-Time Monitoring & Status

# Track everything happening in your DXP
"show deployment dashboard"                # Visual progress with ETAs
"check production status"                  # Environment health check
"monitor current deployments"              # Live updates with auto-refresh
"list recent deployments"                  # History and patterns

4️⃣ Development Environment Setup

# Get production-quality data for local development
"export production database"               # Interactive workflow with smart monitoring
"check database export status"             # Check progress of running exports
"download latest database backup"          # Get most recent backup file
"download production blobs"                # Smart incremental - only changed files
"download blobs with filter *.pdf"         # Selective downloads with patterns
"download blobs force full"                # Bypass incremental, get everything
# AI tracks what you've downloaded to save bandwidth

5️⃣ Log Analysis & Downloads

# ⚡ NEW: Stream and analyze logs in-memory (2x faster than download + analyze)
"analyze logs from last hour"             # Streaming analysis with structured output
"analyze application logs last 30 min"    # Console logs for errors and patterns
"analyze web logs from production"        # HTTP logs with performance metrics
"compare logs before and after deploy"    # Side-by-side comparison tool

# Traditional downloads with manifest tracking
"download logs from last 7 days"          # Incremental - skips unchanged logs
"download web logs"                       # HTTP/IIS logs with manifest tracking
"download application logs"               # App logs for external analysis
"download all logs"                       # All available log types
# Generates manifest files for external log analyzer tools

6️⃣ Multi-Project Management

# Perfect for agencies managing multiple clients
"switch to CLIENT2"                        # Instantly switch between projects
"list projects"                            # See all configured clients
"show current project"                     # Display active project details

7️⃣ Automation & Integration

# Real-time events and automation workflows
"subscribe to deployment events"           # MCP Resources for live updates
"generate SAS link for container"          # Temporary blob access URLs
"check rate limit status"                  # API quota and usage
"check cache status"                       # Redis statistics (if enabled)

🔄 Automation & Integration

HTTP Transport Mode

For n8n, Zapier, Make.com, and custom workflows:

# Start in HTTP mode
DXP_MCP_MODE=http DXP_MCP_PORT=3001 node dist/index.js

# Or with Docker
docker run -p 3001:3001 \
  -e DXP_MCP_MODE=http \
  -e OPTIMIZELY_PROJECT_ID=your-id \
  -e OPTIMIZELY_PROJECT_KEY=your-key \
  -e OPTIMIZELY_PROJECT_SECRET=your-secret \
  jaxon-digital/optimizely-dxp-mcp

Health Check:

curl http://localhost:3001/health

Structured Data Support

24 tools with native structuredContent field:

// Example: Start deployment
{
  "content": [
    {
      "type": "text",
      "text": "✅ Deployment started to Production..."
    }
  ],
  "structuredContent": {
    "success": true,
    "data": {
      "deploymentId": "c88fa98f-9d3c-4e91-8f77-5a7f3e2d1b0a",
      "status": "InProgress",
      "environment": "Production",
      "previewUrl": "https://..."
    }
  }
}

Direct property access in workflows:

// n8n, Zapier, Make.com
const deploymentId = response.structuredContent.data.deploymentId;
const status = response.structuredContent.data.status;
// No JSON.parse() needed!

Supported Tools:

  • All deployment tools (list, start, monitor, complete, reset, status)

  • Database operations (export, status, download, list)

  • Log operations (download, status, streaming analysis)

  • Storage operations (list containers, generate SAS, download blobs)

  • Download management (status, active downloads, history)

  • Project management (list, switch, current)

  • System utilities (test connection, health check, version, rate limits)

Webhook Integration

For external automation:

# Subscribe to deployment events
"subscribe to deployment events"

# Events are pushed to external systems:
# - Deployment started
# - Deployment progress updates
# - Deployment completed/failed
# - Content sync completed
# - Database export ready

See N8N_INTEGRATION.md for complete automation setup guide.

📚 Documentation

📊 Structured Logging

DXP MCP uses structured JSON logging for production observability. All operations log machine-parseable JSON to stdout.

Log Format

Each log entry is a single-line JSON object:

{
  "timestamp": "2025-11-09T12:00:00.123Z",
  "level": "info",
  "message": "Deployment initiated",
  "correlation_id": "1699564800000-abc123xyz",
  "tool": "start_deployment",
  "environment": "production",
  "deployment_id": "12345"
}

Standard Fields:

  • timestamp - ISO 8601 timestamp with milliseconds

  • level - Log level (debug, info, warn, error)

  • message - Human-readable message

  • correlation_id - Links related operations together

  • Additional metadata fields vary by operation

Log Levels

  • debug - API requests, detailed progress, internal operations

  • info - Significant events (deployment started, export complete)

  • warn - Recoverable issues (retries, fallbacks)

  • error - Failures requiring attention

Querying Logs

CloudWatch Logs Insights:

# Find all deployments in last hour
fields @timestamp, message, deployment_id, environment
| filter level = "info" and tool = "start_deployment"
| sort @timestamp desc

# Track specific deployment by correlation ID
fields @timestamp, message, duration_ms
| filter correlation_id = "1699564800000-abc123xyz"
| sort @timestamp asc

# Find slow operations (>5 seconds)
fields @timestamp, message, duration_ms, tool
| filter duration_ms > 5000
| sort duration_ms desc

Datadog:

# Find errors in production deployments
level:error tool:start_deployment environment:production

# Track deployment flow
correlation_id:"1699564800000-abc123xyz"

# Performance analysis
@duration_ms:>5000

Splunk:

# Find all deployment errors
index=dxp_mcp level=error tool=start_deployment

# Average deployment duration
index=dxp_mcp tool=start_deployment duration_ms=*
| stats avg(duration_ms) by environment

# Correlation ID trace
index=dxp_mcp correlation_id="1699564800000-abc123xyz"
| sort _time

Correlation IDs

All related operations share a correlation ID. Example flow:

  1. start_deployment - correlation_id: 12345-abc

  2. monitor_deployment - correlation_id: 12345-abc (same)

  3. complete_deployment - correlation_id: 12345-abc (same)

Query by correlation ID to see full deployment lifecycle.

Developer Guide

When adding logging to a new tool:

const { StructuredLogger } = require('../structured-logger');

// Create logger with tool context
const logger = new StructuredLogger({
  context: { tool: 'your_tool_name' }
});

// Log significant events
logger.info('Operation started', {
  key1: value1,
  key2: value2
});

// Log API calls
logger.logAPIRequest('POST', '/api/endpoint', { body: requestBody });
logger.logAPIResponse('/api/endpoint', response.status, duration);

// Log errors
logger.error('Operation failed', {
  error: error.message,
  stack: error.stack
});

// Track duration
logger.startTimer('operation_name');
// ... do work ...
logger.endTimer('operation_name', { result_count: 10 });

Security

Headers are automatically sanitized to remove:

  • Authorization tokens

  • API keys

  • Authentication credentials

Logs are safe to aggregate and store without exposing secrets.

🔍 Audit Trail

DXP MCP maintains an immutable audit trail of all tool invocations for compliance and observability.

What is Audited

Every tool invocation is logged with:

  • Timestamp - When the operation occurred

  • Tool name - Which tool was invoked

  • Parameters - Input arguments (sanitized to remove secrets)

  • Result - Operation outcome (success/error)

  • Duration - How long the operation took

  • Metadata - Additional context (environment, project, etc.)

Example audit entry:

{
  "timestamp": "2025-11-09T12:00:00.123Z",
  "operation": "start_deployment",
  "operation_type": "deployment",
  "status": "success",
  "user": { "id": "user-123" },
  "environment": { "project_id": "proj-456", "slot": "production" },
  "request": {
    "tool": "start_deployment",
    "parameters": { "sourceEnvironment": "integration", "targetEnvironment": "production" },
    "correlation_id": "12345-abc"
  },
  "response": {
    "result": "success",
    "duration_ms": 1250
  }
}

Storage Location

Audit logs are stored in ./audit-logs/ as JSON Lines files:

audit-logs/
├── audit-2025-11-09.jsonl
├── audit-2025-11-08.jsonl
└── audit-2025-11-07.jsonl

Each line is a complete JSON object for easy parsing.

Querying Audit Logs

Via MCP Tool:

// Get all deployments in last 24 hours
query_audit_log({
  tool_name: "start_deployment",
  start_time: "2025-11-08T12:00:00Z",
  end_time: "2025-11-09T12:00:00Z"
})

// Get failed operations
query_audit_log({
  status: "failure",
  limit: 50
})

Via Command Line:

# View all audit logs
cat audit-logs/audit-*.jsonl | jq

# Filter by tool
cat audit-logs/audit-*.jsonl | jq 'select(.operation=="start_deployment")'

# Find errors
cat audit-logs/audit-*.jsonl | jq 'select(.status=="failure")'

# Count operations by tool
cat audit-logs/audit-*.jsonl | jq -r '.operation' | sort | uniq -c

Retention Policy

Recommended retention periods:

  • Active logs: Keep 90 days online for queries

  • Archive: Move logs older than 90 days to cold storage (S3, tape)

  • Compliance: Retain 7 years for regulated industries (finance, healthcare)

  • Deletion: After retention period, securely delete per policy

Example archival script:

#!/bin/bash
# Archive audit logs older than 90 days

find ./audit-logs -name "audit-*.jsonl" -mtime +90 -exec mv {} ./archive/ \;

GDPR and Compliance

PII Handling:

  • Audit logs may contain user identifiers (email, username)

  • Support data subject access requests (query by user_id)

  • Support right to erasure (delete user's audit entries if required)

Data Sanitization:

  • Passwords, API keys, tokens automatically redacted

  • Field names containing "password", "secret", "token" are redacted

  • Authorization headers removed from API request logs

Compliance Features:

  • Immutable append-only logs (cannot modify/delete individual entries)

  • Timestamp integrity (ISO 8601 with milliseconds)

  • Unique correlation IDs for request tracking

  • Version tracking (MCP server version in each entry)

Configuration

Environment Variables:

# Disable audit logging (development only)
DXP_AUDIT_ENABLED=false

# Custom audit directory
DXP_AUDIT_DIR=/var/log/dxp-mcp

# Custom audit retention days (for automated cleanup)
DXP_AUDIT_RETENTION_DAYS=90

Security

  • Audit logs stored locally (not sent to external services)

  • File permissions: 600 (owner read/write only)

  • Directory permissions: 700 (owner access only)

  • Sensitive data automatically sanitized before logging

Monitoring

Key metrics to track:

  • Total tool invocations per day

  • Error rate by tool (errors / total invocations)

  • Average duration by tool

  • Failed authentication attempts

Example monitoring query:

# Daily summary report
cat audit-logs/audit-$(date +%Y-%m-%d).jsonl | jq -s '
  group_by(.operation) |
  map({
    tool: .[0].operation,
    total: length,
    errors: map(select(.status == "failure")) | length,
    avg_duration: (map(.response.duration_ms) | add / length)
  })
'

🔄 Migration from v3.3x

Major changes in v3.44-v3.46:

Breaking Changes

  1. Tool Renames (v3.42):

    • Database tools: db_export* prefix (was export_database*)

    • Download tools: download_* prefix (was get_*)

  2. PowerShell Removed (v3.44):

    • No action needed - automatic migration to REST API

    • 3-10x performance improvement

    • Identical functionality

  3. Deprecated Tools Removed:

    • download_media, download_assets → use download_blobs

    • Old database tool names → use db_export* versions

Migration Steps

If upgrading from v3.3x:

  1. Update to latest version:

    npm update -g @jaxon-digital/optimizely-dxp-mcp
  2. No configuration changes needed - credentials and environment variables work the same

  3. Test connection:

    "test connection"
  4. Update any scripts that reference old tool names (see API Reference)

Benefits:

  • 3-10x faster operations (REST API vs PowerShell)

  • 2x faster log analysis (streaming)

  • 45 tools (up from 38)

  • 24 tools with automation support

  • Zero dependencies - no PowerShell needed

🤝 Support & Community

Getting Help

Troubleshooting

Common Issues:

  1. "Cannot find module"

    • Run npm run build to generate dist/ folder

    • Verify dist/index.js exists

  2. "Connection failed"

    • Check credentials are correct

    • Verify project has API access enabled

    • Run test connection to diagnose

  3. "Rate limited (429)"

    • Automatic retry with exponential backoff handles this

    • Check get rate limit status for quota

  4. HTTP mode issues

    • Verify port 3001 is available

    • Check DXP_MCP_MODE=http is set

    • Test with curl http://localhost:3001/health

See N8N_INTEGRATION.md troubleshooting section for automation platform issues.

🛠️ Development

Building from Source

This project uses TypeScript and requires building before running:

# Clone the repository
git clone https://github.com/JaxonDigital/optimizely-dxp-mcp-private.git
cd optimizely-dxp-mcp-private

# Install dependencies
npm install

# Build TypeScript → JavaScript (REQUIRED after any code changes)
npm run build

# Run tests
npm test

Important: The TypeScript source files in lib/ and src/ are compiled to JavaScript in dist/. After editing any .ts files, you MUST run npm run build before testing changes.

Build Output:

  • dist/index.js - Main entry point (bundled with esbuild)

  • dist/lib/**/*.js - Compiled library modules

  • Build happens automatically on npm install (via prepare hook)

  • Build happens automatically before npm publish (via prepublishOnly hook)

Testing Changes Locally

# Build after making changes
npm run build

# Run CI test suite (fast - 15 tests)
npm test

# Run full test suite (comprehensive)
npm run test:full

# Run specific test suites
npm run test:logger      # Structured logger tests
npm run test:security    # Security helper tests
npm run test:projects    # Multi-project resolution tests

Development Workflow

  1. Make changes to TypeScript files in lib/ or src/

  2. Run npm run build to compile

  3. Run npm test to verify

  4. Create PR when tests pass

Project Structure

lib/                    # TypeScript source files
├── tools/             # MCP tool implementations
├── *.ts               # Core modules (telemetry, config, etc.)
src/
├── index.ts           # Main MCP server entry point
dist/                  # Compiled JavaScript (gitignored)
├── index.js           # Bundled server (esbuild output)
├── lib/               # Compiled modules
tests/                 # Test files
├── ci-test.js         # Fast CI test suite
├── test-suite.js      # Comprehensive tests

📜 License

MIT License - see LICENSE file for details.

🙏 Acknowledgments

Built with:


Made with ❤️ by Jaxon Digital

Transforming Optimizely DXP from platform to AI-powered workforce

Available Tools

42 tools
analyze_logs_streamingA

📊 Stream and analyze logs directly without downloading. FAST: 15-30sec vs 40-60sec for download+analyze. Returns structured health data: error count, performance metrics (p95/p99 response times), AI agent detection. Use this for deployment verification, health checks, or real-time diagnostics. Set slot=true when analyzing deployment slots. Required: environment. Optional: minutesBack (default 60), logType (http/application/all), slot. Returns health score, errors, performance, recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoEnvironment to analyze. Default: ProductionProduction
logTypeNoLog type: "application" for console logs, "web" for HTTP logs, "all" for both (DXP-114). Default: webweb
minutesBackNoAnalyze logs from last N minutes. Default: 60 (1 hour)
startDateTimeNoISO 8601 start datetime (alternative to minutesBack)
endDateTimeNoISO 8601 end datetime (alternative to minutesBack)
slotNoAnalyze deployment slot logs instead of production logs. Default: false (production logs only, excluding /SLOTS/ paths). Set to true for slot logs during warmup (DXP-116)
structuredContentNoReturn guaranteed structured JSON (recommended for automation). All fields always present with null/0/[] for missing data. Default: true
debugNoInclude debug information in response (container selection, blob dates, pagination details). Useful for troubleshooting. Default: false (DXP-118)
timeoutSecondsNoMaximum time in seconds to wait for analysis. Default: 300s (5 min) for <3 days, 600s (10 min) for larger ranges. Increase for very large time ranges (7+ days). (DXP-188)
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It reveals performance characteristics ('FAST: 15-30sec vs 40-60sec'), output structure ('Returns structured health data'), and specific behavioral guidance about deployment slots. It also mentions the return format and what data to expect, though it could provide more detail about error handling or rate limits.

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

Conciseness5/5

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

The description is efficiently structured with front-loaded key information, uses emoji for visual emphasis, and every sentence adds value. It's appropriately sized for a complex tool with 13 parameters, providing essential information without unnecessary elaboration.

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

Completeness4/5

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

For a tool with 13 parameters, no annotations, and no output schema, the description does a good job covering the essentials: purpose, usage scenarios, key parameters, and return format. However, given the complexity and lack of structured output documentation, it could benefit from more detail about the exact structure of returned health data or error conditions.

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

Parameters4/5

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

The description adds meaningful context beyond the 69% schema coverage by explaining the purpose of key parameters ('Required: environment. Optional: minutesBack (default 60), logType (http/application/all), slot') and providing practical guidance about when to use them. It clarifies the slot parameter's purpose and mentions the default for minutesBack, though it doesn't cover all 13 parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('stream and analyze logs directly without downloading') and distinguishes it from download-based alternatives by highlighting speed advantages. It identifies the resource (logs) and the key benefit (fast streaming analysis vs. download+analyze).

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

Usage Guidelines4/5

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

The description provides clear usage contexts ('deployment verification, health checks, or real-time diagnostics') and includes specific guidance about when to use certain parameters ('Set slot=true when analyzing deployment slots'). However, it doesn't explicitly contrast this tool with sibling alternatives like 'download_logs' or 'discover_logs', which would be needed for a perfect score.

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

compare_logsA

🔍 Compare baseline vs slot logs to make deployment decisions. ANALYSIS: <5s. Takes output from two analyze_logs_streaming() calls (baseline=production, slot=deployment slot). Returns safety recommendation (proceed/investigate/abort) with detailed reasoning based on error rate changes, performance degradation, and health score delta. Use in deployment workflow: analyze baseline → deploy → analyze slot → compare → decide to complete or reset. Required: baseline, slot objects. Returns decision and supporting metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
baselineYesBaseline log analysis (from analyze_logs_streaming)
slotYesSlot log analysis (from analyze_logs_streaming)
thresholdsNoThreshold overrides. Defaults: 50% error increase, 20 point score drop, 100ms latency increase

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: execution time ('ANALYSIS: <5s'), input requirements ('Takes output from two analyze_logs_streaming() calls'), return values ('Returns safety recommendation... with detailed reasoning'), and decision criteria ('based on error rate changes, performance degradation, and health score delta'). It doesn't mention error handling or rate limits, but covers most essential behavioral aspects.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by key behavioral details. Some sentences could be more concise (e.g., 'Required: baseline, slot objects' is redundant with schema), but overall it's efficient with zero wasted sentences. The emoji and formatting (ANALYSIS, Returns) enhance readability without adding bulk.

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

Completeness4/5

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

Given the tool's complexity (3 parameters with nested objects, no output schema, no annotations), the description does well to explain the workflow, input sources, decision logic, and return format. It covers the essential context needed to use the tool correctly in the deployment workflow. The main gap is the lack of output schema, but the description compensates by detailing what the tool returns (decision and supporting metrics).

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal parameter semantics beyond the schema: it clarifies that baseline and slot objects come from analyze_logs_streaming calls and that they're required. It mentions the thresholds parameter indirectly through 'error rate changes, performance degradation, and health score delta' but doesn't add syntax or format details beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool's purpose: compare baseline vs slot logs to make deployment decisions. It specifies the verb 'compare' and resources 'baseline vs slot logs', distinguishing it from sibling tools like analyze_logs_streaming (which provides input) and complete_deployment/reset_deployment (which execute decisions). The description explicitly mentions it returns a safety recommendation with reasoning.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Use in deployment workflow: analyze baseline → deploy → analyze slot → compare → decide to complete or reset.' It names the required sibling tool (analyze_logs_streaming) and specifies when to use this tool (after analyzing both baseline and slot logs). It also indicates the tool's role in the decision-making process (proceed/investigate/abort).

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

complete_deploymentA

✅ Finalize deployment after verification. ASYNC: 2-15min. For AI Agents: Subscribe to deployment://{deploymentId} resource for real-time completion events (preferred method). Alternatively, set monitor=true (default) for background polling fallback. Deployment transitions: AwaitingVerification → Completing → Succeeded/Failed. After completing, monitor automatically tracks progress and emits events. Production deployments take 2-15min, other environments <1min. Required: deploymentId. Optional: monitor (default true).

ParametersJSON Schema
NameRequiredDescriptionDefault
deploymentIdYes
monitorNo
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does an excellent job disclosing behavioral traits: it specifies async timing (2-15min), state transitions, monitoring behavior, event emission, and environment-specific differences. It doesn't mention error handling or auth requirements, keeping it from a perfect score.

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

Conciseness5/5

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

The description is efficiently structured with front-loaded key information (purpose, timing, methods), uses clear sections with bullet-like formatting, and every sentence adds value without redundancy. It balances detail with brevity for a complex tool.

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

Completeness4/5

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

For a complex deployment tool with no annotations, no output schema, and 6 parameters, the description provides strong context about behavior, timing, and usage. It falls short of perfect because it doesn't explain return values or error cases, and leaves some parameters undocumented.

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

Parameters4/5

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

With 0% schema description coverage for 6 parameters, the description compensates well by explaining the purpose of 'deploymentId' (required) and 'monitor' (optional with default behavior). However, it doesn't mention 'projectName', 'projectId', 'apiKey', or 'apiSecret', leaving 4 parameters undocumented.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Finalize deployment after verification') and distinguishes it from siblings like 'start_deployment' and 'reset_deployment' by focusing on completion. It explicitly mentions the resource (deployment) and the action (finalize/completion).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('after verification'), preferred methods (subscribe to resource vs. monitor fallback), and distinguishes it from alternatives by describing deployment state transitions. It also mentions prerequisites ('Required: deploymentId') and context for different environments.

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

copy_contentA

📋 Copy database and/or blob content between environments. ASYNC: 30-90min depending on content size. Use for refreshing staging/test environments with production data or promoting content changes. Set includeBlob=true to copy static files/media (slower). Set includeDB=true to copy CMS/Commerce databases. CONTENT typically flows downward (Production→Preproduction→Integration). This is a heavy operation - verify target environment before starting. Required: sourceEnvironment, targetEnvironment. Returns operation ID for tracking. Use status() tool to monitor progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceEnvironmentYes
targetEnvironmentYes
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It reveals the operation is ASYNC (30-90min), describes content flow direction ('CONTENT typically flows downward'), warns it's a 'heavy operation', specifies required parameters, and explains the return value ('Returns operation ID for tracking'). It doesn't cover all possible edge cases like error handling, but provides substantial behavioral context.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded, starting with the core purpose and key behavioral traits. Every sentence adds value: the first states the purpose and timing, the second provides usage context, the third explains parameter semantics, the fourth gives flow direction and warnings, and the fifth covers requirements and monitoring. No wasted words.

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

Completeness4/5

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

For a complex async operation with 6 parameters, no annotations, and no output schema, the description is largely complete. It covers purpose, timing, usage scenarios, parameter guidance, operational warnings, and monitoring instructions. The main gap is lack of explicit error handling or rollback information, but given the context, it provides sufficient guidance for effective tool use.

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

Parameters4/5

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

With 0% schema description coverage for 6 parameters, the description compensates well by explaining the semantics of key parameters: it clarifies that 'includeBlob=true' copies static files/media and is slower, 'includeDB=true' copies CMS/Commerce databases, and 'sourceEnvironment' and 'targetEnvironment' are required. It doesn't explain 'projectName', 'projectId', 'apiKey', or 'apiSecret', but provides meaningful context for the most critical parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('copy database and/or blob content between environments') and distinguishes it from siblings by focusing on environment-to-environment content copying, which is unique among the listed tools that primarily handle logs, deployments, monitoring, and downloads.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use the tool ('Use for refreshing staging/test environments with production data or promoting content changes') and includes important exclusions/warnings ('This is a heavy operation - verify target environment before starting'). It also references an alternative tool ('Use status() tool to monitor progress'), making usage context comprehensive.

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

current_projectA

📌 Show currently active project context. INSTANT: <1s. Returns name, ID, and environment access for the project currently in use. Use to confirm project context before critical operations. No parameters. Returns active project info.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it's a read-only operation (implied by 'Show'), returns specific data (name, ID, environment access), has performance characteristics ('INSTANT: <1s'), and has no side effects. However, it doesn't mention error cases or authentication requirements, leaving minor gaps.

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

Conciseness5/5

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

The description is highly concise and well-structured: it starts with the core purpose, includes performance and return details, provides usage guidance, and ends with parameter info—all in four efficient sentences with no redundant information. Every sentence adds value, making it front-loaded and easy to parse.

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

Completeness4/5

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

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is nearly complete: it covers purpose, usage, behavior, and returns. However, without an output schema, it could benefit from more detail on the return format (e.g., structure of 'active project info'), though the listed fields (name, ID, environment access) mitigate this. It's adequate but has a minor gap.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description reinforces this by explicitly stating 'No parameters', which adds clarity and prevents confusion. No additional parameter details are needed, making this sufficient.

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

Purpose5/5

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

The description clearly states the specific action ('Show currently active project context') and resource ('project'), distinguishing it from siblings like 'get_project' or 'list_projects' by focusing on the active/current context rather than general project retrieval. It explicitly defines what information is returned (name, ID, environment access), making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Use to confirm project context before critical operations'), which directly informs the agent about its role in workflows. It distinguishes it from alternatives by emphasizing the 'active' context, and the 'No parameters' note helps avoid misuse. This is comprehensive usage guidance.

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

db_exportA

💾 Start database export from specified environment. ASYNC: 10-60min depending on database size. Set autoMonitor=true to automatically poll status every 30s. Set autoDownload=true to automatically download when export completes. Returns exportId for tracking. Required: environment, database (epicms or epicommerce). Use db_export_status() to check progress. Agent workflow: start export → monitor status → download when complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoEnvironment to export from: prod/production, staging/preproduction, int/integration (default: auto-select based on permissions)
databaseNoDatabase name: epicms or epicommerce (default: epicms)epicms
previewOnlyNoPreview export without executing - shows what would happen, includes capability check
forceNewNoForce new export - skip existing local backup check
useExistingNoUse existing local backup if available (returns immediately)
autoDownloadNoAutomatically download export when complete
monitorNoAutomatically monitor export progress until complete (polls every 30s)
downloadPathNoDirectory to save downloaded export (default: configured download path)
backgroundNoDownload in background vs wait for completion (default: true)
skipConfirmationNoSkip download confirmation prompts
retentionHoursNoHow long Azure retains export in hours (default: 168 = 7 days)
projectNoProject name (default: current project from environment)
projectNameNoAlternative to project parameter
databaseNameNoLegacy: use database parameter instead
projectIdNoProject UUID (if providing inline credentials)
apiKeyNoAPI key (if providing inline credentials)
apiSecretNoAPI secret (if providing inline credentials)

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and excels at this. It clearly describes the async nature (10-60min duration), monitoring behavior (polls every 30s), auto-download capability, return value (exportId), and the complete workflow. This provides comprehensive behavioral context beyond what parameters alone would indicate.

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

Conciseness4/5

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

The description is efficiently structured with emoji, clear sections, and front-loaded critical information. Every sentence adds value: async timing, monitoring behavior, return value, requirements, and workflow. It could be slightly more concise by combining some workflow details, but overall it's well-organized and information-dense.

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

Completeness5/5

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

For a complex tool with 17 parameters, no annotations, and no output schema, the description provides excellent contextual completeness. It covers the async nature, timing estimates, monitoring behavior, return value, required parameters, database options, companion tools, and the complete agent workflow. This gives the agent sufficient understanding despite the parameter complexity.

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

Parameters4/5

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

With 100% schema description coverage, the baseline is 3, but the description adds meaningful context about key parameters: it explains the purpose of autoMonitor and autoDownload parameters, clarifies the required environment and database parameters, and provides workflow context that helps understand parameter interactions. However, it doesn't cover all 17 parameters individually.

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

Purpose5/5

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

The description clearly states the specific action ('Start database export') with the target resource ('from specified environment'), distinguishing it from sibling tools like db_export_status and db_export_download. It explicitly mentions the required parameters (environment, database) and the async nature of the operation.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool vs alternatives: it names the companion tool db_export_status() for checking progress and outlines the complete agent workflow (start export → monitor status → download). It also specifies required parameters and database options.

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

db_export_downloadA

📥 Download completed database export to local storage. BACKGROUND: returns immediately with download ID, actual download continues in background. Large files (>1GB) may take 5-20min. Use download_status() to monitor download progress and get local file path when complete. Required: downloadUrl. Optional: downloadPath, background (default true). Returns downloadId for tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
exportIdNoExport ID to download (not required if downloadUrl provided)
environmentNoEnvironment where export was created (not required if downloadUrl provided)
downloadUrlNoDirect SAS URL to download from (skips API authentication - useful for downloaded URLs from db_export_status)
downloadPathNoDirectory to save downloaded export
backgroundNoDownload in background vs wait for completion (default: true)
skipConfirmationNoSkip file overwrite confirmation prompts
monitorNoEnable download monitoring - instructs AI to poll check_download_status until complete
projectNoProject name (default: current project)
projectNameNoAlternative to project parameter
projectIdNoProject UUID (if providing inline credentials)
apiKeyNoAPI key (if providing inline credentials)
apiSecretNoAPI secret (if providing inline credentials)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden and does well: it discloses that the tool returns immediately with a download ID while downloads continue in background, notes performance characteristics (large files take 5-20min), and explains the asynchronous nature. It could improve by mentioning error handling or authentication needs.

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

Conciseness4/5

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

The description is front-loaded with the core purpose, followed by useful context and usage notes in a logical flow. It's slightly verbose with emoji and capitalization, but every sentence adds value (e.g., background processing, monitoring guidance, parameter highlights), making it efficient overall.

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

Completeness4/5

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

For a complex tool with 12 parameters, no annotations, and no output schema, the description is fairly complete: it explains the tool's purpose, behavior, usage with siblings, and key parameters. It could be more comprehensive by covering all parameters or error cases, but it provides enough context for effective use.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds minimal value beyond the schema: it highlights 'downloadUrl' as required and 'downloadPath' and 'background' as optional with a default, but doesn't explain other parameters like 'skipConfirmation' or credential parameters, leaving the schema to do most work.

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

Purpose5/5

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

The description clearly states the specific action ('Download completed database export to local storage') with the resource ('database export') and distinguishes from siblings like 'download_status' by specifying it initiates downloads while siblings monitor them. The verb 'download' is precise and the scope is well-defined.

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

Usage Guidelines5/5

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

Explicit guidance is provided: use this tool to download exports, with background processing noted, and use 'download_status()' to monitor progress. It distinguishes from alternatives by specifying this tool starts downloads while others track them, and mentions prerequisites like 'downloadUrl'.

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

db_export_statusA

📊 Check database export progress. REAL-TIME: <1s. Returns progress percentage, estimated time remaining, and download URL when export completes. Set monitor=true to poll every 30s until complete. Set autoDownload=true to automatically download when ready. Required: exportId, environment. Returns status and download URL when ready. Use db_export_download() with the URL to retrieve file.

ParametersJSON Schema
NameRequiredDescriptionDefault
exportIdNoExport ID to check status for (from db_export response)
environmentNoEnvironment where export was created: Production, Preproduction, Integration (required if exportId provided)
latestNoCheck status of latest/most recent export instead of specific exportId
monitorNoEnable continuous monitoring - polls every 30s until export completes
waitBeforeCheckNoWait N seconds before checking status (60-180s). Tool waits synchronously.
autoDownloadNoAutomatically download export if status is complete
downloadPathNoDirectory to save downloaded export
backgroundNoDownload in background vs wait for completion (default: true)
skipConfirmationNoSkip download confirmation prompts
limitNoMax results to return when listing exports (1-100)
offsetNoPagination offset when listing exports
statusNoFilter by export status when listing
formatNoResponse format: concise (minimal fields) or detailed (all fields)detailed
projectNoProject name (default: current project)
projectNameNoAlternative to project parameter
projectIdNoProject UUID (if providing inline credentials)
apiKeyNoAPI key (if providing inline credentials)
apiSecretNoAPI secret (if providing inline credentials)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well disclosing behavioral traits: 'REAL-TIME: <1s' (performance), 'polls every 30s until complete' (monitoring behavior), 'Tool waits synchronously' (blocking behavior), and automatic download capabilities. It doesn't mention rate limits, authentication needs, or error handling, but covers most operational aspects.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose. Every sentence adds value: first states purpose and performance, second explains returns, third covers monitoring/auto-download, fourth specifies requirements, fifth explains alternative tool usage. Minor redundancy exists ('Returns status and download URL when ready' repeats earlier information).

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

Completeness4/5

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

For a complex tool with 18 parameters and no output schema, the description does well covering operational context: purpose, performance, return values, monitoring behavior, prerequisites, and alternative tool reference. It doesn't explain the relationship between parameters (like how latest interacts with exportId) or error scenarios, but provides sufficient guidance for basic usage given the comprehensive schema coverage.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 18 parameters thoroughly. The description adds minimal parameter semantics beyond the schema - it mentions 'exportId, environment' as required and explains monitor/autoDownload behaviors, but doesn't provide additional context about parameter interactions or usage patterns that aren't already in the schema descriptions.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs and resources: 'Check database export progress' (verb+resource), 'Returns progress percentage, estimated time remaining, and download URL when export completes' (output details), and distinguishes from sibling db_export_download by explicitly mentioning it. It goes beyond the name/title to explain what the tool actually does.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool vs alternatives: 'Use db_export_download() with the URL to retrieve file' specifies the alternative tool for downloading. It also indicates prerequisites: 'Required: exportId, environment' and context for monitoring/auto-download features. This gives clear operational context.

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

debug_containersD
ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNo
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

D1/5.0
Behavior1/5

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

Tool has no description.

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

Conciseness1/5

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

Tool has no description.

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

Completeness1/5

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

Tool has no description.

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

Parameters1/5

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

Tool has no description.

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

Purpose1/5

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

Tool has no description.

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

Usage Guidelines1/5

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

Tool has no description.

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

disable_telemetryA

🔇 Disable anonymous usage telemetry collection. INSTANT: <1s. Stops collecting tool usage analytics and error data. Telemetry helps improve MCP server but is fully optional. Change persists for session. No parameters. Returns confirmation of disabled telemetry.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does so effectively. It discloses key behavioral traits: the operation is 'INSTANT: <1s', it 'Stops collecting tool usage analytics and error data', and 'Change persists for session'. However, it lacks details on potential side effects or error handling, leaving minor gaps in full transparency.

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

Conciseness5/5

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

The description is highly concise and well-structured: it uses an emoji for quick visual cue, leads with the core action, includes performance metrics ('INSTANT: <1s'), explains the effect and optionality, notes persistence, and states parameter and return details—all in three efficient sentences with zero wasted words.

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

Completeness4/5

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

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is nearly complete. It covers purpose, usage, behavior, and confirms no parameters. However, without an output schema, it only briefly mentions 'Returns confirmation of disabled telemetry' without detailing the format, leaving a minor gap in full context.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description reinforces this with 'No parameters', adding clarity that no inputs are needed, which is helpful for an agent to understand it's a simple command without configuration.

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

Purpose5/5

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

The description clearly states the specific action ('Disable anonymous usage telemetry collection') and resource ('telemetry'), with the emoji reinforcing the action. It explicitly distinguishes from its sibling 'enable_telemetry' by describing the opposite function, making the purpose unambiguous and distinct.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: 'Telemetry helps improve MCP server but is fully optional' indicates it's for users who want to opt out of analytics. It directly contrasts with 'enable_telemetry' as the alternative, and 'Change persists for session' clarifies the temporal scope, offering clear context for decision-making.

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

discover_logsA

🔎 Discover available log containers across all environments. REAL-TIME: <2s. Returns container names, log types available (http, application), and environment availability. Use this before download_logs() or analyze_logs_streaming() to understand what logs exist. Useful for multi-environment projects to find which environments have logging enabled. Optional: project. Returns container inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It provides useful context about performance ('REAL-TIME: <2s'), return format ('Returns container names, log types available, and environment availability'), and optional parameters ('Optional: project'). However, it doesn't cover authentication requirements (despite apiKey/apiSecret parameters), rate limits, or error conditions. The description adds value but doesn't fully compensate for the lack of annotations.

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

Conciseness4/5

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

The description is efficiently structured with key information front-loaded (purpose, performance, returns). Every sentence adds value, though the final sentence ('Returns container inventory') is somewhat redundant with earlier information. The emoji adds visual distinction but doesn't detract from the content's efficiency.

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

Completeness3/5

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

Given the tool's moderate complexity (discovery operation with 4 parameters), no annotations, and no output schema, the description provides good purpose and usage context but has significant gaps. It doesn't explain authentication requirements despite apiKey/apiSecret parameters, doesn't detail the return structure beyond high-level categories, and provides minimal parameter guidance. The description is adequate but incomplete for a tool with authentication parameters.

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

Parameters2/5

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

With 0% schema description coverage for 4 parameters, the description only mentions one parameter ('Optional: project') without specifying whether this refers to projectName or projectId. It provides no information about apiKey or apiSecret parameters. The description adds minimal semantic value beyond what the bare schema provides, failing to compensate for the complete lack of parameter documentation in the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('discover available log containers') and resources ('across all environments'), and distinguishes it from siblings by explicitly mentioning it should be used before download_logs() or analyze_logs_streaming(). It explains what information is returned (container names, log types, environment availability) and why it's useful (for multi-environment projects).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Use this before download_logs() or analyze_logs_streaming() to understand what logs exist') and why ('Useful for multi-environment projects to find which environments have logging enabled'). It clearly positions this as a discovery/preparation step before other log-related operations.

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

download_blobsA

📦 Download files from Azure blob storage container to local path. ASYNC/BACKGROUND: returns immediately with download ID, continues in background. Supports date filtering to download specific time ranges. Use download_status() to monitor progress. Required: container, environment. Optional: downloadPath, dateFilter. Returns downloadId and estimated file count/size.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoProduction
containerNameNoStorage container name (auto-detected if not specified)
downloadPathNoWhere to save files (auto-detected based on project)
previewOnlyNoShow download preview without actually downloading
filterNoFilter for specific files: exact name ("logo.png"), glob pattern ("*.pdf", "2024/*.jpg"), or substring ("report")
incrementalNoUse smart incremental download (skip unchanged files). Default: true
forceFullDownloadNoForce full download even if files exist locally. Default: false
skipConfirmationNoSkip confirmation preview (WARNING: downloads immediately without preview). Default: false - always show preview
monitorNoDXP-3: Enable real-time progress monitoring during download. Shows progress updates every 10 seconds or 50 files. Default: false (opt-in)
backgroundNoDXP-3: Start download in background and return immediately with downloadId. Use download_status({ downloadId, monitor: true }) to watch progress. Default: false (blocking download)
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does an excellent job describing key behavioral traits: the async/background nature (returns immediately with download ID), the need for monitoring via another tool, and the date filtering capability. It doesn't mention rate limits, authentication requirements, or error handling, which keeps it from a perfect score.

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

Conciseness5/5

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

The description is perfectly structured and concise. It starts with the core purpose, immediately highlights the critical async behavior, then provides usage guidance, parameter context, and return values - all in 4 sentences with zero wasted words. Every sentence earns its place.

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

Completeness4/5

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

For a complex tool with 14 parameters, no annotations, and no output schema, the description does remarkably well. It covers the essential behavior, usage patterns, and key parameters. The main gap is that with 14 parameters, it only explicitly mentions 4 of them, leaving many schema parameters undocumented in the description.

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

Parameters4/5

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

The description adds meaningful context beyond the schema's 64% coverage. It explicitly identifies 'container' and 'environment' as required parameters (though schema shows 0 required), mentions 'downloadPath' and 'dateFilter' as optional, and explains the return values (downloadId and estimated file count/size). This compensates well for the schema's incomplete coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('Download') and resource ('files from Azure blob storage container to local path'). It distinguishes from sibling tools like 'download_logs' or 'download_status' by focusing on blob storage files rather than logs or status monitoring.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: it specifies when to use this tool (for downloading files from blob storage), when to use alternatives (use 'download_status()' to monitor progress), and mentions prerequisites (container and environment are required). It also distinguishes this from blocking downloads by highlighting the async/background nature.

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

download_cancelA

❌ Cancel active download(s) immediately. INSTANT: <1s. Call with downloadId to cancel specific download, or call without parameters to cancel all active downloads. Database downloads cannot be cancelled (Azure streaming limitation). Returns count of successfully cancelled downloads. Use download_list() to verify cancellation. Optional: downloadId. Returns cancelled count.

ParametersJSON Schema
NameRequiredDescriptionDefault
downloadIdNoDownload ID to cancel. Omit to cancel all active downloads

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: immediate cancellation (<1s), returns count of successfully cancelled downloads, and notes a limitation (database downloads cannot be cancelled). However, it lacks details on error handling or permissions, which could be useful for a destructive operation.

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

Conciseness5/5

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

The description is front-loaded with the main action ('Cancel active download(s) immediately'), followed by key details in a logical order: timing, parameter usage, limitations, return value, and verification method. Every sentence adds necessary information without redundancy.

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

Completeness4/5

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

Given no annotations and no output schema, the description does well by covering purpose, usage, behavior, and parameters. It could improve by specifying error cases or auth requirements, but it's largely complete for a tool with one optional parameter and clear operational context.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents the downloadId parameter. The description adds value by explaining the optional nature (omit to cancel all) and linking it to the return value (cancelled count), but doesn't provide additional syntax or format details beyond what the schema implies.

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

Purpose5/5

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

The description clearly states the verb 'cancel' and resource 'active download(s)', specifying immediate action. It distinguishes from sibling tools like download_list (for verification) and download_status (for status checking), making the purpose specific and differentiated.

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

Usage Guidelines5/5

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

Explicit guidance is provided: call with downloadId for specific cancellation or without parameters for all active downloads, and notes that database downloads cannot be cancelled due to Azure streaming limitation. It also references download_list() for verification, clearly indicating when and how to use this tool versus alternatives.

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

download_listA

📥 List downloads with flexible filtering and pagination. REAL-TIME: <1s. Filter by status (active/completed/failed/all) to monitor ongoing downloads or review history. Filter by type (logs/database/all) to track specific operations. Use pagination (limit, offset) for large download histories. Returns download IDs, status, progress percentage, file info, and start/completion times. Use this to find downloadId for download_status() or download_cancel() calls. All parameters optional.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by status: active (running), completed (successful), failed (errors/cancelled), or allactive
typeNoFilter by download typeall
limitNoMax results for history queries (1-100)
offsetNoPagination offset for history

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it specifies real-time performance ('REAL-TIME: <1s'), describes the return format in detail, mentions pagination for large histories, and notes all parameters are optional. It lacks explicit rate limit or error handling details, but covers most essential aspects.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose and key features (filtering, pagination, real-time). Every sentence adds value, though it could be slightly more streamlined by avoiding repetition of filter details already in the schema.

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

Completeness4/5

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

Given no annotations and no output schema, the description does a good job of covering the tool's behavior, return values, and usage context. It explains what the tool returns and how to use the results with other tools, making it largely complete for a listing tool with optional parameters.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by briefly mentioning filtering and pagination use cases, but doesn't provide additional syntax or format details. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('List downloads') and resources ('download IDs, status, progress percentage, file info, and start/completion times'), distinguishing it from siblings like download_status() or download_cancel() which operate on individual downloads rather than listing them.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('to find downloadId for download_status() or download_cancel() calls') and provides context for filtering by status ('to monitor ongoing downloads or review history') and type ('to track specific operations'), offering clear guidance on its application versus alternatives.

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

download_logsA

📊 Download application logs from environment to local storage. BACKGROUND: returns immediately, download continues in background. Supports date filtering (dateFilter: "2025/10/14", "past-7-days") and log type (http, application, all). Use this when you need logs for offline analysis. For quick online analysis, use analyze_logs_streaming() instead (2x faster). Required: environment. Returns downloadId for monitoring with download_status().

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentNoProduction
logTypeNo
containerNameNoOverride default container name
slotNoDownload deployment slot logs instead of production logs. Default: false (production logs only). Set to true to get logs from /SLOTS/SLOT/ path (deployment slot logs during warmup)
dateFilterNoFilter logs by date (e.g., "2025/08/24" or "2025/08")
secondsBackNo⭐ EASIEST: Last N seconds. No date math needed! (e.g., 30)
minutesBackNo⭐ EASIEST: Last N minutes. No date math needed! (e.g., 15)
hoursBackNo⭐ EASIEST: Last N hours. No date math needed! (e.g., 6)
daysBackNo⭐ EASIEST: Last N days. No date math needed! (e.g., 7 for last week)
weeksBackNo⭐ EASIEST: Last N weeks. No date math needed! (e.g., 2)
monthsBackNo⭐ EASIEST: Last N months. No date math needed! (e.g., 3)
yearsBackNo⭐ EASIEST: Last N years. No date math needed! (e.g., 1)
startDateNoStart date (e.g., "2025/10/01"). Can use alone - endDate defaults to NOW. Format: "YYYY/MM/DD" or "YYYY-MM-DD"
endDateNoEnd date (e.g., "2025/10/08"). Can use alone - startDate defaults to 7 days before. Format: "YYYY/MM/DD" or "YYYY-MM-DD"
startDateTimeNo⚠️ ADVANCED: ISO 8601 start datetime. Can use alone - endDateTime defaults to NOW. For simpler filtering, use daysBack/hoursBack instead. (e.g., "2025-09-15T01:00:00-05:00")
endDateTimeNo⚠️ ADVANCED: ISO 8601 end datetime. Can use alone - startDateTime defaults to 7 days before. For simpler filtering, use daysBack/hoursBack instead. (e.g., "2025-09-15T01:30:00-05:00")
downloadPathNoWhere to save log files
previewOnlyNoShow download preview without actually downloading
skipConfirmationNoSkip confirmation preview (WARNING: downloads immediately without preview). Default: false - always show preview
incrementalNoUse smart incremental download (skip unchanged files). Default: true
forceFullDownloadNoForce full download even if files exist locally. Default: false
monitorNoDXP-3: Enable real-time progress monitoring during download. Shows progress updates every 10 seconds or 50 files. Default: false (opt-in)
backgroundNoDXP-3: Start download in background and return immediately with downloadId. Use download_status({ downloadId, monitor: true }) to watch progress. Default: false (blocking download)
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behaviors: asynchronous operation ('returns immediately, download continues in background'), return value ('Returns downloadId'), and monitoring requirement. It could improve by mentioning potential side effects like storage consumption or rate limits.

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

Conciseness4/5

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

Well-structured with emoji and clear sections, but slightly verbose with background details and sibling comparison. Every sentence adds value, but could be more streamlined. The information is front-loaded with core purpose first.

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

Completeness4/5

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

Good for a complex tool with 27 parameters and no output schema. Covers purpose, usage guidelines, behavioral aspects, and references monitoring. Could be more complete by explaining output format or error conditions, but does well given the complexity.

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

Parameters3/5

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

Schema description coverage is 78% (high), so baseline is 3. The description adds some value by explaining date filtering options and log type values, but doesn't significantly enhance understanding beyond what's already documented in the comprehensive schema descriptions.

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

Purpose5/5

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

The description clearly states the specific action ('Download application logs') and resource ('from environment to local storage'), distinguishing it from siblings like analyze_logs_streaming (online analysis) and download_status (monitoring). It provides concrete purpose beyond just the tool name.

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

Usage Guidelines5/5

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

Explicitly states when to use ('when you need logs for offline analysis') and when not to use ('For quick online analysis, use analyze_logs_streaming() instead'). It also mentions prerequisites ('Required: environment') and follow-up actions ('Returns downloadId for monitoring with download_status()').

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

download_statusA

📊 Get real-time status of specific download. REAL-TIME: <1s. Returns current progress percentage, download speed (MB/s), estimated time remaining, and local file path when download completes. Poll this every 5-10s to track long-running downloads. Download completes when status="completed" and file path is provided. Required: downloadId. Returns progress, speed, ETA, file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
downloadIdYesDownload ID to check (from download_list)
monitorNoDXP-3: Auto-monitor download - polls every 10s and shows live progress updates until complete. Returns combined progress report. Default: false (single status check)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well: it discloses performance ('REAL-TIME: <1s'), polling behavior ('Poll this every 5-10s'), completion criteria ('Download completes when status="completed"'), and return format ('Returns progress, speed, ETA, file path'). It doesn't mention error conditions or rate limits, keeping it from a perfect score.

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

Conciseness5/5

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

The description is efficiently structured: first sentence states purpose, second provides performance and return details, third gives usage frequency, fourth defines completion criteria, fifth lists requirements and returns. Every sentence adds value with zero waste, and key information is front-loaded.

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

Completeness4/5

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

For a status-checking tool with no annotations and no output schema, the description is quite complete: it covers purpose, usage, behavior, parameters, and return values. It lacks explicit error handling details and doesn't fully document the monitor parameter's output format, but otherwise provides sufficient context for effective use.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the downloadId parameter's purpose ('to check') and source ('from download_list'), and implicitly clarifies the monitor parameter's behavior by contrasting manual polling ('Poll this every 5-10s') with auto-monitoring. However, it doesn't fully detail the monitor parameter's combined report output.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get real-time status of specific download') and resource ('download'), distinguishing it from sibling tools like download_list (lists downloads), download_cancel (cancels downloads), and download_blobs (downloads content). It explicitly mentions what information is returned (progress percentage, speed, ETA, file path).

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Poll this every 5-10s to track long-running downloads' tells when to use it, 'Download completes when status="completed" and file path is provided' tells when to stop using it, and 'Required: downloadId' indicates prerequisites. It also distinguishes from the monitor parameter's auto-polling functionality.

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

enable_telemetryA

🔔 Enable anonymous usage telemetry collection. INSTANT: <1s. Resumes collecting tool usage patterns and error data for product improvement. No personal data collected, only tool names and error types. Change persists for session. No parameters. Returns confirmation of enabled telemetry.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does an excellent job disclosing key behavioral traits: performance ('INSTANT: <1s'), data privacy ('No personal data collected, only tool names and error types'), persistence ('Change persists for session'), and confirmation behavior ('Returns confirmation of enabled telemetry'). It doesn't mention rate limits or auth needs, but covers most important aspects.

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

Conciseness5/5

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

The description is perfectly front-loaded with the core purpose first, followed by key behavioral details in a logical sequence. Every sentence earns its place by providing essential information without redundancy. The emoji adds visual distinction without compromising clarity.

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

Completeness4/5

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

For a zero-parameter tool with no annotations and no output schema, the description provides excellent coverage of purpose, behavior, and usage context. It explains what happens when invoked, what data is collected, persistence, and return value. The only minor gap is not explicitly stating whether this requires specific permissions or authentication.

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

Parameters4/5

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

With 0 parameters and 100% schema coverage, the baseline is 4. The description explicitly states 'No parameters' and explains what the tool does without requiring parameter input, which adds appropriate context beyond the empty schema.

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

Purpose5/5

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

The description clearly states the specific action ('Enable anonymous usage telemetry collection') and resource ('telemetry'), distinguishing it from its sibling 'disable_telemetry'. It provides concrete details about what gets enabled (tool usage patterns and error data) rather than just restating the tool name.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Resumes collecting... for product improvement') and provides clear alternatives by naming its sibling 'disable_telemetry'. It also specifies the persistence ('Change persists for session'), giving clear context for when the effect applies.

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

get_ai_guidanceA

🤖 Get AI-powered tool recommendations for natural language tasks. ANALYSIS: <1s. Analyzes task description and suggests which MCP tool to use with recommended parameters. Use when uncertain which tool fits your workflow. Returns recommended tool name, suggested parameters, and reasoning. Required: taskDescription (natural language).

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoSpecific topic to get guidance on (e.g., "confirmation", "downloads", "errors", "parameters")

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it performs analysis ('ANALYSIS: <1s'), returns recommendations ('suggests which MCP tool to use with recommended parameters'), and specifies the output format ('Returns recommended tool name, suggested parameters, and reasoning'). However, it doesn't mention potential limitations like accuracy or fallback options.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by key details in a structured format (ANALYSIS, Use case, Returns, Required). Every sentence earns its place, with no wasted words, making it highly efficient and easy to scan.

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

Completeness4/5

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

Given the tool's complexity (AI-powered guidance with no output schema), the description is mostly complete: it explains purpose, usage, behavior, and parameters. However, without an output schema, it could benefit from more detail on the return structure (e.g., format of 'recommended parameters'), but the mention of 'reasoning' adds some context. Annotations are absent, so the description adequately compensates.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the single parameter 'topic' with its description. The description adds some value by specifying 'Required: taskDescription (natural language)', which clarifies the expected input format, but this partially overlaps with the schema's 'topic' description. Since schema coverage is high, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get AI-powered tool recommendations for natural language tasks.' It specifies the verb ('Get AI-powered tool recommendations'), resource ('natural language tasks'), and distinguishes itself from siblings by focusing on guidance rather than direct execution of tasks like deployment or monitoring.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: 'Use when uncertain which tool fits your workflow.' It also distinguishes it from alternatives by implying it's for guidance rather than direct action, which is clear given the sibling tools are all operational tools (e.g., 'analyze_logs_streaming', 'complete_deployment').

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

get_cache_statusA

💾 View cache performance metrics. REAL-TIME: <1s. NOTE: Cache is now operation-specific (no central management). Shows cache hit/miss rates for different operation types. Use to understand caching effectiveness. No parameters. Returns cache statistics by operation type.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNo
projectIdNo
actionNostatus

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the real-time performance characteristic (<1s), the operation-specific nature of the cache, what information is returned (cache hit/miss rates by operation type), and that it's a read-only operation (implied by 'View' and 'Shows'). It doesn't mention authentication requirements or rate limits, but covers the core behavior well.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose. Every sentence adds value: the first states what it does, the second gives performance characteristics and architectural context, the third specifies what it shows, the fourth provides usage guidance, and the fifth clarifies parameters and returns. Minor redundancy could be trimmed.

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

Completeness2/5

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

Given the contradiction between 'No parameters' in the description and 3 parameters in the schema, the description is incomplete and misleading. While it covers the tool's purpose and behavior adequately for a no-parameter tool, it fails to address the actual parameter requirements. With no output schema and incomplete parameter information, significant gaps remain.

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

Parameters1/5

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

The description explicitly states 'No parameters' while the input schema shows 3 parameters (projectName, projectId, action with enum). This is a direct contradiction. The description provides no information about any parameters, failing to compensate for the 0% schema description coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('View cache performance metrics', 'Shows cache hit/miss rates') and resources ('cache performance metrics', 'cache statistics by operation type'). It distinguishes itself from potential siblings by emphasizing 'operation-specific (no central management)' and focusing on performance metrics rather than management functions.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool ('Use to understand caching effectiveness') and mentions its real-time nature ('REAL-TIME: <1s'). However, it doesn't explicitly state when NOT to use it or name specific alternative tools among the siblings for different cache-related needs.

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

get_deployment_statusA

📊 Get detailed deployment status and progress. REAL-TIME: <2s. Returns current status (InProgress, AwaitingVerification, Succeeded, Failed, Reset), progress percentage, and slot validation URL when status is AwaitingVerification. Set monitor=true to poll every 30s until reaches AwaitingVerification. Set waitBeforeCheck (seconds) to pause before checking status. Required: deploymentId. Agent workflow: After start_deployment() → poll status until AwaitingVerification → test slot URL → complete_deployment().

ParametersJSON Schema
NameRequiredDescriptionDefault
deploymentIdYes
waitBeforeCheckNoSeconds to wait before checking status (default: 0)
monitorNoEnable monitoring mode with AI guidance (default: false)
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well: it discloses performance ('REAL-TIME: <2s'), polling behavior ('poll every 30s until reaches AwaitingVerification'), and workflow dependencies. It doesn't mention rate limits, authentication needs, or error handling, but provides substantial behavioral context.

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

Conciseness5/5

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

The description is efficiently structured: first sentence states purpose, second adds performance and return details, third explains monitoring behavior, fourth covers workflow. Every sentence adds value with zero waste, and it's appropriately front-loaded with core functionality.

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

Completeness4/5

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

For a tool with 7 parameters, no annotations, and no output schema, the description does well: it explains the deployment workflow, monitoring behavior, and key parameters. It doesn't fully document all parameters or the exact return format, but provides enough context for effective use given the complexity.

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

Parameters4/5

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

Schema description coverage is low (29%), but the description compensates by explaining key parameters: 'deploymentId' is required, 'monitor=true' enables polling, and 'waitBeforeCheck' pauses before checking. It doesn't cover 'projectName', 'projectId', 'apiKey', or 'apiSecret', but adds meaningful context for the most critical parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get detailed deployment status and progress' with specific status values (InProgress, AwaitingVerification, etc.) and what information is returned. It distinguishes from siblings like 'list_deployments' (which lists deployments) and 'complete_deployment' (which finalizes deployments).

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

Usage Guidelines5/5

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

The description provides explicit usage guidance: 'Agent workflow: After start_deployment() → poll status until AwaitingVerification → test slot URL → complete_deployment()' and mentions when to use monitoring mode. It distinguishes this tool from 'complete_deployment' and 'reset_deployment' by explaining its role in the deployment workflow.

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

get_monitoring_statsA

📈 Get aggregate statistics for all monitors. REAL-TIME: <1s. Returns total monitor count, active monitors, average update frequency, and average monitor duration. Use to understand monitoring load and system activity. No parameters. Returns monitoring statistics summary.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively adds context beyond basic functionality: it specifies real-time performance ('REAL-TIME: <1s'), details the return values (e.g., total monitor count, active monitors), and clarifies there are no parameters. This covers key behavioral traits like speed and output format, though it could mention error handling or permissions.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded, starting with the core action and key details (real-time performance, return values). Every sentence earns its place by providing essential information without redundancy, such as clarifying the lack of parameters and usage context, making it efficient and well-structured.

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

Completeness4/5

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

Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is largely complete: it explains the purpose, behavior, and usage. However, it could be more comprehensive by detailing the exact format of the 'monitoring statistics summary' returned, as there is no output schema to rely on, leaving some ambiguity.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the schema fully documents the absence of parameters. The description reinforces this by stating 'No parameters', adding no extra semantic value but aligning perfectly. Since there are no parameters, the baseline is 4, as the description does not need to compensate for any gaps.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get aggregate statistics') and resources ('for all monitors'), distinguishing it from sibling tools like 'list_monitors' (which likely lists individual monitors) or 'stop_monitoring' (which controls monitoring). It explicitly mentions what it returns, making the purpose distinct and unambiguous.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool ('Use to understand monitoring load and system activity'), which helps differentiate it from siblings such as 'get_deployment_status' or 'health_check'. However, it does not explicitly state when not to use it or name specific alternatives, missing full comparative guidance.

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

get_projectA

📋 Get detailed project configuration. REAL-TIME: <1s. Returns project ID, name, configured environments, hosting type (DXP/self-hosted), and credential validation status. Use to inspect project settings or troubleshoot configuration issues. Required: projectName. Returns full project config object.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNo
projectIdNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: real-time performance (<1s), specific return data fields, and that it returns a 'full project config object'. However, it doesn't mention error conditions, authentication requirements, or rate limits which would be valuable for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is efficiently structured with key information front-loaded: purpose, performance characteristics, return data, usage context, and parameter requirement. Every sentence adds value with no redundant information. The emoji adds visual distinction without compromising clarity.

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

Completeness3/5

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

For a read-only tool with no annotations and no output schema, the description provides adequate coverage of purpose and basic behavior but has significant gaps. It doesn't explain the parameter semantics adequately (critical with 0% schema coverage), doesn't describe error conditions, and while it mentions return fields, doesn't provide structure details for the 'full project config object'.

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

Parameters2/5

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

With 0% schema description coverage for 2 parameters, the description must compensate but provides minimal parameter guidance. It mentions 'Required: projectName' but doesn't explain the relationship between projectName and projectId parameters, nor clarifies if both can be used together or are alternatives. The schema shows both are optional (no required parameters), creating potential confusion.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('Get') and resource ('detailed project configuration'), and distinguishes it from siblings like 'list_projects' by specifying it returns detailed configuration rather than just listing. It explicitly mentions what information is returned (project ID, name, environments, hosting type, credential status).

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool ('to inspect project settings or troubleshoot configuration issues'), but doesn't explicitly state when NOT to use it or name specific alternatives. While it distinguishes from 'list_projects' by implication, it doesn't explicitly compare with other sibling tools like 'current_project' or 'update_project'.

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

get_rate_limit_statusA

⏳ View current API rate limit status. REAL-TIME: <1s. Shows requests remaining (per minute and hourly), reset times, and current usage percentage. Optimizely API limits: 30/min, 500/hour per project. Use before batch operations to avoid hitting limits. Optional: project. Returns rate limit metrics and reset timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNo
projectIdNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: real-time performance (<1s), what information is shown (requests remaining, reset times, usage percentage), and API limits (30/min, 500/hour per project). It doesn't cover error handling or authentication needs, but provides substantial operational context.

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

Conciseness5/5

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

The description is efficiently structured with key information front-loaded: purpose, performance, data shown, limits, usage guidance, parameters, and returns. Every sentence adds value without redundancy, making it easy to parse quickly.

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

Completeness4/5

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

For a read-only tool with no output schema, the description provides comprehensive context about what metrics are returned (rate limit metrics and reset timestamps) and operational details. It covers purpose, behavior, and usage well, though parameter semantics could be more complete given the 0% schema coverage.

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

Parameters3/5

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

The schema has 0% description coverage for its 2 parameters (projectName, projectId), and the description only mentions 'Optional: project' without explaining the difference between name and ID or when to use each. This adds minimal value beyond the schema, resulting in a baseline score for inadequate parameter documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('View current API rate limit status') and resource ('Optimizely API'). It distinguishes from siblings by focusing on rate limits rather than logs, deployments, or other operations, making its scope immediately apparent.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Use before batch operations to avoid hitting limits'), providing clear context for its application. It implies alternatives by focusing on rate limit checks, though no specific sibling tools are named for comparison.

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

get_supportA

💬 Get support contact information and documentation. INSTANT: <1s. Returns support email, documentation URLs, API reference links, and GitHub issues page. Use when you need help or want to report issues. No parameters. Returns support resources object.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses performance ('INSTANT: <1s'), return content (support resources object with specific elements), and clarifies it has no parameters. However, it doesn't mention authentication requirements, rate limits, or error behavior.

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

Conciseness5/5

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

Front-loaded with purpose, followed by performance, return details, usage guidance, and parameter info in just three sentences. Every sentence adds value with zero waste, using emoji and formatting for readability.

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

Completeness4/5

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

For a simple, parameterless tool with no annotations or output schema, the description is nearly complete: it explains purpose, usage, behavior, and returns. It could improve by specifying the exact structure of the 'support resources object' or error handling, but gaps are minor given the tool's simplicity.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema coverage, so baseline is 4. The description explicitly states 'No parameters,' which adds clarity beyond the empty schema, confirming this is a parameterless operation.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get support contact information and documentation') and resources (email, URLs, links, page). It distinguishes from sibling tools by focusing on support resources rather than operational functions like deployment or monitoring.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Use when you need help or want to report issues.' This provides clear context for invocation and differentiates it from other tools that handle technical operations rather than support requests.

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

get_versionA

📌 Get current MCP server version and update availability. REAL-TIME: <1s. Checks local version against NPM registry for updates. Use this to verify you have latest features and bug fixes. Returns current version, latest available version, and update available flag. Suggests npm update command if outdated.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes performance characteristics ('REAL-TIME: <1s'), external dependencies ('Checks local version against NPM registry'), and the action triggered by results ('Suggests npm update command if outdated'). However, it doesn't mention error handling or authentication requirements.

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

Conciseness5/5

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

The description is efficiently structured with an emoji visual cue, performance metric upfront, clear purpose statement, usage guidance, and output details - all in 4 concise sentences with zero redundant information. Every sentence adds essential value.

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

Completeness4/5

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

For a zero-parameter tool with no annotations or output schema, the description provides excellent context about what the tool does, when to use it, performance characteristics, and what information it returns. The only minor gap is lack of explicit error handling information, but overall it's quite complete for this simple tool.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the baseline would be 3. The description adds value by explaining that no parameters are needed because it automatically checks both local and registry versions, providing context beyond the empty schema.

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

Purpose5/5

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

The description clearly states the specific verb ('Get') and resource ('current MCP server version and update availability'), distinguishing it from sibling tools like 'health_check' or 'status' by focusing on version information rather than operational status. It explicitly mentions checking against NPM registry, which further clarifies its unique purpose.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('to verify you have latest features and bug fixes') and provides a clear alternative action ('Suggests npm update command if outdated'), giving the agent direct guidance on usage context and next steps based on the output.

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

health_checkA

🏥 Check MCP server overall health status. REAL-TIME: 1-2s. Returns telemetry status, API rate limit info, active background monitors count, and system resource usage. Use this to verify server is operating normally before critical operations. No parameters. Returns health metrics and component status.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNo
projectNameNo
apiKeyNo
apiSecretNo
debugNoInclude debug information (process ID, session ID, etc.)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: real-time operation (1-2s), what information it returns (telemetry status, API rate limit info, etc.), and that it has no parameters. It doesn't mention authentication requirements or rate limits, but covers the core operational behavior well.

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

Conciseness5/5

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

The description is efficiently structured with three sentences that each serve distinct purposes: stating the tool's function, specifying its behavior and return values, and providing usage guidance. There's no wasted language, and the information is front-loaded appropriately.

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

Completeness4/5

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

For a no-parameter health check tool with no output schema, the description provides good completeness by explaining what information is returned and when to use it. The main gap is the mismatch between 'No parameters' in the description and the 5-parameter input schema, which creates some ambiguity about actual usage requirements.

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

Parameters4/5

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

The description states 'No parameters' which directly addresses the parameter semantics. However, the input schema shows 5 parameters with only 20% description coverage. The description compensates by clarifying that no parameters are needed for the health check operation, though it doesn't explain why the schema includes parameters like projectId or apiKey.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Check MCP server overall health status' with specific components like telemetry status, API rate limit info, active background monitors count, and system resource usage. It distinguishes itself from siblings like 'test_connection' or 'get_rate_limit_status' by providing a comprehensive health overview rather than specific functionality.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: 'Use this to verify server is operating normally before critical operations.' This provides clear context for usage and distinguishes it from other monitoring tools like 'get_monitoring_stats' or 'get_cache_status' which serve different purposes.

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

list_deploymentsA

📋 List recent deployments with filtering and pagination. REAL-TIME: <2s. Returns deployment IDs, status (InProgress, AwaitingVerification, Succeeded, Failed), source/target environments, and timestamps. Set activeOnly=true to show only in-progress/awaiting deployments. Use pagination (limit, offset) for large deployment histories. All parameters optional. Returns deployment history array. Use get_deployment_status() for detailed info on specific deployment.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
activeOnlyNoFilter to only active deployments (InProgress, AwaitingVerification, Resetting, Completing). Useful for autonomous agents detecting deployment conflicts.
statusNoFilter by specific deployment status
environmentSlotNoFilter by environment slot
formatNoResponse format: concise (minimal fields for token efficiency) or detailed (all fields)detailed
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does an excellent job: it discloses performance characteristics ('REAL-TIME: <2s'), return format ('Returns deployment IDs, status...'), and practical usage guidance. The only minor gap is it doesn't mention authentication requirements or rate limits, but given the comprehensive behavioral information provided, this deserves a high score.

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

Conciseness5/5

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

The description is perfectly structured and concise. It starts with the core purpose, then provides key behavioral information, parameter guidance, and alternative tool usage - all in 4 sentences with zero wasted words. Every sentence earns its place by adding value.

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

Completeness5/5

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

For a list/filter tool with 10 parameters and no annotations or output schema, the description provides excellent completeness. It covers purpose, performance, return format, parameter guidance, and alternative tools. Given the complexity of the tool (10 parameters, filtering capabilities), the description gives the agent everything needed to use it correctly without being overwhelming.

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

Parameters4/5

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

Schema description coverage is only 40%, but the description compensates well by explaining key parameters: it clarifies that 'activeOnly=true' shows 'only in-progress/awaiting deployments' and that pagination parameters are 'for large deployment histories.' It also states 'All parameters optional' which is helpful context. While it doesn't cover all 10 parameters, it adds meaningful semantics for the most important ones beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'List recent deployments with filtering and pagination.' It specifies the verb ('List'), resource ('deployments'), and scope ('recent'), and distinguishes from sibling tools by mentioning get_deployment_status() for detailed info on specific deployments. This is specific and distinguishes from alternatives.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives: 'Use get_deployment_status() for detailed info on specific deployment.' It also explains when to use specific parameters: 'Set activeOnly=true to show only in-progress/awaiting deployments' and 'Use pagination (limit, offset) for large deployment histories.' This gives clear context for usage decisions.

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

list_monitorsA

📡 List active background monitors tracking deployments. REAL-TIME: <1s. Shows all monitors polling deployment status, including monitor IDs, associated deployment IDs, current status, and update count. Use to discover active monitors for stop_monitoring() or update_monitoring_interval() calls. No parameters. Returns array of active monitor details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: it's a read operation (implied by 'List'), specifies real-time performance ('REAL-TIME: <1s'), and clarifies the return format ('Returns array of active monitor details'). However, it doesn't mention potential limitations like rate limits or authentication needs, leaving some gaps for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is highly concise and well-structured: it starts with an emoji for visual clarity, states the purpose upfront, includes performance details, lists what it shows, provides usage guidance, notes the lack of parameters, and specifies the return type—all in three efficient sentences with no wasted words.

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

Completeness4/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is nearly complete: it covers purpose, behavior, usage, and output. However, without annotations or an output schema, it could benefit from more detail on the exact structure of the returned array (e.g., field examples or data types) to fully guide the agent.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the baseline is 4. The description adds value by explicitly stating 'No parameters,' which reinforces the schema and prevents confusion, though it doesn't need to explain any parameters beyond that.

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

Purpose5/5

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

The description clearly states the verb ('List') and resource ('active background monitors tracking deployments'), distinguishing it from siblings like 'list_deployments' or 'get_monitoring_stats' by specifying it shows monitor details including IDs, deployment IDs, status, and update count. It explicitly identifies the scope as real-time active monitors, not historical or aggregated data.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: 'Use to discover active monitors for stop_monitoring() or update_monitoring_interval() calls.' It directly names alternative tools for related actions, helping the agent choose correctly based on the goal of finding monitors to stop or update.

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

list_projectsA

📂 List all configured projects in multi-project setup. REAL-TIME: <1s. Returns project names, IDs, hosting types (DXP/self-hosted), and active status. Use to discover available projects before switch_project() call. No parameters. Returns array of project summaries.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results to return (1-100)
offsetNoPagination offset

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing performance characteristics ('REAL-TIME: <1s'), return format ('Returns project names, IDs, hosting types, and active status'), and output structure ('Returns array of project summaries'). It doesn't mention pagination behavior or error conditions, keeping it from a perfect score.

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

Conciseness5/5

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

Extremely well-structured and front-loaded: starts with purpose, adds performance context, specifies return format, provides usage guidance, and notes parameter situation. Every sentence earns its place with zero wasted words.

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

Completeness4/5

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

For a read-only listing tool with no output schema, the description provides excellent context: purpose, performance, return format, usage guidance. It's missing details about pagination behavior (implied by parameters but not explained) and error cases, but otherwise quite complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description states 'No parameters' which contradicts the schema showing 2 optional parameters, but since schema coverage is complete, baseline 3 is appropriate. The description doesn't add meaningful parameter semantics beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the verb ('List') and resource ('all configured projects in multi-project setup'), and distinguishes from siblings by specifying it's for discovering available projects before using switch_project(). It's specific about scope and differentiation.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('Use to discover available projects before switch_project() call'), providing clear context and naming a specific alternative. This gives the agent perfect guidance on when this tool is appropriate.

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

list_storage_containersA

📦 List Azure blob storage containers for environment. REAL-TIME: 1-3s. Returns container names, types (logs, blobs, websitelogs), and creation dates. Use this to discover available containers before download_blobs() or generate_storage_sas_link() calls. Containers vary by environment and project configuration. Required: environment. Optional: project. Returns array of container details.

ParametersJSON Schema
NameRequiredDescriptionDefault
environmentYes
limitNoMax results to return (1-100)
offsetNoPagination offset
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing performance characteristics ('REAL-TIME: 1-3s'), return format ('Returns container names, types, and creation dates'), and that it 'Returns array of container details.' However, it doesn't mention pagination behavior (though offset/limit are in schema) or error conditions.

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

Conciseness5/5

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

The description is efficiently structured with key information front-loaded: emoji for visual cue, purpose statement, performance data, return format, usage guidance, and parameter requirements. Every sentence adds value with zero wasted words.

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

Completeness4/5

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

For a tool with 7 parameters, no annotations, and no output schema, the description does well by covering purpose, usage, performance, and return format. However, it doesn't fully address all parameters or provide complete behavioral context for a listing operation with authentication parameters (apiKey, apiSecret).

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

Parameters4/5

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

With only 29% schema description coverage, the description compensates by explaining the purpose of 'environment' and 'project' parameters. However, it doesn't address the other 5 parameters (limit, offset, projectName, projectId, apiKey, apiSecret) that appear in the schema but aren't mentioned in the description.

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

Purpose5/5

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

The description clearly states the specific action ('List Azure blob storage containers'), resource ('containers'), and scope ('for environment'). It distinguishes from siblings by specifying container types (logs, blobs, websitelogs) and explicitly mentions related tools (download_blobs, generate_storage_sas_link).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('to discover available containers before download_blobs() or generate_storage_sas_link() calls') and mentions that 'Containers vary by environment and project configuration.' It also specifies required and optional parameters directly in the description.

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

quickA

⚡ Fast status check for active deployments only. REAL-TIME: <1s. Returns only critical issues and in-progress deployments without detailed logs. Use this for quick health checks before starting new operations. Returns filtered deployment summary. Optional: project.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name (uses default if not specified)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: performance characteristics ('REAL-TIME: <1s'), what it returns ('only critical issues and in-progress deployments without detailed logs'), and output format ('filtered deployment summary'). It doesn't mention error handling or authentication needs, but provides substantial operational context.

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

Conciseness5/5

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

Extremely efficient with every sentence earning its place. Front-loaded with the core purpose, followed by performance characteristics, scope limitations, usage guidance, output description, and parameter note - all in a compact format with zero wasted words.

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

Completeness4/5

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

For a simple status-check tool with one optional parameter and no output schema, the description provides excellent context about what the tool does, when to use it, performance expectations, and output characteristics. The main gap is lack of explicit error handling information, but otherwise it's quite complete for this complexity level.

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

Parameters3/5

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

Schema description coverage is 100% with only one optional parameter 'project' already documented in the schema. The description adds minimal value by mentioning 'Optional: project' but doesn't provide additional context beyond what the schema already states about default behavior. Baseline 3 is appropriate given high schema coverage.

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

Purpose5/5

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

The description clearly states the tool performs a 'fast status check for active deployments only' with specific scope (critical issues and in-progress deployments without detailed logs). It distinguishes from siblings by emphasizing speed and filtering, differentiating from tools like 'get_deployment_status' or 'list_deployments' that likely provide more comprehensive information.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'for quick health checks before starting new operations.' This provides clear context about the intended use case and timing, helping the agent choose this over more detailed status tools when speed is prioritized over completeness.

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

reset_deploymentA

↩️ Rollback deployment to previous state. ASYNC: 5-15min. Reverses all changes made by deployment, restoring previous code and optionally database. Use when deployment verification fails or errors detected. Set resetWithDbRollback=true to also rollback database changes. Deployment transitions to "Reset" status when complete. Required: deploymentId. Agent workflow: If deployment verification fails → reset_deployment() → investigate logs with analyze_logs_streaming().

ParametersJSON Schema
NameRequiredDescriptionDefault
deploymentIdYes
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure and does so effectively. It reveals the tool is ASYNC (5-15min), describes what gets reversed ('all changes made by deployment, restoring previous code and optionally database'), mentions the resulting status ('Deployment transitions to "Reset" status'), and provides workflow guidance. No contradictions exist since annotations are absent.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose. Every sentence adds value: the first states what it does, the second gives timing and scope, the third provides usage context, the fourth explains a key parameter, the fifth describes outcome, and the sixth gives workflow guidance. Minor room for improvement in flow.

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

Completeness4/5

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

For a mutation tool with no annotations and no output schema, the description provides substantial context about behavior, timing, outcomes, and workflow. It covers the essential 'what happens' and 'when to use' aspects well. The main gap is incomplete parameter coverage, but otherwise it's quite comprehensive given the complexity.

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

Parameters3/5

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

With 0% schema description coverage for 5 parameters, the description partially compensates by explaining the purpose of one parameter ('Set resetWithDbRollback=true to also rollback database changes') and mentioning that 'deploymentId' is required. However, it doesn't cover the other 3 parameters (projectName, projectId, apiKey, apiSecret), leaving significant gaps in parameter understanding.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('Rollback') and resource ('deployment to previous state'), and distinguishes it from siblings by mentioning its unique rollback functionality. It goes beyond the name 'reset_deployment' by explaining what 'reset' means in this context.

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

Usage Guidelines5/5

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

The description explicitly states when to use the tool ('when deployment verification fails or errors detected') and provides a complete agent workflow with a specific alternative tool ('investigate logs with analyze_logs_streaming()'). This gives clear guidance on both usage context and next steps.

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

show_download_configA

📁 Show download directory configuration and disk space. REAL-TIME: <1s. Returns configured download path, available disk space, and write permissions status. Use this before starting large downloads to ensure sufficient space. Checks both configuration validity and file system permissions. Optional: project. Returns path, free space (GB), permissions.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNoShow config for specific project

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses key behavioral traits: real-time performance (<1s), return values (path, free space, permissions), and operational checks (configuration validity, file system permissions). However, it doesn't mention error handling or edge cases.

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

Conciseness4/5

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

Front-loaded with key information (purpose and real-time performance), followed by usage guidance and return details. Some redundancy (e.g., 'Returns' mentioned twice) slightly reduces efficiency, but overall well-structured and concise.

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

Completeness4/5

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

Given no annotations and no output schema, the description provides good coverage: purpose, usage context, performance, return values, and parameter semantics. It could improve by detailing error conditions or output format specifics, but it's largely complete for a read-only configuration tool.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds value by clarifying that the 'projectName' parameter is optional and specifying what the tool returns (path, free space in GB, permissions), enhancing understanding beyond the schema's basic description.

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

Purpose5/5

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

The description clearly states the specific action ('show download directory configuration and disk space') and resource ('download directory'), distinguishing it from sibling tools like 'download_list' or 'download_status' by focusing on configuration and space checking rather than download operations.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('before starting large downloads to ensure sufficient space') and provides context on its purpose (configuration validity and file system permissions checks), with no misleading guidance.

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

start_deploymentA

🚀 Start new deployment from source to target environment. ASYNC: 5-30min. Initiates deployment and auto-monitors progress with real-time updates. CODE deployments flow upward (Integration→Preproduction→Production). CONTENT deployments flow downward (Production→Preproduction→Integration). Returns deploymentId immediately. Set includeBlob=true for static files, includeDB=true for database sync. When status reaches "AwaitingVerification", use get_deployment_status() to get slot URL for testing, then complete_deployment() to finalize. Required: sourceEnvironment, targetEnvironment.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceEnvironmentYes
targetEnvironmentYes
deploymentTypeNo
sourceAppsNo
includeBlobNo
includeDatabaseNo
directDeployNo
useMaintenancePageNo
webhookUrlNoHTTP endpoint to receive deployment events (HTTPS required in production)
webhookHeadersNoCustom headers to include in webhook requests (e.g., { "Authorization": "Bearer token" })
projectNameNo
projectIdNo
apiKeyNo
apiSecretNo

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the async nature (5-30min), auto-monitoring with real-time updates, immediate return of deploymentId, and the different flow directions for CODE vs CONTENT deployments. It doesn't mention rate limits, authentication needs, or error handling, but covers most operational aspects well.

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

Conciseness5/5

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

The description is efficiently structured with zero wasted sentences. It front-loads the core purpose, then provides operational details, flow rules, return values, and usage guidance in a logical progression. Each sentence earns its place by adding distinct value.

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

Completeness4/5

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

For a complex deployment tool with 14 parameters, no annotations, and no output schema, the description provides substantial context about behavior, flow rules, and next steps. It explains the deployment process lifecycle and how this tool fits within it. The main gap is lack of information about authentication (apiKey, apiSecret) and some optional parameters, but overall it's quite comprehensive.

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

Parameters4/5

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

With only 14% schema description coverage, the description compensates well by explaining the purpose of key parameters: it clarifies when to use includeBlob and includeDB, and specifies that sourceEnvironment and targetEnvironment are required. While it doesn't cover all 14 parameters, it adds meaningful context for the most critical ones beyond what the bare schema provides.

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

Purpose5/5

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

The description clearly states the verb ('Start'), resource ('new deployment'), and scope ('from source to target environment'). It distinguishes this tool from siblings like 'complete_deployment' and 'get_deployment_status' by specifying it initiates the deployment process, not monitors or finalizes it.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool vs alternatives: it specifies that after status reaches 'AwaitingVerification', the agent should use 'get_deployment_status()' and 'complete_deployment()' instead. It also distinguishes between CODE and CONTENT deployment flows, helping the agent choose appropriate source/target environments.

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

statusA

📊 Show current deployment status and environment health. REAL-TIME: <1s. Returns deployment states (InProgress, AwaitingVerification, Succeeded, Failed), progress percentage, and error details. Use this to check if deployments need completion or investigation. Optional: environment, project. Returns active deployment info and environment health metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNoProject name (uses default if not specified)
environmentNoFilter to specific environment

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: real-time performance (<1s), return values (deployment states, progress percentage, error details, active deployment info, environment health metrics), and optional parameters. It doesn't mention rate limits or authentication needs, but covers core functionality adequately.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose in the first sentence. Every sentence adds value: real-time performance, return details, usage guidance, and parameter mention. Minor redundancy in mentioning returns could be trimmed, but overall efficient.

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

Completeness4/5

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

Given no annotations and no output schema, the description does well to explain return values and behavioral context. It covers the tool's purpose, usage, performance, and outputs adequately for a status-checking tool. Could improve by specifying error handling or data freshness, but largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters fully. The description mentions the parameters ('Optional: environment, project') but adds no meaningful semantics beyond what the schema provides. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Show current deployment status and environment health') and resources ('deployment states', 'progress percentage', 'error details', 'environment health metrics'). It distinguishes from siblings like 'get_deployment_status' by emphasizing real-time health checking and investigation needs.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('Use this to check if deployments need completion or investigation') and distinguishes it from alternatives by focusing on real-time status and health metrics rather than historical data or specific deployment details provided by siblings like 'list_deployments' or 'get_deployment_status'.

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

stop_monitoringA

🛑 Stop background monitoring for deployment. INSTANT: <1s. Stops polling immediately and returns final deployment status at time of stop. Monitor is removed from active monitors list. Use when deployment completes or when manual monitoring is preferred. Required: monitorId. Returns final deployment status and monitor summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
deploymentIdNo
allNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: the action is instantaneous (<1s), it stops polling immediately, returns final deployment status, and removes the monitor from the active list. However, it doesn't mention potential side effects like whether this affects other monitoring processes or if the action is reversible, leaving some gaps.

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

Conciseness5/5

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

The description is efficiently structured with key information front-loaded: the action, speed, immediate effect, and return value. Every sentence adds value—none are redundant. The use of emoji and formatting (INSTANT: <1s) enhances readability without wasting space.

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

Completeness3/5

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

For a tool with 2 parameters, 0% schema coverage, no annotations, and no output schema, the description provides good behavioral context but falls short on parameter documentation. It mentions a 'monitorId' requirement that conflicts with the schema, creating inconsistency. While it covers the tool's purpose and usage well, the parameter confusion reduces overall completeness.

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

Parameters2/5

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

The schema has 2 parameters (deploymentId, all) with 0% description coverage, meaning the schema provides no semantic information. The description only mentions 'Required: monitorId' (which doesn't match the schema parameters), creating confusion rather than adding meaningful context. This fails to 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.

Purpose5/5

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

The description clearly states the specific action ('Stop background monitoring for deployment') and resource ('deployment'), distinguishing it from siblings like 'list_monitors' or 'get_deployment_status'. It uses a precise verb ('Stop') and specifies the scope ('background monitoring'), making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('when deployment completes or when manual monitoring is preferred') and provides context on its effect ('Monitor is removed from active monitors list'). This gives clear guidance on appropriate scenarios, helping the agent choose between this and alternatives like 'get_deployment_status' or 'list_monitors'.

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

switch_projectA

🔄 Switch active project context for multi-project setups. INSTANT: <1s. Changes default credentials and project ID for all subsequent tool calls. Use this before operations when managing multiple Optimizely projects. Project context persists for entire session. Required: projectName. Returns new active project details. Use list_projects() to see available projects.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameYesName of the project to switch to

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden and discloses key behavioral traits: instant execution (<1s), changes default credentials and project ID for all subsequent calls, context persists for the entire session, and returns new active project details. It doesn't mention error cases or side effects, but covers most critical aspects well.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by key details (speed, effect, usage context, prerequisites, returns, and sibling reference). Every sentence adds value without redundancy, making it efficiently structured and appropriately sized.

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

Completeness4/5

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

Given 1 parameter with full schema coverage and no output schema, the description is largely complete: it explains the tool's behavior, usage, and output. However, it lacks details on error handling or what happens with invalid project names, leaving a minor gap for a mutation tool with no annotations.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the 'projectName' parameter. The description adds minimal value beyond this, only stating it's required and implying it should come from 'list_projects()'. No additional syntax or format details are provided, meeting the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the verb ('switch') and resource ('active project context'), specifying it's for multi-project setups. It distinguishes from siblings like 'list_projects' (which lists available projects) and 'current_project' (which likely shows current context), making the purpose specific and differentiated.

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

Usage Guidelines5/5

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

Explicit guidance is provided: use before operations when managing multiple Optimizely projects, and use 'list_projects()' to see available projects. It also specifies when-not scenarios by implying this is for multi-project contexts only, offering a clear alternative tool.

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

test_connectionA

🔍 Test API connection and verify credentials. REAL-TIME: 2-5s. Validates API key/secret, checks environment accessibility (Integration, Preproduction, Production), and returns permission levels. Use this after configuration changes or when troubleshooting connection issues. Returns accessible environments and detected project info. Optional: project. Use verify_access() for detailed permission checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNo
projectNameNo
apiKeyNo
apiSecretNo
setupModeNo
autoFixNo
skipChecksNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it's a diagnostic tool for connection testing, mentions performance characteristics ('REAL-TIME: 2-5s'), specifies what it validates (credentials, environment accessibility), and indicates what it returns (permission levels, accessible environments, project info). It doesn't mention potential side effects or error handling, but covers most essential behavioral aspects.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose. Every sentence adds value: the first establishes purpose and scope, the second provides usage context, and the third clarifies returns and alternatives. There's minimal redundancy, though the structure could be slightly more organized around distinct functional aspects.

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

Completeness3/5

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

Given the tool's diagnostic nature and 7 undocumented parameters with no output schema, the description provides good context on purpose and usage but insufficient parameter guidance. It covers behavioral aspects well given no annotations, but the parameter gap is significant. For a connection testing tool with many configuration options, more parameter context would improve completeness.

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

Parameters2/5

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

The schema has 7 parameters with 0% description coverage, meaning none of the parameters are documented in the schema. The description only mentions one parameter ('Optional: project') without explaining what 'project' refers to or providing any context for the other 6 parameters (projectId, projectName, apiKey, apiSecret, setupMode, autoFix, skipChecks). This leaves most parameters semantically unclear.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Test API connection', 'verify credentials', 'validates', 'checks', 'returns') and resources ('API key/secret', 'environment accessibility', 'permission levels', 'accessible environments', 'project info'). It distinguishes itself from sibling tools by explicitly mentioning its diagnostic nature for connection testing versus other operational tools like 'verify_access' for detailed permission checks.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('after configuration changes or when troubleshooting connection issues') and when not to use it by naming an alternative ('Use verify_access() for detailed permission checks'). This clearly differentiates it from sibling tools and sets appropriate context for its application.

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

update_monitoring_intervalA

⏱️ Change polling frequency for specific monitor. INSTANT: <1s. Adjusts how often monitor checks deployment status. Valid range: 10-600 seconds. Lower intervals (10-30s) for urgent deployments, higher intervals (60-300s) for long-running operations to reduce API calls. Required: monitorId, intervalSeconds. Returns updated monitor configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
deploymentIdNo
intervalYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by specifying the valid range (10-600 seconds), mentioning that changes are 'INSTANT: <1s', and noting it 'Returns updated monitor configuration'. However, it doesn't address important behavioral aspects like whether this requires special permissions, if changes are reversible, or potential rate limit implications.

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

Conciseness5/5

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

The description is efficiently structured with zero wasted words. It front-loads the core purpose, provides usage guidance, specifies parameters, and mentions the return value - all in four concise sentences. Every sentence adds clear value.

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

Completeness3/5

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

For a mutation tool with no annotations and no output schema, the description does reasonably well by explaining the action, parameters, and return value. However, it doesn't fully address the complexity of changing monitoring behavior - missing details about permissions needed, whether the change persists, or how it affects system resources. The parameter naming mismatch with the schema is also a completeness issue.

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

Parameters4/5

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

With 0% schema description coverage, the description must compensate for the schema's lack of parameter documentation. It successfully explains that 'intervalSeconds' represents 'polling frequency' with a 'Valid range: 10-600 seconds', and mentions 'monitorId' is required. However, it incorrectly names parameters as 'monitorId' and 'intervalSeconds' while the schema uses 'deploymentId' and 'interval', creating some confusion.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Change polling frequency') and resource ('for specific monitor'), distinguishing it from siblings like 'stop_monitoring' or 'get_monitoring_stats'. It goes beyond just restating the name by specifying what aspect of monitoring is being updated.

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

Usage Guidelines4/5

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

The description provides clear context for when to use different interval ranges (lower for urgent deployments, higher for long-running operations), but doesn't explicitly mention when NOT to use this tool or name specific alternatives among the sibling tools. The guidance is helpful but not exhaustive.

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

update_projectA

✏️ Update project configuration settings. INSTANT: <1s. Modifies stored credentials, project name, or environment settings. Changes persist for session. Use with caution - invalid credentials will break subsequent operations. Required: projectName, updates (object with fields to change). Returns updated project config. Test with test_connection() after updating.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNo
projectIdNo
renameToNo
apiKeyNo
apiSecretNo
connectionStringNo
blobPathNo
dbPathNo
logPathNo
makeDefaultNoSet this project as default for getCurrentProject() - auto-enabled when providing inline credentials

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does well by specifying the operation is 'INSTANT: <1s', that changes 'persist for session', and includes important warnings about credential validity and downstream impacts. It also mentions the return value ('Returns updated project config'). However, it doesn't address permissions, error handling, or whether changes are reversible.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded with the core purpose. Each sentence adds value: timing information, what can be modified, persistence, warnings, requirements, return value, and testing recommendation. There's minimal redundancy, though the structure could be slightly more organized.

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

Completeness3/5

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

For a mutation tool with 10 parameters, no annotations, and no output schema, the description provides good behavioral context but insufficient parameter documentation. It covers timing, persistence, warnings, and testing recommendations, which helps compensate for missing annotations. However, the parameter guidance is misleading and incomplete given the low schema coverage, leaving significant gaps in understanding how to use the tool effectively.

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

Parameters2/5

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

Schema description coverage is only 10% (only 'makeDefault' has a description), so the description must compensate. While it mentions 'Required: projectName, updates (object with fields to change)', this is misleading since the schema shows 0 required parameters and no 'updates' parameter exists. The description lists some parameter categories (credentials, name, environment settings) but doesn't map them to the 10 specific parameters in the schema, leaving most undocumented.

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

Purpose4/5

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

The description clearly states the verb 'update' and resource 'project configuration settings', specifying what fields can be modified (credentials, name, environment settings). It distinguishes from sibling 'get_project' which presumably reads rather than modifies. However, it doesn't explicitly differentiate from 'switch_project' or other project-related tools.

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

Usage Guidelines4/5

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

The description provides clear context for when to use ('modifies stored credentials, project name, or environment settings') and includes a caution about invalid credentials breaking subsequent operations. It also suggests testing with 'test_connection()' after updating. However, it doesn't explicitly state when NOT to use this tool or provide alternatives for specific scenarios.

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

verify_accessA

🔑 Verify API credentials and environment permissions. REAL-TIME: 2-5s. Checks which environments (Integration, Preproduction, Production) are accessible with current credentials. Returns detailed permission levels (read/write/deploy) for each environment. Use before deployment operations to confirm access. Optional: project. Returns environment access matrix.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectIdNo
projectNameNo
apiKeyNo
apiSecretNo
forceRefreshNoForce re-check even if cached

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: real-time performance (2-5s), what it checks (accessible environments), what it returns (detailed permission levels, environment access matrix), and optional caching behavior ('Force re-check even if cached' mentioned in schema). It doesn't cover error conditions or authentication failure responses.

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

Conciseness5/5

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

Front-loaded with purpose, followed by timing, functionality, usage guidance, and return format. Every sentence adds value with no redundancy. The emoji adds visual distinction without compromising clarity.

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

Completeness4/5

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

For a 5-parameter tool with no annotations and no output schema, the description does well covering purpose, behavior, and usage. It explains what the tool returns (environment access matrix with permission levels) despite no output schema. Missing details include parameter relationships and error handling, but overall provides good context.

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

Parameters4/5

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

Schema description coverage is only 20% (1 of 5 parameters has a description), so the description must compensate. It mentions 'Optional: project' which helps explain the projectId/projectName parameters, and the overall context clarifies that apiKey/apiSecret are for credential verification. However, it doesn't fully explain all 5 parameters or their relationships.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('verify', 'checks') and resources ('API credentials and environment permissions', 'environments'). It distinguishes from siblings by focusing on credential verification rather than deployment, logging, or project management operations.

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

Usage Guidelines5/5

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

Explicitly states when to use the tool ('Use before deployment operations to confirm access') and provides context about timing ('REAL-TIME: 2-5s'). This gives clear guidance on when this verification tool should be invoked versus proceeding directly with deployment operations.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 45 tool updatesv1.0.0
    • Addedanalyze_logs_streaming
    • Removedanalyze_package
    • Removedcheck_export_status
    • Addedcompare_logs
    • Changedcomplete_deployment1 field changed
      • addedInput schema / properties / monitor
        Added value: +{
        +  "default": true,
        +  "type": "boolean"
        +}
    • Changedcopy_content6 fields changed
      • addedInput schema / properties / sourceEnvironment / allOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "enum": [
        +      "Integration",
        +      "Preproduction",
        +      "Production"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / sourceEnvironment / enum
        Removed value: -[
        -  "Integration",
        -  "Preproduction",
        -  "Production"
        -]
      • removedInput schema / properties / sourceEnvironment / type
        Removed value: -"string"
      • addedInput schema / properties / targetEnvironment / $ref
        Added value: +"#/properties/sourceEnvironment"
      • removedInput schema / properties / targetEnvironment / enum
        Removed value: -[
        -  "Integration",
        -  "Preproduction",
        -  "Production"
        -]
      • removedInput schema / properties / targetEnvironment / type
        Removed value: -"string"
    • Addedcurrent_project
    • Addeddb_export
    • Addeddb_export_download
    • Addeddb_export_status
    • Addeddebug_containers
    • Removeddeploy_package_and_start
    • Addeddisable_telemetry
    • Addeddiscover_logs
    • Addeddownload_blobs
    • Addeddownload_cancel
    • Addeddownload_list
    • Addeddownload_logs
    • Addeddownload_status
    • Addedenable_telemetry
    • Removedexport_database
    • Removedgenerate_sas_upload_url
    • Changedgenerate_storage_sas_link3 fields changed
      • addedInput schema / properties / environment / allOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "enum": [
        +      "Integration",
        +      "Preproduction",
        +      "Production"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / environment / enum
        Removed value: -[
        -  "Integration",
        -  "Preproduction",
        -  "Production"
        -]
      • removedInput schema / properties / environment / type
        Removed value: -"string"
    • Addedget_ai_guidance
    • Removedget_analytics
    • Changedget_deployment_status2 fields changed
      • addedInput schema / properties / monitor
        Added value: +{
        +  "description": "Enable monitoring mode with AI guidance (default: false)",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / waitBeforeCheck
        Added value: +{
        +  "description": "Seconds to wait before checking status (default: 0)",
        +  "type": "number"
        +}
    • Removedget_edge_logs
    • Addedget_project
    • Removedget_project_info
    • Addedget_version
    • Addedhealth_check
    • Changedlist_deployments4 fields changed
      • addedInput schema / properties / activeOnly
        Added value: +{
        +  "default": false,
        +  "description": "Filter to only active deployments (InProgress, AwaitingVerification, Resetting, Completing). Useful for autonomous agents detecting deployment conflicts.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / environmentSlot
        Added value: +{
        +  "description": "Filter by environment slot",
        +  "enum": [
        +    "Integration",
        +    "Preproduction",
        +    "Production"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / format
        Added value: +{
        +  "default": "detailed",
        +  "description": "Response format: concise (minimal fields for token efficiency) or detailed (all fields)",
        +  "enum": [
        +    "concise",
        +    "detailed"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "description": "Filter by specific deployment status",
        +  "enum": [
        +    "InProgress",
        +    "AwaitingVerification",
        +    "Success",
        +    "Failed",
        +    "Canceled",
        +    "Resetting",
        +    "Completing"
        +  ],
        +  "type": "string"
        +}
    • Changedlist_projects2 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 20,
        +  "description": "Max results to return (1-100)",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Pagination offset",
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Changedlist_storage_containers5 fields changed
      • addedInput schema / properties / environment / allOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "enum": [
        +      "Integration",
        +      "Preproduction",
        +      "Production"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / environment / enum
        Removed value: -[
        -  "Integration",
        -  "Preproduction",
        -  "Production"
        -]
      • removedInput schema / properties / environment / type
        Removed value: -"string"
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 20,
        +  "description": "Max results to return (1-100)",
        +  "maximum": 100,
        +  "minimum": 1,
        +  "type": "number"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Pagination offset",
        +  "minimum": 0,
        +  "type": "number"
        +}
    • Removedprepare_deployment_package
    • Addedquick
    • Addedshow_download_config
    • Removedsplit_package
    • Changedstart_deployment8 fields changed
      • addedInput schema / properties / sourceEnvironment / allOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "enum": [
        +      "Integration",
        +      "Preproduction",
        +      "Production"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / sourceEnvironment / enum
        Removed value: -[
        -  "Integration",
        -  "Preproduction",
        -  "Production"
        -]
      • removedInput schema / properties / sourceEnvironment / type
        Removed value: -"string"
      • addedInput schema / properties / targetEnvironment / $ref
        Added value: +"#/properties/sourceEnvironment"
      • removedInput schema / properties / targetEnvironment / enum
        Removed value: -[
        -  "Integration",
        -  "Preproduction",
        -  "Production"
        -]
      • removedInput schema / properties / targetEnvironment / type
        Removed value: -"string"
      • addedInput schema / properties / webhookHeaders
        Added value: +{
        +  "additionalProperties": {
        +    "type": "string"
        +  },
        +  "description": "Custom headers to include in webhook requests (e.g., { \"Authorization\": \"Bearer token\" })",
        +  "type": "object"
        +}
      • addedInput schema / properties / webhookUrl
        Added value: +{
        +  "description": "HTTP endpoint to receive deployment events (HTTPS required in production)",
        +  "type": "string"
        +}
    • Addedstatus
    • Addedswitch_project
    • Addedtest_connection
    • Addedupdate_project
    • Removedupload_deployment_package
    • Addedverify_access
  2. 27 tool updates
    • First observedanalyze_package
    • First observedcheck_export_status
    • First observedcomplete_deployment
    • First observedcopy_content
    • First observeddeploy_package_and_start
    • First observedexport_database
    • First observedgenerate_sas_upload_url
    • First observedgenerate_storage_sas_link
    • First observedget_analytics
    • First observedget_cache_status
    • First observedget_deployment_status
    • First observedget_edge_logs
    • First observedget_monitoring_stats
    • First observedget_project_info
    • First observedget_rate_limit_status
    • First observedget_support
    • First observedlist_deployments
    • First observedlist_monitors
    • First observedlist_projects
    • First observedlist_storage_containers
    • First observedprepare_deployment_package
    • First observedreset_deployment
    • First observedsplit_package
    • First observedstart_deployment
    • First observedstop_monitoring
    • First observedupdate_monitoring_interval
    • First observedupload_deployment_package

TDQS

B3.1/5.0
Disambiguation3/5

Most tools have distinct purposes, but there is some overlap that could cause confusion. For example, 'status' and 'get_deployment_status' both provide deployment status, and 'health_check' and 'quick' both offer health/status checks, though with different scopes. The descriptions help clarify, but an agent might misselect between these similar tools.

Naming Consistency4/5

The naming follows a consistent snake_case pattern throughout, with clear verb_noun structures (e.g., 'analyze_logs_streaming', 'complete_deployment'). There are minor deviations like 'quick' (a single word) and 'status' (noun-only), but overall the naming is predictable and readable.

Tool Count2/5

With 42 tools, the count is excessive for the server's purpose of managing Optimizely DXP deployments and logs. Many tools could be consolidated or removed (e.g., separate download tools for logs, blobs, and databases, or multiple status-checking tools), making the surface overwhelming and likely to confuse agents.

Completeness5/5

The tool set provides comprehensive coverage for deployment workflows, log analysis, content management, and project administration. It includes full CRUD operations (e.g., start, monitor, complete, reset deployments), detailed monitoring, and utility functions (e.g., telemetry, support), with no obvious gaps for the domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to manage Dokploy deployments, including creating and deploying applications, managing databases, configuring domains with SSL, and monitoring application status through a standardized interface.
    27
    MIT
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables AI assistants to manage cloud infrastructure through natural language by providing a unified interface to the Dokploy platform. Supports Docker containers, applications, databases, domains, monitoring, and deployment operations through conversational commands.
    27
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with Optimizely CMS via its GraphQL and Content Management APIs, supporting dynamic content discovery, retrieval, and management.
    7
    6
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JaxonDigital/optimizely-dxp-mcp'

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