Qlik MCP Server
The Qlik MCP Server connects AI assistants (Claude, ChatGPT, VS Code) to Qlik Cloud and Qlik Sense Enterprise environments, enabling natural language interaction with data, analytics, and administration through 59 tools (Cloud) or 9 core tools (On-Premise).
Search & Discovery
Unified search across apps, datasets, automations, and data connections with filtering by owner, tags, dates, and spaces
Natural Language Analytics
Ask plain-English questions via Insight Advisor and Qlik Answers AI assistants
App Lifecycle Management
Create, update, reload, and analyze apps; manage load scripts, sheets, bookmarks, master items, and variables
Reload Management
Trigger, monitor, cancel reloads, and retrieve reload history
Data Operations
Apply/clear field selections, retrieve field values, list data connections, and track data lineage (Cloud-only)
Governance & Administration
Manage users, roles, spaces, licenses, and tenant information; health check for server/connectivity status
Automations & Alerts
List, run, and monitor automations; list, trigger, and delete data alerts
AI/ML Integration
Access AutoML experiments, ML deployments, and Qlik Answers assistants
Business Intelligence
Manage business glossaries, data products, datasets, and dataset profiling stats
Multi-Platform & Multi-LLM Support
Works via stdio (Claude Desktop) or Streamable HTTP (ChatGPT, VS Code); supports Claude (Anthropic), Azure OpenAI, and OpenAI backends
Enables natural language interaction with Qlik Cloud and Qlik Sense Enterprise environments, providing 34 tools across 12 categories for managing apps, reloads, users, spaces, data lineage, AutoML experiments, Qlik Answers assistants, and governance operations. Supports multi-tenant and hybrid configurations.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Qlik MCP Servershow me sales trends for the last quarter"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Node.js 18+ - Download from nodejs.org
Claude Desktop - Download from claude.ai/download
Qlik Cloud tenant OR Qlik Sense Enterprise server
Step 1: Download the MCP Server
Windows (Recommended)
Download the ZIP file from GitHub:
Click green "Code" button → "Download ZIP"
*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\
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 installStep 2: Install Claude Desktop
Download Claude Desktop from claude.ai/download
Install and sign in with your Anthropic account
Step 3: Get Your Qlik API Key
For Qlik Cloud:
Log in to your Qlik Cloud tenant
Click your profile icon (top right) → Profile settings
Go to API keys section
Click Generate new key
Copy and save the API key (you won't see it again!)
For Qlik Sense Enterprise (On-Premise):
Open QMC → Start → Certificates
Add a machine name (e.g.,
MCP-Client)Click Export certificates
Important settings:
Certificate file format: Choose PEM format (not Windows format)
Check Include secret key
Export and save the files:
client.pem- Client certificateclient_key.pem- Private key
Note the paths where you saved these files
Step 4: Configure Claude Desktop
Open Config File (Easiest Way)
Open Claude Desktop
Click Settings (gear icon) or File menu
Click "Edit Config" or "Settings" → "Developer" → "Edit Config"
This opens
claude_desktop_config.jsonin your default text editorPaste the configuration below and Save (Ctrl+S)
Config file location:
Windows:
C:\Users\{YourName}\AppData\Roaming\Claude\claude_desktop_config.jsonmacOS:
~/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
Open Qlik Management Console (QMC)
Go to Certificates under Configure System
Click Export certificates
Enter machine name (e.g., your server hostname)
Check Include secret key
Export format: Platform independent PEM-format
Click Export - saves to:
C:\ProgramData\Qlik\Sense\Repository\Exported Certificates\<machinename>\
The folder will contain:
client.pem- Client certificateclient_key.pem- Client private keyroot.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_PATHis the folder containingclient.pem,client_key.pem, androot.pem
QLIK_USER_DIRECTORYandQLIK_USER_IDspecify 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/responseGET /mcp- Server-Sent Events (SSE) streamingDELETE /mcp- Session cleanupGET /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 buildmacOS / Linux
npm run buildVerify build succeeded - you should see dist/index.js created.
Step 6: Restart Claude Desktop
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
Reopen Claude Desktop
Start a new conversation and try: "Check my Qlik health"
Verify It's Working
In Claude Desktop, type:
Check my Qlik environment healthYou 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 |
| Search apps, datasets, automations, and more |
| Check server status and connectivity |
| Get app metadata (name, owner, space, status) |
| Get full app structure (tables, fields, sheets, measures, bookmarks, variables) |
| Trigger an app reload |
| Check reload task status |
| Create or update a Qlik app with script and data connections |
| Extract the full load script from an app |
| Ask natural language questions about app data |
Cloud-Only Tools (50 tools)
1. Governance (4) - Cloud Only
Tool | Description |
| Get tenant information |
| Search users by name or email |
| Get detailed user information |
| Get license and seat allocation |
2. Reload & History (2) - Cloud Only
Tool | Description |
| Cancel a running reload |
| Get reload history for an app |
3. Spaces & Catalog (2) - Cloud Only
Tool | Description |
| List all spaces |
| Get space contents with all items |
4. Lineage (2) - Cloud Only
Tool | Description |
| Get data lineage for a resource |
| Get app data sources and connection info |
5. Data & Selections (5) - Cloud Only
Tool | Description |
| Get dataset/data connection details |
| Apply field selections |
| Clear all selections |
| Get active selections |
| List all fields in an app |
6. Master Items (4) - Cloud Only
Tool | Description |
| List master measures with expressions |
| List master dimensions |
| Get all variables with definitions |
| Create or update a variable |
7. Field Values (1) - Cloud Only
Tool | Description |
| Get distinct values for a field |
8. Data Connections (2) - Cloud Only
Tool | Description |
| Get data connection details for an app |
| List tenant-level data connections |
9. Bookmarks & Stories (3) - Cloud Only
Tool | Description |
| List bookmarks with selections |
| Apply a saved bookmark |
| List data stories |
10. App Generation (1)
Tool | Description | Platforms |
| 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:
Create app with inline data:
"Create a Qlik app called 'Sales Analysis' with sample data for products, regions, and sales amounts"Create app using existing dataset:
"Create a Qlik app that loads from the 'Sales.qvd' dataset in my Data space"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:
Create App -
Global.CreateApp()Create Data Connection (optional) -
Doc.CreateConnection()Set Load Script -
Doc.SetScript()Execute Reload -
Doc.DoReload()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:
Discover data sources:
"What ODBC data sources are available on the Qlik server?"Explore existing app connections:
"List the data connections in the Sales Dashboard app"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 |
| List all sheets in an app |
| Get sheet objects and chart details |
12. Automation (4) - Cloud Only
Tool | Description |
| List all automations |
| Get automation details |
| Execute an automation |
| List automation runs |
13. Alerts (4) - Cloud Only
Tool | Description |
| List all data alerts |
| Get alert details |
| Manually trigger an alert |
| Delete an alert |
14. Qlik Answers (3) - Cloud Only
Tool | Description |
| List AI assistants |
| Get assistant details |
| Ask a question to an assistant |
15. AutoML (4) - Cloud Only
Tool | Description |
| List ML experiments |
| Get experiment details |
| List ML deployments |
| Get deployment details |
16. Business Glossary (5) - Cloud Only
Tool | Description |
| List business glossaries |
| Get glossary details |
| Get term details |
| Create a new term |
| Delete a term |
17. Datasets & Data Products (3) - Cloud Only
Tool | Description |
| Get dataset profiling stats |
| List data products |
| 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 = USAReload 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 |
Items API | QRS App API ( |
Cloud Reloads | QRS Reload Tasks ( |
Insight Advisor | NL Query API ( |
App Create/Script | Engine API ( |
Data Connections | Engine API ( |
ODBC Discovery | Engine API ( |
Testing
Quick Smoke Test
export QLIK_TENANT_URL=https://your-tenant.qlikcloud.com
export QLIK_API_KEY=your-api-key
node test-cloud-quick.cjsFull Handler Test
node test-mcp-handlers.mjsEnvironment Variables
Core Settings
Variable | Required | Description |
| Yes | Qlik Cloud URL or Qlik Sense Enterprise server URL |
| No |
|
For Qlik Cloud:
Variable | Required | Description |
| Yes | API key from Qlik Cloud hub |
For Qlik Sense Enterprise (On-Premise):
Variable | Required | Description |
| Yes | Folder containing |
| Yes | Windows domain (e.g., |
| Yes | Username to act as (e.g., |
| No | Virtual proxy prefix (if configured) |
Transport Settings (for ChatGPT / HTTP clients)
Variable | Required | Description |
| No | Transport type: |
| No | HTTP server port (default: |
| No | HTTP server host (default: |
| No | Comma-separated CORS origins |
| No | Requests per minute per session (default: |
| No | Session timeout in seconds (default: |
LLM Provider Settings (optional)
Variable | Required | Description |
| No | LLM backend: |
For Claude (Anthropic):
Variable | Required | Description |
| No | Anthropic API key |
| No | Model name (default: |
For Azure OpenAI:
Variable | Required | Description |
| Yes* | Azure OpenAI endpoint URL |
| Yes* | Azure OpenAI API key |
| No | Deployment name (default: |
| No | API version (default: |
For OpenAI:
Variable | Required | Description |
| Yes* | OpenAI API key |
| No | Model name (default: |
*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:
Check if dist/ folder exists:
dir C:\qlik-claude-mcp-main\dist\If not, run
npm run buildfirst.Check MCP server logs:
type "$env:APPDATA\Claude\logs\mcp-server-qlik-mcp-os.log"Fully restart Claude Desktop:
Close Claude Desktop
Open Task Manager (Ctrl+Shift+Esc)
Find "Claude" and click End Task
Reopen Claude Desktop
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 buildThen 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
Fork the repository
Create a feature branch
Make your changes
Run tests:
npm testSubmit a pull request
License
MIT License - See LICENSE file for details.
Support
Issues: GitHub Issues
Documentation: See
/docsfolderQlik Community: community.qlik.com
Built with the Model Context Protocol (MCP) for seamless AI-analytics integration.
Available Tools
34 toolsqlik_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" }
| Name | Required | Description | Default |
|---|---|---|---|
| alertId | Yes | Alert ID to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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" }
| Name | Required | Description | Default |
|---|---|---|---|
| alertId | Yes | Alert ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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" }
| Name | Required | Description | Default |
|---|---|---|---|
| spaceId | No | Filter by space ID | |
| enabled | No | Filter by enabled/disabled status | |
| limit | No | Maximum number of alerts to return | |
| offset | No | Pagination offset |
TDQS
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.
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.
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.
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.
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.
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" }
| Name | Required | Description | Default |
|---|---|---|---|
| alertId | Yes | Alert ID to trigger |
TDQS
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.
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.
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.
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.
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.
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:
First use qlik_answers_list_assistants to find the assistant ID
Then use this tool with the assistantId and your question
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
| Name | Required | Description | Default |
|---|---|---|---|
| assistantId | Yes | Assistant ID (use qlik_answers_list_assistants to find it) | |
| question | Yes | The question to ask the assistant | |
| threadId | No | Existing thread ID to continue conversation (optional) | |
| createNewThread | No | Create new thread if no threadId provided | |
| threadName | No | Name for new conversation thread (optional) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| assistantId | Yes | Assistant ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| search | No | Search assistants by name | |
| limit | No | Maximum number of assistants to return | |
| offset | No | Offset for pagination | |
| spaceId | No | Filter by space ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| selections | Yes | Selection criteria |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| automationId | Yes | The automation ID to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter expression (e.g., "enabled eq true") | |
| sort | No | Sort by field (e.g., "-createdDate") | |
| limit | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| automationId | Yes | The automation ID | |
| filter | No | Filter expression | |
| sort | No | Sort by field | |
| limit | No | Maximum number of results |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| automationId | Yes | The automation ID to run |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| deploymentId | Yes | Deployment ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| experimentId | Yes | Experiment ID | |
| includeVersions | No | Include version list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. '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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| spaceId | No | Filter by space ID | |
| limit | No | Max results (default: 50) | |
| offset | No | Pagination offset |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| spaceId | No | Filter by space ID | |
| limit | No | Max results | |
| offset | No | Pagination offset |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reloadId | Yes | The reload task ID to cancel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the 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.
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.
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.
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.
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.
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:
qlik_get_dataset_details → get connection info
qlik_generate_app with script
On-Premise workflow (Engine API):
Create app via Global.CreateApp
Optionally create data connection via Doc.CreateConnection
Set script via Doc.SetScript
Reload via Doc.DoReload
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
| Name | Required | Description | Default |
|---|---|---|---|
| appName | No | Name for new app (creates in personal space) | |
| appId | No | Existing app ID (updates the app) | |
| loadScript | No | Qlik load script | |
| dataConnection | No | On-Premise only: Create a data connection before loading | |
| listConnections | No | On-Premise only: List existing connections in the app (requires appId) | |
| listOdbcDsns | No | On-Premise only: List available ODBC data sources on the server |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| datasetId | Yes | Dataset ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| includeDetails | No | Include detailed license breakdown by type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | QRI of the node (from dataset.rawDataset.secureQri) | |
| direction | No | Direction to traverse lineage | both |
| levels | No | Number of levels to traverse (-1 for unlimited) | |
| includeFields | No | Include field-level lineage | |
| includeTables | No | Include table-level lineage |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | App ID | |
| limit | No | Number of reload records to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a '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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reloadId | Yes | The reload task ID to check |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search query for space name or description | |
| spaceType | No | Filter by space type | |
| ownerId | No | Filter by space owner user ID | |
| memberUserId | No | Filter spaces where user is a member | |
| hasDataAssets | No | Filter spaces with data assets | |
| minItems | No | Minimum number of items in space | |
| limit | No | Maximum number of results | |
| offset | No | Offset for pagination | |
| sortBy | No | Field to sort by | name |
| sortOrder | No | Sort order | asc |
| includeMembers | No | Include member list for each space | |
| includeCounts | No | Include item counts for each space | |
| force | No | Force refresh from server | |
| useCache | No | Use cached data if available |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| userId | Yes | User ID |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries 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.
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.
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.
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.
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.
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):
Call with "text" + "appId" → Returns app model (fields, measures, dimensions)
Call with "refinedQuestion" + "appId" using exact field names → Returns data
Option B - Auto app detection (requires Qlik Answers enabled):
Call with just "text" → Tries to identify app automatically
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Natural language question | |
| refinedQuestion | No | Refined question using exact field names from model (Step 2) | |
| appId | No | App ID - provide this to skip auto-detection and get model directly | |
| conversationId | No | Conversation ID for multi-app selection | |
| selectedAppId | No | App ID when continuing after multiple app selection |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It 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.
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.
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.
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.
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.
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_searchA
Unified search for Qlik resources across Cloud and On-Premise deployments.
Replaces: qlik_search_apps, qlik_get_space_items
Supported resource types:
app: Qlik Sense applications
dataset: Data files and datasets (Cloud only)
dataconnection: Data connections (Cloud only)
automation: Automations (Cloud only)
all: Search all types
Platform differences:
Cloud: Uses Spaces, supports all resource types
On-Premise: Uses Streams, apps only
Search examples:
Find apps by name: { "query": "Sales Report" }
Find in specific space: { "spaceName": "Finance" }
Find by owner: { "ownerName": "john" }
Apps with reload info: { "types": ["app"], "includeReloadInfo": true }
Recent items: { "sortBy": "modified", "sortOrder": "desc" }
Group by space: { "groupBy": "space" }
Items created this year: { "createdAfter": "2024-01-01" }
Items modified last month: { "modifiedAfter": "2024-11-01" }
Old items: { "modifiedBefore": "2023-01-01" }
Response ID fields:
id/resourceId: Use this for other tools (qlik_get_dataset_details, qlik_trigger_app_reload, etc.)
itemId: Only for items API operations (rarely needed)
resourceType: Original resource type from API
Parameters:
query: Text search (name, description, tags)
types: Resource types to search ['app', 'dataset', 'automation', 'dataconnection', 'all']
spaceId/spaceName: Filter by space (Cloud) or stream (On-Premise)
ownerId/ownerName: Filter by owner
tags: Filter by tags
includeReloadInfo: Include reload status for apps
groupBy: Group results by 'space' or 'type'
limit/offset: Pagination
sortBy/sortOrder: Sorting
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Search text - matches name, description, and tags | |
| types | No | Resource types to search. On-Premise only supports "app" | |
| spaceId | No | Space ID (Cloud) or Stream ID (On-Premise) | |
| spaceName | No | Space name (Cloud) or Stream name (On-Premise) - resolved to ID | |
| allSpaces | No | Search all spaces/streams | |
| ownerId | No | Filter by owner user ID | |
| ownerName | No | Filter by owner name or email | |
| tags | No | Filter by tags | |
| createdAfter | No | Filter items created after this date (ISO format, e.g., "2024-01-01") | |
| createdBefore | No | Filter items created before this date (ISO format) | |
| modifiedAfter | No | Filter items modified after this date (ISO format, e.g., "2024-06-01") | |
| modifiedBefore | No | Filter items modified before this date (ISO format) | |
| includeReloadInfo | No | Include reload status for apps (adds extra API calls) | |
| includeDetails | No | Include full metadata | |
| groupBy | No | Group results by space or type | none |
| limit | No | Maximum results to return (after filtering) | |
| offset | No | Offset for pagination | |
| maxFetchItems | No | Maximum items to fetch from API before filtering (default: 10000). Use lower values for faster searches on large tenants. | |
| sortBy | No | Sort field | name |
| sortOrder | No | Sort order | asc |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively adds context beyond basic functionality by explaining platform differences, response ID usage (e.g., 'id/resourceId: Use this for other tools'), and performance considerations (implied in search examples). However, it lacks explicit details on rate limits, authentication needs, or error handling, leaving some behavioral aspects uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (e.g., 'Replaces,' 'Supported resource types,' 'Platform differences,' 'Search examples,' 'Response ID fields,' 'Parameters'), making it easy to navigate. It is appropriately sized for a complex tool but includes some redundancy (e.g., parameter list overlaps with schema). Most sentences earn their place by providing useful context or examples.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (20 parameters, no annotations, no output schema), the description does a good job of providing context through examples, platform differences, and response field explanations. It compensates for the lack of output schema by detailing 'Response ID fields.' However, it could be more complete by addressing potential limitations or error scenarios, which are relevant for a search tool with many parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the input schema already documents all 20 parameters thoroughly. The description lists parameters with brief explanations but does not add significant meaning beyond what the schema provides (e.g., it repeats 'query: Text search' similar to the schema). Given the high schema coverage, a baseline score of 3 is appropriate, as the description offers minimal additional semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a 'unified search for Qlik resources across Cloud and On-Premise deployments,' specifying the verb ('search') and resource scope ('Qlik resources'). It explicitly distinguishes itself from sibling tools by stating it 'Replaces: qlik_search_apps, qlik_get_space_items,' making its purpose specific and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool versus alternatives by listing replaced tools and detailing platform differences (e.g., 'Cloud: Uses Spaces, supports all resource types' vs. 'On-Premise: Uses Streams, apps only'). It includes practical examples like 'Find apps by name' and 'Find in specific space,' which help clarify appropriate contexts for use.
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
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | User name or email to search | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states 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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| appId | Yes | The Qlik app ID to reload | |
| partial | No | Perform partial reload instead of full reload | |
| skipStore | No | Skip storing the app after reload | |
| waitForCompletion | No | Wait for the reload to complete before returning | |
| timeoutSeconds | No | Maximum time to wait for completion (seconds) | |
| pollIntervalSeconds | No | Interval between status checks (seconds) |
TDQS
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.
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.
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.
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.
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.
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.
34 tool updates
v1.0.0- First observed
qlik_alert_delete - First observed
qlik_alert_get - First observed
qlik_alert_list - First observed
qlik_alert_trigger - First observed
qlik_answers_ask_question - First observed
qlik_answers_get_assistant - First observed
qlik_answers_list_assistants - First observed
qlik_apply_selections - First observed
qlik_automation_get_details - First observed
qlik_automation_list - First observed
qlik_automation_list_runs - First observed
qlik_automation_run - First observed
qlik_automl_get_deployment - First observed
qlik_automl_get_experiment - First observed
qlik_automl_get_experiments - First observed
qlik_automl_list_deployments - First observed
qlik_cancel_reload - First observed
qlik_clear_selections - First observed
qlik_generate_app - First observed
qlik_get_available_fields - First observed
qlik_get_current_selections - First observed
qlik_get_dataset_details - First observed
qlik_get_license_info - First observed
qlik_get_lineage - First observed
qlik_get_reload_info - First observed
qlik_get_reload_status - First observed
qlik_get_spaces_catalog - First observed
qlik_get_tenant_info - First observed
qlik_get_user_info - First observed
qlik_health_check - First observed
qlik_insight_advisor - First observed
qlik_search - First observed
qlik_search_users - First observed
qlik_trigger_app_reload
TDQS
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.
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.
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.
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
Connects AI assistants to CloudQuell multi-cloud and AI cost, savings, anomaly, and budget data.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect Claude, Cursor, or ChatGPT to your business data. Ask questions, get answers.
- mcpOAuthcom.keboola
Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/undsoul/qlik-claude-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server