Skip to main content
Glama
undsoul

Qlik MCP Server

by undsoul

Qlik MCP Server

A Model Context Protocol (MCP) server that connects AI assistants like Claude, ChatGPT, and other LLMs to your Qlik Cloud and Qlik Sense Enterprise environments. Supports both stdio (Claude Desktop) and Streamable HTTP (ChatGPT) transports with optional Azure OpenAI / OpenAI LLM backends.

Own your AI. Create your own way to interact with your data.

Features

  • 59 MCP Tools (Cloud) / 9 tools (On-Premise)

  • Multi-Client Support - Claude Desktop (stdio), ChatGPT (HTTP transport), VS Code

  • Dual Platform Support - Qlik Cloud and Qlik Sense Enterprise (On-Premise)

  • Multi-LLM Backend - Claude (Anthropic), Azure OpenAI, OpenAI

  • Natural Language Analytics - Ask questions about your data in plain English

  • Full Lifecycle Management - Apps, reloads, users, spaces, sheets, bookmarks

  • AI/ML Integration - AutoML experiments, Qlik Answers assistants

  • Business Glossary & Data Products - Glossary management, dataset stewardship

  • Enterprise Governance - Users, roles, permissions, compliance


Quick Start

Prerequisites


Step 1: Download the MCP Server

  1. Download the ZIP file from GitHub:

  2. *Extract to C:* (recommended for simple paths):

    • Right-click the downloaded ZIP → Extract All

    • Extract to: C:\

    • You should now have: C:\qlik-claude-mcp-main\

  3. Open PowerShell and install dependencies:

    cd C:\qlik-claude-mcp-main
    npm install

macOS / Linux

git clone https://github.com/undsoul/qlik-claude-mcp.git
cd qlik-claude-mcp
npm install

Step 2: Install Claude Desktop

  1. Download Claude Desktop from claude.ai/download

  2. Install and sign in with your Anthropic account


Step 3: Get Your Qlik API Key

For Qlik Cloud:

  1. Log in to your Qlik Cloud tenant

  2. Click your profile icon (top right) → Profile settings

  3. Go to API keys section

  4. Click Generate new key

  5. Copy and save the API key (you won't see it again!)

For Qlik Sense Enterprise (On-Premise):

  1. Open QMCStartCertificates

  2. Add a machine name (e.g., MCP-Client)

  3. Click Export certificates

  4. Important settings:

    • Certificate file format: Choose PEM format (not Windows format)

    • Check Include secret key

  5. Export and save the files:

    • client.pem - Client certificate

    • client_key.pem - Private key

  6. Note the paths where you saved these files


Step 4: Configure Claude Desktop

Open Config File (Easiest Way)

  1. Open Claude Desktop

  2. Click Settings (gear icon) or File menu

  3. Click "Edit Config" or "Settings" → "Developer" → "Edit Config"

  4. This opens claude_desktop_config.json in your default text editor

  5. Paste the configuration below and Save (Ctrl+S)

Config file location:

  • Windows: C:\Users\{YourName}\AppData\Roaming\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json


Qlik Cloud Examples

Windows:

{
  "mcpServers": {
    "qlik-mcp-os": {
      "command": "node",
      "args": ["C:/qlik-claude-mcp-main/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://your-tenant.eu.qlikcloud.com",
        "QLIK_API_KEY": "your-api-key-here"
      }
    }
  }
}

macOS:

{
  "mcpServers": {
    "qlik-mcp-os": {
      "command": "node",
      "args": ["/Users/yourname/qlik-claude-mcp/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://your-tenant.us.qlikcloud.com",
        "QLIK_API_KEY": "your-api-key-here"
      }
    }
  }
}

Qlik Sense Enterprise (On-Premise) Examples

Step 1: Export Certificates from QMC

  1. Open Qlik Management Console (QMC)

  2. Go to Certificates under Configure System

  3. Click Export certificates

  4. Enter machine name (e.g., your server hostname)

  5. Check Include secret key

  6. Export format: Platform independent PEM-format

  7. Click Export - saves to: C:\ProgramData\Qlik\Sense\Repository\Exported Certificates\<machinename>\

The folder will contain:

  • client.pem - Client certificate

  • client_key.pem - Client private key

  • root.pem - Root CA certificate

Step 2: Configure Claude Desktop

Windows:

{
  "mcpServers": {
    "qlik-onprem": {
      "command": "node",
      "args": ["C:/qlik-claude-mcp-main/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://qlik-server.company.com",
        "QLIK_DEPLOYMENT": "on-premise",
        "QLIK_CERT_PATH": "C:/ProgramData/Qlik/Sense/Repository/Exported Certificates/YourServer",
        "QLIK_USER_DIRECTORY": "COMPANY",
        "QLIK_USER_ID": "administrator"
      }
    }
  }
}

macOS/Linux:

{
  "mcpServers": {
    "qlik-onprem": {
      "command": "node",
      "args": ["/Users/yourname/qlik-claude-mcp/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://qlik-server.company.com",
        "QLIK_DEPLOYMENT": "on-premise",
        "QLIK_CERT_PATH": "/path/to/exported-certificates",
        "QLIK_USER_DIRECTORY": "DOMAIN",
        "QLIK_USER_ID": "administrator"
      }
    }
  }
}

Note:

  • QLIK_CERT_PATH is the folder containing client.pem, client_key.pem, and root.pem

  • QLIK_USER_DIRECTORY and QLIK_USER_ID specify which user to act as (e.g., DOMAIN\administrator)

  • The user must have appropriate access rights in QMC


Multi-Tenant & Hybrid Configurations

You can configure multiple MCP servers in the same config file to connect to different Qlik environments simultaneously. This supports:

  • Multiple Qlik Cloud tenants (e.g., Dev, Test, Prod)

  • Multiple On-Premise servers

  • Hybrid setups (Cloud + On-Premise together)

Example: Two Cloud Tenants + One On-Premise:

{
  "mcpServers": {
    "qlik-cloud-dev": {
      "command": "node",
      "args": ["C:/qlik-claude-mcp-main/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://dev-tenant.eu.qlikcloud.com",
        "QLIK_API_KEY": "dev-api-key-here"
      }
    },
    "qlik-cloud-prod": {
      "command": "node",
      "args": ["C:/qlik-claude-mcp-main/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://prod-tenant.eu.qlikcloud.com",
        "QLIK_API_KEY": "prod-api-key-here"
      }
    },
    "qlik-onprem": {
      "command": "node",
      "args": ["C:/qlik-claude-mcp-main/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://qlik-server.company.com",
        "QLIK_DEPLOYMENT": "on-premise",
        "QLIK_CERT_PATH": "C:/ProgramData/Qlik/Sense/Repository/Exported Certificates/MyServer",
        "QLIK_USER_DIRECTORY": "COMPANY",
        "QLIK_USER_ID": "administrator"
      }
    }
  }
}

Each server appears as a separate MCP connection in Claude Desktop. You can specify which environment to use when asking questions:

  • "Using qlik-cloud-dev, list all apps"

  • "On qlik-onprem, trigger reload for Sales Dashboard"


ChatGPT / HTTP Transport

To use with ChatGPT or other HTTP-based LLM clients, set MCP_TRANSPORT to http or both:

{
  "mcpServers": {
    "qlik-mcp-http": {
      "command": "node",
      "args": ["C:/qlik-claude-mcp-main/dist/index.js"],
      "env": {
        "QLIK_TENANT_URL": "https://your-tenant.eu.qlikcloud.com",
        "QLIK_API_KEY": "your-api-key-here",
        "MCP_TRANSPORT": "http",
        "MCP_HTTP_PORT": "3000"
      }
    }
  }
}

The server exposes a Streamable HTTP endpoint at http://localhost:3000/mcp with:

  • POST /mcp - JSON-RPC request/response

  • GET /mcp - Server-Sent Events (SSE) streaming

  • DELETE /mcp - Session cleanup

  • GET /health - Health check

Use MCP_TRANSPORT=both to serve both stdio (Claude Desktop) and HTTP (ChatGPT) simultaneously.


Step 5: Build the MCP Server

After saving your config, go back to PowerShell (Windows) or Terminal (macOS) and run:

Windows

npm run build

macOS / Linux

npm run build

Verify build succeeded - you should see dist/index.js created.


Step 6: Restart Claude Desktop

  1. Quit Claude Desktop completely (not just close the window)

    • macOS: Right-click Claude in menu bar → Quit

    • Windows: Right-click Claude in system tray → Exit

  2. Reopen Claude Desktop

  3. Start a new conversation and try: "Check my Qlik health"


Verify It's Working

In Claude Desktop, type:

Check my Qlik environment health

You should see Claude use the qlik_health_check tool and return your tenant status.


Tool Capabilities (59 Tools)

On-Premise Tools (9 tools — work on both Cloud & On-Premise)

Tool

Description

qlik_search

Search apps, datasets, automations, and more

qlik_health_check

Check server status and connectivity

qlik_app_details

Get app metadata (name, owner, space, status)

qlik_app_context

Get full app structure (tables, fields, sheets, measures, bookmarks, variables)

qlik_trigger_app_reload

Trigger an app reload

qlik_get_reload_status

Check reload task status

qlik_generate_app

Create or update a Qlik app with script and data connections

qlik_get_app_script

Extract the full load script from an app

qlik_insight_advisor

Ask natural language questions about app data


Cloud-Only Tools (50 tools)

1. Governance (4) - Cloud Only

Tool

Description

qlik_get_tenant_info

Get tenant information

qlik_search_users

Search users by name or email

qlik_get_user_info

Get detailed user information

qlik_get_license_info

Get license and seat allocation


2. Reload & History (2) - Cloud Only

Tool

Description

qlik_cancel_reload

Cancel a running reload

qlik_get_reload_info

Get reload history for an app


3. Spaces & Catalog (2) - Cloud Only

Tool

Description

qlik_get_spaces_catalog

List all spaces

qlik_space_details

Get space contents with all items


4. Lineage (2) - Cloud Only

Tool

Description

qlik_get_lineage

Get data lineage for a resource

qlik_app_lineage

Get app data sources and connection info


5. Data & Selections (5) - Cloud Only

Tool

Description

qlik_get_dataset_details

Get dataset/data connection details

qlik_apply_selections

Apply field selections

qlik_clear_selections

Clear all selections

qlik_get_current_selections

Get active selections

qlik_get_available_fields

List all fields in an app


6. Master Items (4) - Cloud Only

Tool

Description

qlik_list_master_measures

List master measures with expressions

qlik_list_master_dimensions

List master dimensions

qlik_get_variables

Get all variables with definitions

qlik_set_variable

Create or update a variable


7. Field Values (1) - Cloud Only

Tool

Description

qlik_get_field_values

Get distinct values for a field


8. Data Connections (2) - Cloud Only

Tool

Description

qlik_get_data_sources

Get data connection details for an app

qlik_list_data_connections

List tenant-level data connections


9. Bookmarks & Stories (3) - Cloud Only

Tool

Description

qlik_list_bookmarks

List bookmarks with selections

qlik_apply_bookmark

Apply a saved bookmark

qlik_list_stories

List data stories


10. App Generation (1)

Tool

Description

Platforms

qlik_generate_app

Create or update a Qlik app with script and data connections

Both

Cloud Workflow

On Qlik Cloud, qlik_generate_app uses REST APIs to create apps and trigger reloads asynchronously.

Cloud Example Prompts:

What you say

What happens

"Create a Qlik app with sample sales data"

Creates app with inline LOAD script

"Create a new app called 'Dashboard' and load this data..."

Creates app in personal space

"Update the load script for app abc-123"

Updates existing app's script

Typical Cloud Workflow:

  1. Create app with inline data:

    "Create a Qlik app called 'Sales Analysis' with sample data
    for products, regions, and sales amounts"
  2. Create app using existing dataset:

    "Create a Qlik app that loads from the 'Sales.qvd' dataset
    in my Data space"
  3. Update existing app:

    "Update app abc-123 with a new load script that adds
    a calculated field for profit margin"

Cloud Data Connection Note: On Cloud, data connections are managed via the Qlik Cloud hub or Spaces. Use qlik_search with types: ["dataconnection"] to find existing connections, then reference them in your load script using LIB CONNECT TO.


On-Premise Workflow (Engine API)

On Qlik Sense Enterprise, the tool uses the Engine API via WebSocket (port 4747) with certificate authentication:

  1. Create App - Global.CreateApp()

  2. Create Data Connection (optional) - Doc.CreateConnection()

  3. Set Load Script - Doc.SetScript()

  4. Execute Reload - Doc.DoReload()

  5. Save App - Doc.DoSave()

On-Premise Example Prompts:

What you say

What happens

"List available ODBC data sources on the server"

Lists all DSNs configured on the Qlik server

"Show me the data connections in app abc-123"

Lists all connections in the specified app

"Create a Qlik app with sample sales data"

Creates app with inline LOAD script

"Create an app that loads data from C:\Data\sales.csv"

Creates folder connection + app

"Create an app connected to SQL Server DSN 'MySQLServer'"

Creates ODBC connection + app

Typical On-Premise Workflow:

  1. Discover data sources:

    "What ODBC data sources are available on the Qlik server?"
  2. Explore existing app connections:

    "List the data connections in the Sales Dashboard app"
  3. Create app with data:

    "Create a new Qlik app called 'Customer Analysis' that connects to
    the folder C:\QlikData and loads customers.csv"

Discovery Parameters:

// List available ODBC data sources on the server
{ "listOdbcDsns": true }

// List connections in an existing app
{ "appId": "abc-123", "listConnections": true }

On-Premise Data Connection Examples:

Folder Connection:

{
  "appName": "SalesReport",
  "dataConnection": {
    "connectionName": "SalesData",
    "connectionType": "folder",
    "connectionString": "C:\\Data\\Sales\\"
  },
  "loadScript": "LOAD * FROM [lib://SalesData/sales.csv] (txt, codepage is 1252, embedded labels, delimiter is ',', msq);"
}

ODBC Connection:

{
  "appName": "SQLReport",
  "dataConnection": {
    "connectionName": "SQLServer",
    "connectionType": "ODBC",
    "connectionString": "DSN=MyDSN",
    "username": "user",
    "password": "pass"
  },
  "loadScript": "LIB CONNECT TO 'SQLServer';\nSQL SELECT * FROM Sales;"
}

Note: On-premise uses Engine API (port 4747) with certificate auth. Ensure certificates are properly exported from QMC.


11. Sheets & Visualization (2) - Cloud Only

Tool

Description

qlik_list_sheets

List all sheets in an app

qlik_get_sheet_details

Get sheet objects and chart details


12. Automation (4) - Cloud Only

Tool

Description

qlik_automation_list

List all automations

qlik_automation_get_details

Get automation details

qlik_automation_run

Execute an automation

qlik_automation_list_runs

List automation runs


13. Alerts (4) - Cloud Only

Tool

Description

qlik_alert_list

List all data alerts

qlik_alert_get

Get alert details

qlik_alert_trigger

Manually trigger an alert

qlik_alert_delete

Delete an alert


14. Qlik Answers (3) - Cloud Only

Tool

Description

qlik_answers_list_assistants

List AI assistants

qlik_answers_get_assistant

Get assistant details

qlik_answers_ask_question

Ask a question to an assistant


15. AutoML (4) - Cloud Only

Tool

Description

qlik_automl_get_experiments

List ML experiments

qlik_automl_get_experiment

Get experiment details

qlik_automl_list_deployments

List ML deployments

qlik_automl_get_deployment

Get deployment details


16. Business Glossary (5) - Cloud Only

Tool

Description

qlik_glossary_list

List business glossaries

qlik_glossary_details

Get glossary details

qlik_glossary_get_term

Get term details

qlik_glossary_create_term

Create a new term

qlik_glossary_delete_term

Delete a term


17. Datasets & Data Products (3) - Cloud Only

Tool

Description

qlik_get_dataset_profile

Get dataset profiling stats

qlik_list_data_products

List data products

qlik_get_data_product

Get data product details


Usage Examples

Basic Queries

You: "Check the health of my Qlik Cloud tenant"
Claude: [Uses qlik_health_check] Your tenant is healthy...

You: "List all spaces"
Claude: [Uses qlik_get_spaces_catalog] Found 57 spaces...

You: "Search for users named John"
Claude: [Uses qlik_search_users] Found 3 users matching 'John'...

App Analysis

You: "Show me the details of my Sales Dashboard app"
Claude: [Uses qlik_app_details] App: Sales Dashboard, Owner: admin...

You: "Get the full context of the app - tables, fields, measures"
Claude: [Uses qlik_app_context] The app has 5 tables, 45 fields,
       12 master measures, 8 master dimensions...

You: "Select USA in the Country field, then show me the current selections"
Claude: [Uses qlik_apply_selections, qlik_get_current_selections]
       Selection applied. Current selections: Country = USA

Reload Management

You: "Reload the Finance Dashboard"
Claude: [Uses qlik_trigger_app_reload] Reload started. Task ID: xyz...

You: "Check the reload status"
Claude: [Uses qlik_get_reload_status] Reload completed successfully...

You: "Get reload history for that app"
Claude: [Uses qlik_get_reload_info] Last 5 reloads shown...

AI/ML Features

You: "List all Qlik Answers assistants"
Claude: [Uses qlik_answers_list_assistants] Found 3 assistants...

You: "Ask the Sales Assistant: What were our top products last quarter?"
Claude: [Uses qlik_answers_ask_question] Based on the data,
       your top 5 products were...

You: "List AutoML experiments"
Claude: [Uses qlik_automl_get_experiments] Found 2 experiments...

Platform Support

Qlik Cloud

All 59 tools are available on Qlik Cloud.

Qlik Sense Enterprise (On-Premise)

9 tools work on-premise: search, health check, app details, app context, reload, generate app, get script, and insight advisor.

Cloud-only features return informative messages:

{
  "success": false,
  "error": "This feature is only available on Qlik Cloud",
  "platform": "on-premise",
  "suggestion": "Alternative approach for on-premise..."
}

Cloud-Only Features (50 tools)

  • Governance (4 tools)

  • Reload & History (2 tools)

  • Spaces & Catalog (2 tools)

  • Lineage (2 tools)

  • Data & Selections (5 tools)

  • Master Items (4 tools)

  • Field Values (1 tool)

  • Data Connections (2 tools)

  • Bookmarks & Stories (3 tools)

  • Sheets & Visualization (2 tools)

  • Automation (4 tools)

  • Data Alerts (4 tools)

  • Qlik Answers (3 tools)

  • AutoML (4 tools)

  • Business Glossary (5 tools)

  • Datasets & Data Products (3 tools)

On-Premise Equivalents

Cloud Feature

On-Premise Alternative

Spaces

Streams (via QRS /qrs/stream)

Items API

QRS App API (/qrs/app)

Cloud Reloads

QRS Reload Tasks (/qrs/reloadtask)

Insight Advisor

NL Query API (/api/v1/nl/query)

App Create/Script

Engine API (Global.CreateApp, Doc.SetScript, Doc.DoReload)

Data Connections

Engine API (Doc.CreateConnection, Doc.GetConnections)

ODBC Discovery

Engine API (Global.GetOdbcDsns)


Testing

Quick Smoke Test

export QLIK_TENANT_URL=https://your-tenant.qlikcloud.com
export QLIK_API_KEY=your-api-key
node test-cloud-quick.cjs

Full Handler Test

node test-mcp-handlers.mjs

Environment Variables

Core Settings

Variable

Required

Description

QLIK_TENANT_URL

Yes

Qlik Cloud URL or Qlik Sense Enterprise server URL

QLIK_DEPLOYMENT

No

cloud (default) or on-premise

For Qlik Cloud:

Variable

Required

Description

QLIK_API_KEY

Yes

API key from Qlik Cloud hub

For Qlik Sense Enterprise (On-Premise):

Variable

Required

Description

QLIK_CERT_PATH

Yes

Folder containing client.pem, client_key.pem, root.pem

QLIK_USER_DIRECTORY

Yes

Windows domain (e.g., COMPANY)

QLIK_USER_ID

Yes

Username to act as (e.g., admin)

QLIK_VIRTUAL_PROXY

No

Virtual proxy prefix (if configured)

Transport Settings (for ChatGPT / HTTP clients)

Variable

Required

Description

MCP_TRANSPORT

No

Transport type: stdio (default), http, or both

MCP_HTTP_PORT

No

HTTP server port (default: 3000)

MCP_HTTP_HOST

No

HTTP server host (default: 0.0.0.0)

MCP_ALLOWED_ORIGINS

No

Comma-separated CORS origins

MCP_RATE_LIMIT

No

Requests per minute per session (default: 300)

MCP_SESSION_TIMEOUT

No

Session timeout in seconds (default: 3600)

LLM Provider Settings (optional)

Variable

Required

Description

LLM_PROVIDER

No

LLM backend: claude (default), azure-openai, or openai

For Claude (Anthropic):

Variable

Required

Description

CLAUDE_API_KEY

No

Anthropic API key

CLAUDE_MODEL

No

Model name (default: claude-sonnet-4-20250514)

For Azure OpenAI:

Variable

Required

Description

AZURE_OPENAI_ENDPOINT

Yes*

Azure OpenAI endpoint URL

AZURE_OPENAI_API_KEY

Yes*

Azure OpenAI API key

AZURE_OPENAI_DEPLOYMENT

No

Deployment name (default: gpt-4o)

AZURE_OPENAI_API_VERSION

No

API version (default: 2024-10-21)

For OpenAI:

Variable

Required

Description

OPENAI_API_KEY

Yes*

OpenAI API key

OPENAI_MODEL

No

Model name (default: gpt-4o)

*Required only when using that specific LLM provider


Troubleshooting

"Tool not found" Error

Ensure the MCP server is running and Claude Desktop was restarted after configuration.

Authentication Errors

Qlik Cloud:

  • Verify your API key is valid and not expired

  • Ensure the API key has appropriate permissions

Qlik Sense Enterprise (On-Premise):

  • Verify certificate paths are correct and files exist

  • Ensure certificates were exported with the private key

  • Check that the certificate hasn't expired

  • Verify the machine name in the certificate matches your setup

"Cloud-only feature" Message

Some tools are only available on Qlik Cloud. The error message will suggest alternatives.

Connection Timeout

Check network connectivity to your Qlik server. Ensure firewalls allow the connection.

Empty MCP Server / Tools Not Showing

If Claude Desktop shows empty MCP server with no tools:

  1. Check if dist/ folder exists:

    dir C:\qlik-claude-mcp-main\dist\

    If not, run npm run build first.

  2. Check MCP server logs:

    type "$env:APPDATA\Claude\logs\mcp-server-qlik-mcp-os.log"
  3. Fully restart Claude Desktop:

    • Close Claude Desktop

    • Open Task Manager (Ctrl+Shift+Esc)

    • Find "Claude" and click End Task

    • Reopen Claude Desktop

  4. Verify config file location:

    type "$env:APPDATA\Claude\claude_desktop_config.json"

Server Hangs or Slow Response

If the server hangs or responds slowly, use optimized config with memory settings:

{
  "mcpServers": {
    "qlik-mcp-os": {
      "command": "node",
      "args": [
        "--max-old-space-size=4096",
        "C:\\qlik-claude-mcp-main\\dist\\index.js"
      ],
      "env": {
        "QLIK_TENANT_URL": "https://your-tenant.qlikcloud.com",
        "QLIK_API_KEY": "your-api-key",
        "NODE_ENV": "production"
      }
    }
  }
}

"Cannot find module" Error

This means npm run build was not executed:

cd C:\qlik-claude-mcp-main
npm install
npm run build

Then restart Claude Desktop.


Architecture

┌─────────────────┐                          ┌─────────────────┐
│  Claude Desktop │──stdio──┐                │   Qlik Cloud    │
│                 │         │                │   (REST APIs)   │
└─────────────────┘         ▼                │                 │
                    ┌─────────────────┐      ├─────────────────┤
┌─────────────────┐ │   MCP Server    │─────▶│ Qlik Sense Ent. │
│  ChatGPT / Web  │ │                 │      │ (QRS + Engine)  │
│  LLM Clients    │ │  59 Tools       │◀─────└─────────────────┘
└────────┬────────┘ │  17 Categories  │
         │          └─────────────────┘
         └──HTTP────────────┘

Transports:

  • stdio - Claude Desktop, VS Code (default)

  • Streamable HTTP - ChatGPT, web-based clients (POST/GET/DELETE /mcp)

Qlik Cloud: REST APIs (/api/v1/*) with API key authentication

Qlik Sense Enterprise (On-Premise):

  • QRS API (port 4242) - Management operations

  • Engine API (port 4747) - App creation, scripts, data connections via WebSocket

LLM Backends (optional):

  • Claude (Anthropic) | Azure OpenAI | OpenAI


Contributing

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Run tests: npm test

  5. Submit a pull request


License

MIT License - See LICENSE file for details.


Support


Built with the Model Context Protocol (MCP) for seamless AI-analytics integration.

Available Tools

34 tools
qlik_alert_deleteA

Delete a Qlik Cloud data alert.

Cloud-only feature - Not available for on-premise deployments.

Parameters:

  • alertId: Alert ID to delete (required)

Example: { "alertId": "alert-id-here" }

ParametersJSON Schema
NameRequiredDescriptionDefault
alertIdYesAlert ID to delete

TDQS

A3.8/5.0
Behavior3/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 that this is a deletion operation (destructive) and specifies it's cloud-only, but lacks details on permissions required, irreversible effects, error handling, or rate limits. The description adds some context but is incomplete for a destructive tool.

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, followed by cloud-only note and parameter details. The example is helpful but could be integrated more seamlessly; overall, it avoids unnecessary verbosity.

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 this is a destructive tool with no annotations and no output schema, the description is moderately complete. It covers purpose and cloud limitation but lacks details on behavioral aspects like confirmation prompts, return values, or error cases, leaving gaps for an agent to operate safely.

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 the schema fully documenting the single parameter 'alertId' as 'Alert ID to delete.' The description repeats this information without adding extra meaning (e.g., format, sourcing, or constraints), so it meets the baseline of 3 when schema coverage is high.

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 ('Delete') and target resource ('a Qlik Cloud data alert'), distinguishing it from sibling tools like qlik_alert_get (retrieve) and qlik_alert_list (list). It avoids tautology by not merely 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 Guidelines4/5

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

The description provides explicit context with 'Cloud-only feature - Not available for on-premise deployments,' which helps determine when to use this tool. However, it does not explicitly state when to use it versus alternatives like qlik_alert_trigger or provide exclusions beyond the cloud limitation.

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

qlik_alert_getA

Get detailed information about a specific Qlik Cloud data alert.

Cloud-only feature - Not available for on-premise deployments.

Parameters:

  • alertId: Alert ID to retrieve (required)

Returns:

  • Full alert details including condition, recipients, schedule, and execution history

Example: { "alertId": "alert-id-here" }

ParametersJSON Schema
NameRequiredDescriptionDefault
alertIdYesAlert ID to retrieve

TDQS

A4/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 adds useful context about the cloud-only limitation and specifies that it returns 'full alert details including condition, recipients, schedule, and execution history', which helps the agent understand the output. However, it does not cover other behavioral aspects such as error handling, authentication requirements, rate limits, or whether it's a read-only operation (implied but not stated).

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 well-structured with clear sections (overview, cloud note, parameters, returns, example), front-loaded with the core purpose, and every sentence adds value without redundancy. It efficiently conveys necessary information in a compact format.

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 (1 parameter, no output schema, no annotations), the description is reasonably complete: it states the purpose, cloud limitation, parameter, and return details. However, it could be more complete by explicitly mentioning that it's a read-only operation or providing more behavioral context, which would be beneficial since no annotations or output schema are present.

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

Parameters3/5

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

The input schema has 100% description coverage, with the parameter 'alertId' documented as 'Alert ID to retrieve'. The description repeats this information in the 'Parameters' section without adding additional meaning (e.g., format, source, or constraints). Since schema coverage is high, the baseline score of 3 is appropriate, as the description does not compensate with extra semantic details.

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 ('Get detailed information') and resource ('a specific Qlik Cloud data alert'), distinguishing it from sibling tools like qlik_alert_list (which lists alerts) and qlik_alert_delete (which deletes alerts). The phrase 'detailed information' adds specificity beyond just 'get'.

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 with 'Cloud-only feature - Not available for on-premise deployments', which helps determine when this tool is applicable. However, it does not explicitly state when to use this tool versus alternatives like qlik_alert_list or qlik_alert_trigger, nor does it mention prerequisites or exclusions beyond the cloud limitation.

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

qlik_alert_listA

List all Qlik Cloud data alerts with optional filtering.

Cloud-only feature - Not available for on-premise deployments.

Supports filtering and pagination:

  • spaceId: Filter by space ID

  • enabled: Filter by enabled/disabled status

  • limit: Maximum number of alerts to return (default: 50)

  • offset: Pagination offset (default: 0)

Returns:

  • Array of alert objects with configuration and status

Example: { "enabled": true, "limit": 20, "spaceId": "space-id-here" }

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceIdNoFilter by space ID
enabledNoFilter by enabled/disabled status
limitNoMaximum number of alerts to return
offsetNoPagination offset

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 full burden and does well by disclosing key behavioral traits: it's a read operation (implied by 'List'), supports filtering and pagination, returns an array of alert objects, and includes cloud-only deployment constraints. It doesn't mention rate limits or auth needs, but covers essential behavior 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 well-structured with bold headings and bullet points, making it easy to scan. It's appropriately sized with no wasted sentences, though the example at the end could be integrated more seamlessly. Overall, it's efficient and front-loaded with key 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?

Given the tool's moderate complexity (list operation with filtering), no annotations, and no output schema, the description is quite complete: it covers purpose, deployment constraints, parameters, behavior, and return format. It could improve by detailing the structure of returned alert objects, but it's sufficient 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 schema already documents all parameters fully. The description repeats parameter info (e.g., 'spaceId: Filter by space ID') without adding significant meaning beyond the schema, such as format details or usage examples for the parameters. Baseline 3 is appropriate as the schema does the heavy lifting.

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

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 ('List') and resource ('all Qlik Cloud data alerts'), and distinguishes it from siblings like qlik_alert_get (which retrieves a single alert) and qlik_alert_delete (which deletes alerts). The mention of 'optional filtering' adds precision.

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 with 'Cloud-only feature - Not available for on-premise deployments' and implies usage for listing alerts with filtering. However, it doesn't explicitly state when to use this tool versus alternatives like qlik_alert_get for single alerts or qlik_search for broader searches, missing explicit alternatives guidance.

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

qlik_alert_triggerA

Manually trigger a Qlik Cloud data alert.

Cloud-only feature - Not available for on-premise deployments.

Forces immediate execution of the alert to check conditions and send notifications if triggered.

Parameters:

  • alertId: Alert ID to trigger (required)

Returns:

  • Execution ID and status

Example: { "alertId": "alert-id-here" }

ParametersJSON Schema
NameRequiredDescriptionDefault
alertIdYesAlert ID to trigger

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses key behavioral traits: this is a manual triggering operation that forces immediate execution and sends notifications if conditions are met. However, it doesn't mention permission requirements, rate limits, or whether this action is logged/auditable.

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?

Well-structured with clear sections (purpose, limitation, behavior, parameters, returns, example). Every sentence earns its place, and the information is front-loaded with the core purpose stated 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?

For a single-parameter tool with no output schema, the description provides good context about what the tool does, its cloud-only limitation, and example usage. However, without annotations or output schema, it could better explain the return format ('Execution ID and status' is somewhat vague) and error conditions.

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 required alertId parameter. The description repeats the parameter information but doesn't add meaningful context beyond what's in the schema, such as where to find alert IDs or format expectations.

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 ('manually trigger') and resource ('Qlik Cloud data alert'), and distinguishes it from siblings like qlik_alert_get (retrieve) and qlik_alert_delete (remove). The cloud-only limitation further clarifies scope.

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 ('forces immediate execution of the alert to check conditions and send notifications'), but doesn't explicitly state when not to use it or mention alternatives like qlik_trigger_app_reload for different triggering scenarios.

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

qlik_answers_ask_questionA

Ask a question to a Qlik Answers AI assistant.

What is Qlik Answers?

  • Native Qlik Cloud Q&A assistant feature

  • Requires pre-configured assistant with knowledge base

  • Manages conversation threads

  • Uses Qlik's built-in AI

When to use this tool:

  • User has a Qlik Answers assistant configured

  • User wants to chat with their Qlik Answers assistant

  • User wants to continue an existing conversation thread

Workflow:

  1. First use qlik_answers_list_assistants to find the assistant ID

  2. Then use this tool with the assistantId and your question

  3. Optionally provide threadId to continue an existing conversation

Parameters:

  • assistantId (required): ID of the Qlik Answers assistant

  • question (required): The question to ask

  • threadId (optional): Continue existing conversation

  • createNewThread (default: true): Create new thread if none provided

  • threadName (optional): Name for new conversation thread

ParametersJSON Schema
NameRequiredDescriptionDefault
assistantIdYesAssistant ID (use qlik_answers_list_assistants to find it)
questionYesThe question to ask the assistant
threadIdNoExisting thread ID to continue conversation (optional)
createNewThreadNoCreate new thread if no threadId provided
threadNameNoName for new conversation thread (optional)

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 of behavioral disclosure. It effectively explains the conversational nature of the tool (manages threads, continues conversations), identifies prerequisites (requires pre-configured assistant), and describes the underlying technology (Qlik's built-in AI). It doesn't mention rate limits, authentication needs, or error handling, but provides solid 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.

Conciseness4/5

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

The description is well-structured with clear sections (What is Qlik Answers, When to use, Workflow, Parameters) and uses bullet points effectively. It's appropriately sized for a 5-parameter tool with no annotations, though the 'What is Qlik Answers' section could be slightly more 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?

For a tool with 5 parameters, 100% schema coverage, but no annotations or output schema, the description provides strong contextual completeness. It explains the tool's purpose, usage context, workflow dependencies, and behavioral characteristics. The main gap is lack of information about return values or response format, which would be helpful given no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema - it mentions the parameters but doesn't provide additional semantic context about format constraints, examples, or edge cases. 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 verb ('Ask a question') and resource ('Qlik Answers AI assistant'). It distinguishes from sibling tools by focusing on the Q&A assistant interaction rather than other Qlik operations like alerts, automations, or selections management.

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 ('User has a Qlik Answers assistant configured', 'User wants to chat with their Qlik Answers assistant', 'User wants to continue an existing conversation thread'). It also names a specific alternative tool ('qlik_answers_list_assistants') for prerequisite steps, creating clear workflow context.

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

qlik_answers_get_assistantC

Get details of a specific assistant

ParametersJSON Schema
NameRequiredDescriptionDefault
assistantIdYesAssistant ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action without disclosing behavioral traits like whether this is a read-only operation, error handling, rate limits, or authentication needs. It's minimal and doesn't add meaningful context beyond the obvious.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to parse quickly.

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

Completeness2/5

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

Given the tool has no annotations and no output schema, the description is incomplete. It doesn't explain what details are returned, potential errors, or how it fits into broader workflows, leaving significant gaps for an AI agent to understand its full context.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already documents the 'assistantId' parameter. The description doesn't add any semantic details beyond what's in the schema, such as format examples or where to obtain the ID, resulting in a baseline score.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'details of a specific assistant', making the purpose understandable. However, it doesn't distinguish this tool from its sibling 'qlik_answers_list_assistants' beyond implying this retrieves a single assistant versus a list.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'qlik_answers_list_assistants' or other get-related tools. It lacks context about prerequisites, such as needing an assistant ID from a list operation.

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

qlik_answers_list_assistantsB

List Qlik Answers AI assistants

ParametersJSON Schema
NameRequiredDescriptionDefault
searchNoSearch assistants by name
limitNoMaximum number of assistants to return
offsetNoOffset for pagination
spaceIdNoFilter by space ID

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states a list operation but doesn't mention critical traits like whether it's read-only, requires authentication, has rate limits, or returns paginated results. This leaves significant gaps in understanding how the tool behaves in practice.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, making it easy to grasp immediately, which is ideal for a straightforward list operation.

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 (4 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral traits, usage context, and output format, which are important for effective tool selection and invocation by an AI agent.

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%, meaning all parameters are documented in the input schema. The description adds no additional meaning beyond the schema, such as explaining interactions between parameters or typical use cases. This meets the baseline for high schema coverage but doesn't enhance understanding.

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

Purpose4/5

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

The description clearly states the action ('List') and resource ('Qlik Answers AI assistants'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'qlik_answers_get_assistant' or 'qlik_alert_list', which would require explicit scope or feature comparison.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'qlik_answers_get_assistant' or other list tools such as 'qlik_alert_list'. The description lacks context about prerequisites, ideal scenarios, or exclusions, leaving usage decisions ambiguous.

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

qlik_apply_selectionsC

Apply selections/filters to a Qlik app

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp ID
selectionsYesSelection criteria

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Apply selections/filters' implies a write operation that modifies app state, but the description doesn't specify whether this requires specific permissions, if it's reversible, what happens to existing selections, or any rate limits. This leaves significant gaps in understanding the tool's behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and target, making it easy to parse quickly.

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

Completeness2/5

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

Given the complexity of applying selections (a mutation operation) and the lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral aspects like side effects, error conditions, or what success looks like. For a tool that modifies app state, more context is needed to use it effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (appId and selections) with clear descriptions. The description adds no additional meaning beyond the schema, such as explaining the structure of 'selections' or providing examples. Baseline 3 is appropriate when the schema handles parameter documentation.

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

Purpose4/5

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

The description clearly states the action ('apply') and target ('selections/filters to a Qlik app'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'qlik_clear_selections' or 'qlik_get_current_selections', which would require more specific language about what 'apply' entails versus 'clear' or 'get'.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention prerequisites like needing an active app session or how it relates to 'qlik_clear_selections' or 'qlik_get_current_selections'. The description is standalone with no context for usage scenarios.

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

qlik_automation_get_detailsA

Get full details of a specific automation including its workflow definition.

Parameters:

  • automationId: The unique identifier of the automation

Returns:

  • Full automation object with workflow definition, connections, and configuration

ParametersJSON Schema
NameRequiredDescriptionDefault
automationIdYesThe automation ID to retrieve

TDQS

A4/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 indicates this is a read operation ('Get'), but does not specify permissions required, rate limits, or error conditions. The mention of returning 'full automation object' adds some context about output richness, but lacks details on pagination, authentication needs, or side effects.

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 in the first sentence, followed by structured sections for parameters and returns. Every sentence earns its place by providing essential information without redundancy, and the use of markdown formatting enhances readability without adding fluff.

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 (one parameter, no nested objects) and lack of output schema, the description is reasonably complete. It covers the purpose, parameter, and return value, but could improve by addressing behavioral aspects like error handling or authentication. The absence of annotations means the description should ideally include more operational context, but it suffices for basic 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%, with the parameter 'automationId' fully documented in the schema. The description adds minimal value by restating the parameter name and its purpose ('The unique identifier of the automation'), but does not provide additional semantics like format examples or constraints. With only one parameter, the baseline is high, but the description compensates slightly by clarifying the parameter's role.

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 ('Get full details') and resource ('a specific automation including its workflow definition'), distinguishing it from sibling tools like 'qlik_automation_list' (which lists automations) and 'qlik_automation_run' (which executes automations). The verb+resource combination is precise 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 Guidelines3/5

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

The description implies usage when detailed information about a specific automation is needed, but does not explicitly state when to use this tool versus alternatives like 'qlik_automation_list' for overviews or 'qlik_automation_run' for execution. No exclusions or prerequisites are mentioned, leaving usage context somewhat implicit.

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

qlik_automation_listA

List all automations that the user has access to.

Supports filtering, sorting, and pagination:

  • filter: Filter expression (e.g., "enabled eq true")

  • sort: Sort by field (e.g., "-createdDate" for descending)

  • limit: Maximum number of results to return

Returns:

  • Array of automation objects with id, name, description, enabled status, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
filterNoFilter expression (e.g., "enabled eq true")
sortNoSort by field (e.g., "-createdDate")
limitNoMaximum number of results

TDQS

A4/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. It discloses that the tool supports filtering, sorting, and pagination, and describes the return format ('Array of automation objects with id, name, description, enabled status, etc.'). However, it lacks details on permissions needed, rate limits, error handling, or whether it's a read-only operation (though implied by 'List').

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: the first sentence states the core purpose, followed by organized bullet points for features and returns. Every sentence earns its place with no redundant or verbose content, making it easy to scan and understand.

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 (a list operation with filtering/sorting/pagination), no annotations, and no output schema, the description is fairly complete: it explains the purpose, parameters, and return format. However, it could improve by detailing behavioral aspects like authentication needs or pagination mechanics, but it adequately covers the essentials for a list tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters (filter, sort, limit) with descriptions and examples. The description adds minimal value by restating the same information in bullet points without providing additional context or semantics beyond what the schema offers.

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 ('List') and resource ('all automations that the user has access to'), distinguishing it from sibling tools like qlik_automation_get_details (which gets details of a specific automation) and qlik_automation_list_runs (which lists runs rather than automations). It precisely defines the scope of what is being listed.

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 implies usage context by specifying 'all automations that the user has access to,' which suggests it's for browsing or filtering automations. However, it does not explicitly state when to use this tool versus alternatives like qlik_automation_get_details for specific details or qlik_automation_list_runs for runs, nor does it mention any exclusions or prerequisites.

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

qlik_automation_list_runsA

List all runs (executions) for a specific automation.

Supports filtering and sorting:

  • filter: Filter expression (e.g., "status eq 'failed'")

  • sort: Sort by field (e.g., "-startTime")

  • limit: Maximum number of results

Returns:

  • Array of run objects with id, status, startTime, endTime, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
automationIdYesThe automation ID
filterNoFilter expression
sortNoSort by field
limitNoMaximum number of results

TDQS

A4/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. It discloses the filtering/sorting capabilities and return format, which is helpful behavioral context. However, it doesn't mention pagination behavior, rate limits, authentication requirements, or whether this is a read-only operation (though 'List' implies reading). For a tool with no annotations, this is adequate but not comprehensive.

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: a clear purpose statement followed by bullet points for filtering/sorting support and return format. Every sentence earns its place, with no wasted words. The information is front-loaded with the 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?

For a list/read tool with no output schema, the description provides good context about filtering capabilities and return format. However, without annotations and with no output schema, it could benefit from more detail about the structure of returned run objects (beyond just listing id, status, startTime, endTime) and any limitations or pagination behavior.

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 providing concrete examples of filter and sort syntax (e.g., "status eq 'failed'", "-startTime") and clarifying that limit controls 'Maximum number of results' - though this is also in the schema. This additional semantic guidance elevates the score above baseline.

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 all runs') and resource ('for a specific automation'), distinguishing it from sibling tools like 'qlik_automation_get_details' (which gets details of a single automation) and 'qlik_automation_run' (which executes an automation). The verb+resource combination is precise 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 Guidelines3/5

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

The description implies usage context by specifying it's for listing runs of a specific automation, but doesn't explicitly state when to use this tool versus alternatives like 'qlik_automation_list' (which lists automations themselves) or other filtering/search tools. No explicit when-not-to-use guidance or prerequisite information is provided.

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

qlik_automation_runB

Execute an automation (queue a new run).

Parameters:

  • automationId: The automation to execute

Returns:

  • Run details including runId and status

Note: The automation must be enabled before it can be run.

ParametersJSON Schema
NameRequiredDescriptionDefault
automationIdYesThe automation ID to run

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions that the tool 'queues a new run' and requires the automation to be enabled, which adds some behavioral context. However, it lacks details on permissions needed, rate limits, whether the run is synchronous/asynchronous, or error handling for disabled automations, leaving significant gaps for a mutation tool.

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

Conciseness5/5

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

The description is well-structured with clear sections (Parameters, Returns, Note), front-loaded with the core action, and every sentence adds value without redundancy. It's appropriately sized for a single-parameter tool.

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 covers the basic action and prerequisite but lacks details on return values (only mentions 'Run details' vaguely), error cases, or integration with sibling tools. It's minimally adequate but has clear gaps 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 100%, with the schema documenting 'automationId' as 'The automation ID to run'. The description adds minimal value by restating this as 'The automation to execute' without providing additional semantics like format examples or constraints beyond what the schema already covers.

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 'execute' and resource 'automation' with the action 'queue a new run', making the purpose specific. However, it doesn't explicitly differentiate from sibling tools like 'qlik_automation_list_runs' or 'qlik_trigger_app_reload', which might involve related automation concepts.

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

Usage Guidelines3/5

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

The note 'The automation must be enabled before it can be run' provides implied guidance on prerequisites, but it doesn't explicitly state when to use this tool versus alternatives (e.g., compared to 'qlik_automation_list_runs' for checking runs or 'qlik_trigger_app_reload' for other automation types). No exclusions or clear alternatives are mentioned.

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

qlik_automl_get_deploymentC

Get deployment details

ParametersJSON Schema
NameRequiredDescriptionDefault
deploymentIdYesDeployment ID

TDQS

C2.1/5.0
Behavior1/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Get deployment details' implies a read-only operation but does not specify permissions required, rate limits, error conditions, or what the output contains (e.g., deployment status, model metrics). This leaves critical behavioral traits undocumented.

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

Conciseness5/5

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

The description is extremely concise with only three words, front-loading the core action. There is no wasted language or unnecessary elaboration, making it efficient in structure despite its informational shortcomings.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool that likely returns detailed deployment information. It fails to explain what 'details' entail, potential response formats, or error handling. For a tool with one parameter but unknown behavioral complexity, this minimal description is inadequate.

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 the single parameter 'deploymentId' documented in the schema. The description does not add any meaning beyond the schema, such as explaining where to find the deployment ID or its format. Baseline score of 3 applies since the schema adequately covers parameter semantics.

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

Purpose2/5

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

The description 'Get deployment details' restates the tool name 'qlik_automl_get_deployment' almost verbatim, making it tautological. It lacks specificity about what 'deployment' refers to (e.g., AutoML model deployment) or what 'details' include, failing to distinguish it from sibling tools like 'qlik_automl_list_deployments' or 'qlik_automl_get_experiment'.

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?

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites (e.g., needing a deployment ID), exclusions, or related tools like 'qlik_automl_list_deployments' for listing deployments first. The description offers no 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.

qlik_automl_get_experimentC

Get experiment details

ParametersJSON Schema
NameRequiredDescriptionDefault
experimentIdYesExperiment ID
includeVersionsNoInclude version list

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. 'Get experiment details' implies a read-only operation, but it doesn't specify if this requires authentication, has rate limits, returns structured data, or handles errors. For a tool with zero annotation coverage, this is a significant gap in transparency about how it behaves beyond basic retrieval.

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

Conciseness4/5

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

The description is a single, efficient sentence ('Get experiment details') that is front-loaded and wastes no words. However, it borders on under-specification, as it could benefit from slightly more detail without losing conciseness. Every word earns its place, but the overall brevity limits helpfulness.

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

Completeness2/5

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

Given the complexity of an 'experiment' tool with no annotations, no output schema, and a description that adds minimal context, this is incomplete. The description doesn't explain what 'details' are returned, how to interpret them, or any behavioral aspects like error handling. For a tool that likely returns structured data about experiments, more guidance is needed to be fully useful.

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

Parameters3/5

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

The input schema has 100% description coverage, with clear documentation for 'experimentId' and 'includeVersions'. The description adds no additional meaning beyond what the schema provides, such as explaining what an 'experiment' entails or how versions are structured. Given the high schema coverage, the baseline score of 3 is appropriate, as the schema does the heavy lifting without extra value from the description.

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

Purpose3/5

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

The description 'Get experiment details' clearly states the verb ('Get') and resource ('experiment details'), making the purpose understandable. However, it lacks specificity about what 'details' include and doesn't differentiate from sibling tools like 'qlik_automl_get_experiments' (which likely lists experiments) or 'qlik_automl_get_deployment' (which gets deployment details). This makes it vague compared to more precise alternatives.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. For example, it doesn't clarify if this should be used after listing experiments with 'qlik_automl_get_experiments' or how it differs from other get-related tools in the server. There's no mention of prerequisites, exclusions, or contextual cues, leaving usage entirely implicit.

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

qlik_automl_get_experimentsC

List AutoML experiments

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceIdNoFilter by space ID
limitNoMax results (default: 50)
offsetNoPagination offset

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but offers minimal behavioral information. It doesn't disclose whether this is a read-only operation, what authentication is needed, rate limits, return format, or pagination behavior. 'List' implies reading, but explicit safety/behavior details are missing.

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

Conciseness5/5

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

The description is extremely concise with just three words, front-loading the essential purpose. There's no wasted language or unnecessary elaboration, making it efficient for quick understanding.

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

Completeness2/5

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

For a list operation with 3 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what an 'AutoML experiment' is in this context, how results are returned, or provide any context about the Qlik environment. The agent would need to infer too much from minimal information.

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%, providing good documentation for all three parameters (spaceId, limit, offset). The description doesn't add any parameter semantics beyond what's in the schema, so it meets the baseline of 3 without compensating or enhancing the schema information.

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 ('List') and resource ('AutoML experiments'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'qlik_automl_get_experiment' (singular) or 'qlik_automl_list_deployments', which could cause confusion about scope.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives. The description doesn't mention filtering capabilities (spaceId), pagination (limit/offset), or differentiate it from related AutoML tools like 'qlik_automl_get_experiment' or 'qlik_automl_list_deployments'.

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

qlik_automl_list_deploymentsC

List all ML deployments

ParametersJSON Schema
NameRequiredDescriptionDefault
spaceIdNoFilter by space ID
limitNoMax results
offsetNoPagination offset

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits such as whether this is a read-only operation, pagination behavior (implied by parameters but not described), rate limits, authentication needs, or what the output looks like (no output schema).

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

Conciseness5/5

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

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action ('List all ML deployments'), making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool with 3 parameters and list functionality. It lacks details on output format, error handling, or usage context, leaving significant gaps for an agent to understand the tool's behavior fully.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents the three parameters (spaceId, limit, offset). The description adds no additional meaning beyond implying a list operation, which aligns with the schema. Baseline 3 is appropriate as the schema handles parameter documentation.

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

Purpose4/5

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

The description clearly states the verb ('List') and resource ('all ML deployments'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'qlik_automl_get_deployment' or 'qlik_automl_get_experiment', which would require more specificity about scope or output format.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'qlik_automl_get_deployment' for individual deployments or 'qlik_automl_get_experiments' for experiments, leaving the agent without context for selection.

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

qlik_cancel_reloadA

Cancels a running reload task in Qlik Cloud.

Use cases:

  • Stop long-running reload that's hung

  • Cancel reload after detecting errors

  • Free up resources

  • Emergency stop during maintenance

Note: Only running or queued reloads can be cancelled. Completed or already failed reloads cannot be cancelled.

ParametersJSON Schema
NameRequiredDescriptionDefault
reloadIdYesThe reload task ID to cancel

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 behavioral traits: it's a destructive action (implied by 'cancels'), has specific preconditions (only works on 'running or queued reloads'), and mentions outcomes ('Free up resources', 'Emergency stop'). However, it doesn't specify error handling or authentication requirements, 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 well-structured and front-loaded with the core purpose in the first sentence. The 'Use cases' and 'Note' sections are efficiently organized, with each bullet point and sentence earning its place by providing actionable context without redundancy. It's appropriately sized for the tool's complexity.

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 moderate complexity (destructive action with one parameter), no annotations, and no output schema, the description is largely complete. It covers purpose, usage guidelines, and behavioral constraints effectively. However, it lacks details on return values or error responses, which would be helpful for an agent invoking the tool.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'reloadId' documented as 'The reload task ID to cancel'. The description adds no additional parameter semantics beyond this, so it meets the baseline of 3 where the schema does the heavy lifting. No compensation is needed given the 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 specific action ('Cancels a running reload task') and resource ('in Qlik Cloud'), distinguishing it from sibling tools like 'qlik_trigger_app_reload' (which starts reloads) and 'qlik_get_reload_info' (which retrieves information). The verb 'cancels' is precise 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 Guidelines5/5

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

The description provides explicit usage guidelines with a 'Use cases' section listing four scenarios (e.g., 'Stop long-running reload that's hung') and a 'Note' specifying when to use ('Only running or queued reloads can be cancelled') and when not to use ('Completed or already failed reloads cannot be cancelled'). This clearly differentiates it from alternatives like 'qlik_get_reload_status' for checking status.

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

qlik_clear_selectionsB

Clear all selections in an app

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp ID

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states the action ('Clear all selections') but doesn't explain what 'clear' entails (e.g., irreversible deletion, reset to defaults), permission requirements, side effects, or error conditions. This is inadequate for a mutation tool with zero annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without any fluff. It's appropriately sized and front-loaded, with every word contributing to clarity.

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 this is a mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't cover behavioral aspects like what 'clear' means operationally, success/failure responses, or how it interacts with sibling tools (e.g., selections management). More context is needed for safe and 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?

The input schema has 100% description coverage, with 'appId' documented as 'App ID'. The description doesn't add parameter details beyond this, but with high schema coverage and only one parameter, the baseline is strong. No additional semantics are needed, though it doesn't compensate for any gaps.

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

Purpose4/5

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

The description clearly states the action ('Clear all selections') and the target resource ('in an app'), providing a specific verb+resource combination. However, it doesn't explicitly differentiate from sibling tools like 'qlik_get_current_selections' or 'qlik_apply_selections', which prevents a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as when to clear selections instead of getting or applying them. It lacks any mention of prerequisites, exclusions, or contextual triggers, leaving usage entirely implicit.

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

qlik_generate_appA

Create or update a Qlik Sense app with load script and data connections.

Cloud workflow:

  1. qlik_get_dataset_details → get connection info

  2. qlik_generate_app with script

On-Premise workflow (Engine API):

  1. Create app via Global.CreateApp

  2. Optionally create data connection via Doc.CreateConnection

  3. Set script via Doc.SetScript

  4. Reload via Doc.DoReload

  5. Save via Doc.DoSave

On-Premise Data Connections:

  • Folder: { "connectionName": "MyData", "connectionType": "folder", "connectionString": "C:\Data\" }

  • ODBC: { "connectionName": "SQLServer", "connectionType": "ODBC", "connectionString": "DSN=MyDSN" }

On-Premise Discovery (no appName/appId needed):

  • listOdbcDsns: true → List available ODBC data sources on server

  • listConnections: true + appId → List connections in existing app

Cloud Load Script - File from Space: IMPORTANT: Use format [lib://:DataFiles/]

  • Example: FROM [lib://BI TEAM WORKSPACE:DataFiles/sales.csv] (txt, codepage is 1252, embedded labels, delimiter is ',', msq);

  • Example: FROM [lib://Finance Team:DataFiles/report.qvd] (qvd);

  • WRONG format: FROM [lib://DataFiles (spaceId)/file.csv] ← Do NOT use this!

On-Premise Load Script Examples:

  • Folder: LOAD * FROM [lib://MyData/sales.csv] (txt, codepage is 1252, embedded labels, delimiter is ',', msq);

  • ODBC: LIB CONNECT TO 'MyODBC'; SQL SELECT * FROM Sales;

Returns: appId, appName, appLink, reloadStatus, connections, odbcDsns

ParametersJSON Schema
NameRequiredDescriptionDefault
appNameNoName for new app (creates in personal space)
appIdNoExisting app ID (updates the app)
loadScriptNoQlik load script
dataConnectionNoOn-Premise only: Create a data connection before loading
listConnectionsNoOn-Premise only: List existing connections in the app (requires appId)
listOdbcDsnsNoOn-Premise only: List available ODBC data sources on the server

TDQS

A4.7/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. It details operational workflows, platform-specific behaviors (Cloud vs. On-Premise), data connection formats, discovery options (listOdbcDsns, listConnections), and return values (appId, appName, etc.). It also warns about incorrect script formats, adding crucial context beyond basic functionality.

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

Conciseness3/5

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

The description is well-structured with clear sections (workflows, examples, returns) but is lengthy due to extensive examples and platform details. While every sentence adds value (e.g., script format warnings, connection examples), it could be more front-loaded; the core purpose is clear early, but the depth may overwhelm. It balances detail with clarity but isn't maximally concise.

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?

Given the tool's complexity (6 parameters, nested objects, no output schema), the description is highly complete. It covers all necessary context: purpose, usage workflows, parameter semantics, behavioral details, and return values. It compensates for the lack of annotations and output schema by providing comprehensive guidance, making it sufficient for an agent to use the tool effectively.

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 100% description coverage, so the baseline is 3. The description adds significant value by explaining parameter usage in context: it clarifies when appName vs. appId is used (create vs. update), provides examples for dataConnection objects, and details how listConnections and listOdbcDsns work in On-Premise scenarios. However, it doesn't fully elaborate on all parameter interactions 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 tool's purpose as 'Create or update a Qlik Sense app with load script and data connections,' specifying both the verb (create/update) and resource (Qlik Sense app). It distinguishes itself from sibling tools like qlik_get_dataset_details or qlik_trigger_app_reload by focusing on app generation with scripts and connections, not data retrieval or reload triggering.

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 guidelines with detailed workflows for Cloud and On-Premise scenarios, including step-by-step sequences (e.g., 'Cloud workflow: 1. qlik_get_dataset_details → get connection info 2. qlik_generate_app with script'). It specifies when to use certain parameters (e.g., 'On-Premise only:' for dataConnection) and includes examples of correct and incorrect formats, guiding the agent on proper invocation.

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

qlik_get_available_fieldsC

Get all fields in an app

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states a read operation ('Get') but lacks details on permissions, rate limits, output format, or whether it returns all fields at once or supports pagination. This is insufficient for a tool with potential complexity.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'fields' entail (e.g., data fields, metadata), the return structure, or error handling, leaving gaps for effective tool use in a broader context.

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

Parameters3/5

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

The schema description coverage is 100%, with the single parameter 'appId' clearly documented in the schema. The description doesn't add any extra meaning beyond implying the app context, so it meets the baseline for high schema coverage without compensating with additional insights.

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

Purpose4/5

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

The description clearly states the action ('Get') and resource ('all fields in an app'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'qlik_search' or 'qlik_get_dataset_details', which might also retrieve field-related information in different contexts.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify if this is for metadata exploration, selection filtering, or other use cases, nor does it mention prerequisites like needing an app ID or how it differs from similar tools in the list.

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

qlik_get_current_selectionsC

Get current selections in an app

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states a read operation ('Get'), implying it is likely non-destructive, but does not specify return format, permissions required, or any side effects. This is inadequate for a tool that retrieves data, as the agent lacks details on what 'current selections' entails or how results are structured.

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

Conciseness5/5

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

The description is a single, clear sentence with no wasted words. It is front-loaded with the core action and resource, making it highly efficient and easy to parse, which is ideal for conciseness.

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

Completeness2/5

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

Given the complexity of retrieving selections in an app, with no annotations and no output schema, the description is incomplete. It does not explain what 'current selections' are, the return format, or any limitations, leaving significant gaps for the agent to understand the tool's behavior and output.

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

Parameters3/5

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

The input schema has 100% description coverage, with 'appId' documented as 'App ID'. The description does not add any meaning beyond this, such as explaining where to find the app ID or its format. Since schema coverage is high, the baseline score of 3 is appropriate, as the description neither compensates nor detracts from the schema.

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

Purpose4/5

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

The description clearly states the verb ('Get') and resource ('current selections in an app'), making the purpose specific and understandable. However, it does not explicitly differentiate from sibling tools like 'qlik_get_available_fields' or 'qlik_clear_selections', which might involve selections in different ways, so it lacks sibling differentiation for a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, such as needing an app with existing selections, or contrast with tools like 'qlik_clear_selections' or 'qlik_apply_selections', leaving the agent without context for selection.

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

qlik_get_dataset_detailsC

Get detailed information about a dataset from the data catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetIdYesDataset ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't mention permissions, rate limits, error handling, or what 'detailed information' entails (e.g., format, depth). This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed information' includes, potential return formats, or any behavioral traits like safety or performance. For a tool in a complex domain like data cataloging, this leaves too much unspecified.

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

Parameters3/5

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

The input schema has 100% description coverage, with the single parameter 'datasetId' documented as 'Dataset ID'. The description doesn't add any extra meaning beyond this, such as where to find the ID or its format. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Get detailed information') and resource ('about a dataset from the data catalog'), making the purpose understandable. However, it doesn't differentiate from potential sibling tools like 'qlik_get_reload_info' or 'qlik_get_license_info' that also retrieve information, leaving some ambiguity about scope specificity.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify if this is for metadata, lineage, or other details, or how it differs from tools like 'qlik_get_lineage' or 'qlik_search'. This lack of context makes it harder for an agent to choose appropriately among siblings.

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

qlik_get_license_infoB

Get license information including type, allocated seats, and usage. Works on both Cloud and On-Premise (QRS license endpoint).

ParametersJSON Schema
NameRequiredDescriptionDefault
includeDetailsNoInclude detailed license breakdown by type

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions the tool works on both Cloud and On-Premise, which adds useful context about compatibility. However, it fails to disclose critical behavioral traits such as whether this is a read-only operation (implied by 'Get' but not explicit), authentication requirements, rate limits, error handling, or response format. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded, consisting of two concise sentences that directly state the tool's purpose and compatibility. Every sentence earns its place by providing essential information without redundancy or unnecessary details, making it efficient and easy to parse.

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 low complexity (1 optional parameter, no output schema, no annotations), the description is moderately complete. It covers the purpose and compatibility but lacks details on behavioral aspects like response format, error handling, or authentication needs. Without annotations or an output schema, the description should do more to compensate, but it provides a basic foundation that is adequate for a simple read operation.

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

Parameters3/5

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

The input schema has 1 parameter with 100% description coverage, providing a clear default and purpose for 'includeDetails'. The description does not add any parameter-specific information beyond what the schema already states. According to the rules, when schema_description_coverage is high (>80%), the baseline score is 3 even with no param info in the description, which applies here as the description mentions no parameters.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('license information'), including what information is retrieved (type, allocated seats, usage). It distinguishes itself from sibling tools by focusing on license data rather than alerts, automations, selections, or other Qlik resources. However, it doesn't explicitly differentiate from similar 'get' tools like qlik_get_tenant_info or qlik_get_user_info beyond the resource type.

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

Usage Guidelines3/5

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

The description provides some implied context by mentioning it works on both Cloud and On-Premise (QRS license endpoint), which suggests when this tool is applicable. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., qlik_get_tenant_info for broader tenant data) or any prerequisites or exclusions. The usage is clear but not fully articulated with alternatives or specific scenarios.

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

qlik_get_lineageA

Get lineage information for a dataset or resource. REQUIRES QRI from dataset.rawDataset.secureQri

IMPORTANT: The nodeId must be a QRI (Qlik Resource Identifier), not a regular ID.

  • Get QRI from: dataset.rawDataset.secureQri

  • Format: qri:qdf:space://[spaceId]#[itemId]

  • If you only have a dataset ID, first call get_dataset_details to get the QRI

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesQRI of the node (from dataset.rawDataset.secureQri)
directionNoDirection to traverse lineageboth
levelsNoNumber of levels to traverse (-1 for unlimited)
includeFieldsNoInclude field-level lineage
includeTablesNoInclude table-level lineage

TDQS

A4/5.0
Behavior3/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 important behavioral constraints (QRI requirement, format specification, prerequisite tool), but doesn't mention other potential traits like rate limits, authentication needs, or what the lineage output looks like. The description adds value but isn't comprehensive.

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 well-structured and front-loaded with the core purpose, followed by important requirements and usage notes. Every sentence earns its place: the first states the purpose, the second emphasizes the QRI requirement, and the bullet points provide critical format and prerequisite 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 the complexity (lineage tool with specific identifier requirements) and 100% schema coverage but no output schema, the description is reasonably complete. It covers the essential context (purpose, QRI requirement, format, prerequisite tool), though it could benefit from mentioning what lineage information is returned since there's no output schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 5 parameters thoroughly. The description adds context about the nodeId parameter (QRI format, where to get it), but doesn't provide additional meaning for other parameters beyond what the schema provides. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Get lineage information for a dataset or resource.' It specifies the verb ('Get') and resource ('lineage information'), but doesn't explicitly differentiate from sibling tools like 'qlik_get_dataset_details' or 'qlik_get_reload_info' beyond the lineage focus.

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 states the prerequisite ('REQUIRES QRI from dataset.rawDataset.secureQri'), specifies when to use an alternative ('If you only have a dataset ID, first call get_dataset_details to get the QRI'), and clarifies what not to use ('The nodeId must be a QRI, not a regular ID').

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

qlik_get_reload_infoC

Get app reload history and status

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesApp ID
limitNoNumber of reload records to return

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a 'get' operation, implying read-only behavior, but doesn't specify permissions needed, rate limits, pagination, or what the output format looks like (e.g., list of reload records with timestamps). This leaves significant gaps for a tool that retrieves historical data.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core purpose, making it easy to scan and understand quickly.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete for a tool that retrieves historical data. It doesn't explain what 'reload history and status' entails (e.g., timestamps, success/failure states, user details), leaving the agent uncertain about the tool's behavior and output.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents both parameters (appId and limit). The description doesn't add any meaning beyond this, such as explaining what an 'appId' represents in Qlik or how 'limit' affects performance. 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.

Purpose4/5

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

The description clearly states the verb 'get' and resource 'app reload history and status', making the purpose understandable. However, it doesn't distinguish this from sibling tools like 'qlik_get_reload_status' or 'qlik_get_license_info', which also retrieve information but about different resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'qlik_get_reload_status' (which might provide current status only) or 'qlik_cancel_reload' (which might stop a reload), leaving the agent without context for tool selection.

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

qlik_get_reload_statusA

Gets the current status of a reload task in Qlik Cloud.

Returns information about:

  • Current reload state (queued, running, succeeded, failed)

  • Progress percentage

  • Start and end times

  • Error messages if failed

  • Duration and performance metrics

Use this to monitor ongoing reloads or check historical reload results.

ParametersJSON Schema
NameRequiredDescriptionDefault
reloadIdYesThe reload task ID to check

TDQS

A4/5.0
Behavior3/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 the return information (states, progress, times, errors, metrics), which is useful behavioral context. However, it does not mention potential limitations like rate limits, authentication needs, or whether it's a read-only operation (implied by 'Gets' but not explicit).

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: the first sentence states the purpose clearly, followed by a bulleted list of return details and a usage guideline. Every sentence earns its place without redundancy or waste, 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 complexity (simple read operation with 1 parameter) and lack of annotations/output schema, the description is mostly complete: it covers purpose, return values, and usage. However, it could benefit from mentioning behavioral aspects like read-only nature or error handling, slightly reducing completeness for a tool with no structured safety hints.

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 the parameter 'reloadId' fully documented in the schema. The description does not add any additional meaning or syntax details beyond what the schema provides (e.g., format of reloadId). Baseline 3 is appropriate as the schema handles the parameter documentation adequately.

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 ('Gets the current status of a reload task') and resource ('in Qlik Cloud'), distinguishing it from siblings like 'qlik_cancel_reload' (which cancels) and 'qlik_trigger_app_reload' (which initiates). It provides a precise verb+resource combination that avoids tautology.

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 explicitly states 'Use this to monitor ongoing reloads or check historical reload results,' providing clear context for when to use the tool. However, it does not specify when not to use it or name alternatives (e.g., 'qlik_get_reload_info' might be a sibling for different info), so it lacks explicit exclusions or comparisons.

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

qlik_get_spaces_catalogA

Get comprehensive catalog of spaces in Qlik Cloud tenant.

Provides detailed information about:

  • Space metadata (type, name, description)

  • Members and permissions

  • Item counts (apps, automations, data connections)

  • Owner information

  • Creation and modification dates

Filter by:

  • Space type (personal, shared, managed, data)

  • Owner ID

  • Member user ID

  • Spaces with data assets

  • Minimum item count

Use cases:

  • Audit all spaces in tenant

  • Find unused spaces

  • Analyze space membership

  • Track space utilization

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch query for space name or description
spaceTypeNoFilter by space type
ownerIdNoFilter by space owner user ID
memberUserIdNoFilter spaces where user is a member
hasDataAssetsNoFilter spaces with data assets
minItemsNoMinimum number of items in space
limitNoMaximum number of results
offsetNoOffset for pagination
sortByNoField to sort byname
sortOrderNoSort orderasc
includeMembersNoInclude member list for each space
includeCountsNoInclude item counts for each space
forceNoForce refresh from server
useCacheNoUse cached data if available

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 describes what information is returned (metadata, members, counts, etc.) and filtering capabilities, but doesn't mention important behavioral aspects like authentication requirements, rate limits, error conditions, or whether this is a read-only operation (though 'Get' implies it).

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 well-structured with clear sections (overview, detailed information provided, filter options, use cases). Every sentence adds value without redundancy, and it's appropriately sized for a tool with 14 parameters and no annotations.

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 14 parameters, no annotations, and no output schema, the description does a reasonable job but has gaps. It explains what information is returned and filtering capabilities, but doesn't describe the return format, pagination behavior (beyond the limit/offset parameters), error handling, or authentication requirements that would be important for an agent to use it correctly.

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. The description adds value by grouping parameters conceptually ('Filter by:' section lists spaceType, ownerId, memberUserId, hasDataAssets, minItems) and providing context about what these filters achieve, though it doesn't cover all 14 parameters explicitly.

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 ('Get comprehensive catalog') and resource ('spaces in Qlik Cloud tenant'), distinguishing it from sibling tools like qlik_search_users or qlik_get_tenant_info by focusing exclusively on spaces. It provides detailed scope information about what the catalog includes.

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 use cases (audit, find unused spaces, analyze membership, track utilization) that indicate when this tool is appropriate. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools for different scenarios.

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

qlik_get_tenant_infoB

Get Qlik Cloud tenant information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It states it 'gets' information, implying a read-only operation, but doesn't specify what kind of tenant information is returned, whether it requires authentication, or any rate limits. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's appropriately sized for a simple tool and front-loads the core purpose immediately.

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 has no parameters and no output schema, the description is minimally adequate but incomplete. It doesn't explain what 'tenant information' includes or the format of the response, which would be helpful for an agent to understand the tool's output. With no annotations to supplement, the description should do more to compensate.

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, and the input schema has 100% description coverage (though empty). The description doesn't need to explain any parameters, so it meets the baseline expectation for parameterless tools. No additional parameter information is required or provided.

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 'Get Qlik Cloud tenant information' clearly states the verb ('Get') and resource ('Qlik Cloud tenant information'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'qlik_get_license_info' or 'qlik_get_user_info', which also retrieve specific information types, so it doesn't reach the highest clarity level.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'qlik_get_license_info' and 'qlik_get_user_info' that retrieve specific tenant-related data, there's no indication of what distinguishes this tool's scope or when it should be preferred over others.

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

qlik_get_user_infoC

Get detailed user information

ParametersJSON Schema
NameRequiredDescriptionDefault
userIdYesUser ID

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden but only states it 'gets' information without disclosing behavioral traits like authentication needs, rate limits, error handling, or what 'detailed' includes (e.g., permissions, activity). This is inadequate for a tool with potential complexity.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words, making it easy to parse. It's appropriately sized for a simple tool and front-loaded with the core action, earning full marks for conciseness.

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

Completeness2/5

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

Given no annotations and no output schema, the description is incomplete. It doesn't explain what 'detailed user information' returns, potential errors, or operational context, leaving significant gaps for an agent to use this tool effectively in a complex environment with many siblings.

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 the parameter 'userId' documented as 'User ID' in the schema. The description adds no additional meaning beyond this, such as format examples or constraints, so it meets the baseline for high schema coverage without compensating value.

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

Purpose4/5

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

The description 'Get detailed user information' clearly states the verb ('Get') and resource ('user information'), making the purpose understandable. However, it doesn't distinguish this from sibling tools like 'qlik_search_users' or specify what 'detailed' entails, preventing a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as 'qlik_search_users' for broader searches or other user-related tools. There's no mention of prerequisites, context, or exclusions, leaving usage ambiguous.

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

qlik_health_checkB

Check server status and service health including governance capabilities

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. While 'check' implies a read-only operation, it doesn't specify whether this requires special permissions, what format the health information returns, whether it includes performance metrics or just binary status, or if it has any rate limits. For a health monitoring tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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

Conciseness5/5

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

The description is a single, efficient sentence that immediately communicates the tool's purpose. Every word earns its place: 'check' establishes the action, 'server status and service health' specifies the scope, and 'including governance capabilities' adds important nuance. There's no redundancy or unnecessary elaboration.

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 parameterless tool with no output schema, the description provides adequate basic information about what the tool does. However, without annotations and with no output schema, it should ideally provide more context about what the health check returns (metrics, status codes, governance details) and any behavioral considerations. The description is minimally complete but could be more informative given the lack of structured metadata.

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 zero parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't waste space discussing non-existent parameters. It focuses on what the tool does rather than what inputs it accepts, which is correct for a parameterless tool.

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

Purpose4/5

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

The description clearly states the tool's purpose with specific verbs ('check server status and service health') and includes governance capabilities. It distinguishes itself from most siblings that focus on alerts, automations, selections, or data operations rather than system health monitoring. However, it doesn't explicitly differentiate from potential overlapping tools like 'qlik_get_tenant_info' or 'qlik_get_license_info' which might also provide health-related information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'qlik_get_tenant_info', 'qlik_get_license_info', and 'qlik_get_reload_status' that might provide overlapping or complementary health information, there's no indication of when this comprehensive health check is preferred over more specific tools. The description lacks any context about prerequisites, timing, or use cases.

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

qlik_insight_advisorA

Ask natural language questions about Qlik data using Insight Advisor.

Flow (no Claude API key needed):

Option A - With appId (recommended, works on all tenants):

  1. Call with "text" + "appId" → Returns app model (fields, measures, dimensions)

  2. Call with "refinedQuestion" + "appId" using exact field names → Returns data

Option B - Auto app detection (requires Qlik Answers enabled):

  1. Call with just "text" → Tries to identify app automatically

  2. If 405 error, use Option A instead

Example: Step 1: { "text": "show sales", "appId": "abc123" } → Returns model with fields like "Revenue", "Sales Region"

Step 2: { "appId": "abc123", "refinedQuestion": "show Revenue by Sales Region" } → Returns actual data and visualizations

If you get 405 error: Use qlik_search_apps first to find the app ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesNatural language question
refinedQuestionNoRefined question using exact field names from model (Step 2)
appIdNoApp ID - provide this to skip auto-detection and get model directly
conversationIdNoConversation ID for multi-app selection
selectedAppIdNoApp ID when continuing after multiple app selection

TDQS

A4.5/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 two-step flow, error conditions (405 error), and prerequisites (e.g., 'requires Qlik Answers enabled' for Option B). However, it lacks details on rate limits, authentication needs, or response formats, which are important for a tool with complex interactions.

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 well-structured with sections for flow, options, examples, and error handling, making it easy to follow. It is appropriately sized for a complex tool, but some sentences could be more concise (e.g., the example section is detailed but slightly verbose). Overall, it front-loads key information effectively.

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 (5 parameters, no output schema, no annotations), the description does a good job of explaining usage, flow, and error handling. It compensates for the lack of output schema by describing expected returns in examples (e.g., 'Returns model with fields' and 'Returns actual data'). However, it could benefit from more details on response formats or limitations to be fully complete.

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 significant value by explaining the semantics of parameters in the context of the two-step flow (e.g., 'text' + 'appId' for Step 1, 'refinedQuestion' + 'appId' for Step 2) and clarifying usage scenarios (e.g., 'conversationId' for multi-app selection). This goes beyond the schema's basic descriptions, though it doesn't cover all parameters equally.

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: 'Ask natural language questions about Qlik data using Insight Advisor.' It specifies the verb ('ask'), resource ('Qlik data'), and method ('using Insight Advisor'), distinguishing it from sibling tools like qlik_search or qlik_answers_ask_question by focusing on the Insight Advisor feature for natural language queries.

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 guidelines with two options (A and B), including when to use each based on appId availability and error handling (e.g., 'If 405 error, use Option A instead'). It also references an alternative tool (qlik_search_apps) for finding app IDs, offering clear alternatives and 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.

qlik_search_usersC

Search for users by name or email

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesUser name or email to search
limitNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool searches users but doesn't cover aspects like whether it's read-only, if it requires authentication, rate limits, pagination behavior (implied by 'limit' parameter but not explained), or what the output format is. This leaves significant gaps for a search operation.

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

Conciseness5/5

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

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core purpose, making it easy to parse quickly.

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

Completeness2/5

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

Given no annotations, no output schema, and incomplete parameter documentation (50% schema coverage), the description is insufficient. It doesn't explain behavioral traits, output format, or fully clarify parameters, making it inadequate for a search tool with two 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 50% (only 'query' has a description, 'limit' lacks one). The description adds minimal value by implying 'query' is for name or email, but doesn't clarify search semantics (e.g., partial matches, case sensitivity) or explain the 'limit' parameter's effect. It partially compensates for the coverage gap but not fully.

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

Purpose4/5

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

The description clearly states the tool's purpose with a specific verb ('Search') and resource ('users'), and specifies the search criteria ('by name or email'). However, it doesn't differentiate from sibling tools like 'qlik_search' or 'qlik_get_user_info', which could be related search/user tools, so it doesn't fully distinguish 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 Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'qlik_search' (which might search other entities) or 'qlik_get_user_info' (which might retrieve specific user details), leaving the agent without context for tool selection.

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

qlik_trigger_app_reloadA

Triggers a reload for a Qlik Cloud app. Can optionally wait for completion and poll for status.

Usage scenarios:

  • Trigger immediate reload after data source update

  • Schedule reload with monitoring

  • Partial reload to refresh specific data

  • Test reload with skip-store option

Parameters:

  • appId (required): The Qlik app ID to reload

  • partial (optional): If true, performs partial reload (default: false)

  • skipStore (optional): If true, skip saving to disk (default: false)

  • waitForCompletion (optional): If true, waits for reload to complete (default: false)

  • timeoutSeconds (optional): Timeout for waiting in seconds (default: 300)

  • pollIntervalSeconds (optional): How often to check status in seconds (default: 5)

ParametersJSON Schema
NameRequiredDescriptionDefault
appIdYesThe Qlik app ID to reload
partialNoPerform partial reload instead of full reload
skipStoreNoSkip storing the app after reload
waitForCompletionNoWait for the reload to complete before returning
timeoutSecondsNoMaximum time to wait for completion (seconds)
pollIntervalSecondsNoInterval between status checks (seconds)

TDQS

A4/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. It discloses key behavioral traits like the ability to wait for completion and poll for status, and mentions options like partial reload and skip-store. However, it doesn't cover important aspects like authentication requirements, rate limits, error handling, or what happens when the reload fails.

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 well-structured with clear sections (purpose, usage scenarios, parameters) and front-loads the core functionality. While slightly verbose in the parameter section (which duplicates schema information), the usage scenarios add valuable context efficiently.

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 6 parameters, no annotations, and no output schema, the description provides good usage context but lacks critical information about what the tool returns, error conditions, or system limitations. The usage scenarios help, but more behavioral transparency would be needed for full completeness.

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 100% schema description coverage, the schema already documents all parameters thoroughly. The description's parameter section adds minimal value beyond what's in the schema - it restates parameter names and basic purposes but doesn't provide additional context about how parameters interact or advanced usage patterns.

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 ('Triggers a reload') and resource ('for a Qlik Cloud app'), distinguishing it from sibling tools like qlik_cancel_reload, qlik_get_reload_info, and qlik_get_reload_status. It precisely defines the tool's function without being tautological.

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 'Usage scenarios' section explicitly lists four specific contexts for when to use this tool (e.g., 'Trigger immediate reload after data source update', 'Schedule reload with monitoring'), providing clear guidance on appropriate use cases without needing to reference alternatives.

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. 34 tool updatesv1.0.0
    • First observedqlik_alert_delete
    • First observedqlik_alert_get
    • First observedqlik_alert_list
    • First observedqlik_alert_trigger
    • First observedqlik_answers_ask_question
    • First observedqlik_answers_get_assistant
    • First observedqlik_answers_list_assistants
    • First observedqlik_apply_selections
    • First observedqlik_automation_get_details
    • First observedqlik_automation_list
    • First observedqlik_automation_list_runs
    • First observedqlik_automation_run
    • First observedqlik_automl_get_deployment
    • First observedqlik_automl_get_experiment
    • First observedqlik_automl_get_experiments
    • First observedqlik_automl_list_deployments
    • First observedqlik_cancel_reload
    • First observedqlik_clear_selections
    • First observedqlik_generate_app
    • First observedqlik_get_available_fields
    • First observedqlik_get_current_selections
    • First observedqlik_get_dataset_details
    • First observedqlik_get_license_info
    • First observedqlik_get_lineage
    • First observedqlik_get_reload_info
    • First observedqlik_get_reload_status
    • First observedqlik_get_spaces_catalog
    • First observedqlik_get_tenant_info
    • First observedqlik_get_user_info
    • First observedqlik_health_check
    • First observedqlik_insight_advisor
    • First observedqlik_search
    • First observedqlik_search_users
    • First observedqlik_trigger_app_reload

TDQS

B3.2/5.0
Disambiguation4/5

Most tools are clearly distinct with specific resource-action pairs, such as qlik_alert_delete vs. qlik_alert_get. However, some overlap exists in search and data retrieval tools (e.g., qlik_search and qlik_get_spaces_catalog both help find resources), which could cause minor confusion. The descriptions generally help clarify boundaries, but the high tool count increases the risk of misselection.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a clear 'qlik_' prefix and verb_noun structure, such as qlik_alert_delete, qlik_automation_run, and qlik_get_license_info. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming conventions across the 34 tools.

Tool Count2/5

With 34 tools, the set feels overly heavy for a single server, bordering on excessive. While Qlik's domain is broad (alerts, automations, apps, searches, etc.), the count suggests fragmentation rather than a well-scoped surface. A more focused grouping into subdomains or fewer, more versatile tools would improve coherence.

Completeness4/5

The tool set provides comprehensive coverage for Qlik Cloud and on-premise operations, including CRUD for alerts, automations, and data interactions, plus utilities like search and health checks. Minor gaps exist, such as missing update tools for some resources (e.g., alerts only have delete/get/list/trigger), but agents can work around these with the available tools.

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

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/undsoul/qlik-claude-mcp'

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