IBM watsonx.data MCP Server
OfficialThe IBM watsonx.data MCP Server enables AI assistants to interact with IBM watsonx.data lakehouses, providing tools across platform management, engine operations, catalog management, query execution, Spark applications, and data ingestion.
Platform Management
Retrieve instance details including status, version, region, enabled features, and console URL.
Engine Operations
List available Presto, Prestissimo, and Spark engines.
Create new Presto, Prestissimo, or Spark engines with custom configurations (including autoscaling).
Pause, resume, and restart Presto, Prestissimo, and Spark engines.
Scale engines by adjusting node counts and types.
Update engine configuration, display name, description, and tags.
Catalog & Schema Management
List schemas within a catalog and tables within a schema.
Describe tables with detailed column definitions, types, and metadata.
Create new schemas in object storage catalogs (Presto/Prestissimo only).
Add columns to existing tables, rename columns, and rename tables.
Query Execution
Execute SELECT, INSERT, and UPDATE queries.
Explain query execution plans (logical, distributed, validate, IO) without running them.
Analyze queries with detailed execution statistics and performance data.
Spark Application Management
Submit JAR, Python, or R Spark applications with configurable resources and credentials.
List, monitor status of, and stop Spark applications.
Data Ingestion
Create ingestion jobs from object storage (CSV, Parquet, JSON, ORC, Avro) into lakehouse tables, with configurable write modes, delimiters, encoding, and Spark resources.
List, check status of, and cancel ingestion jobs.
Provides tools for managing Presto engines, executing queries, and exploring data in IBM watsonx.data lakehouses.
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., "@IBM watsonx.data MCP Servershow tables in the finance catalog"
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.
IBM watsonx.data MCP Server
Overview
The IBM watsonx.data MCP Server enables AI assistants to interact seamlessly with IBM watsonx.data lakehouses using natural language. It provides specialized tools across 6 categories for comprehensive lakehouse operations:
Platform Management: Instance status and configuration
Engine Operations: Manage and monitor Presto and Spark engines
Catalog Management: Browse schemas, tables, and metadata; modify table structures
Query Execution: Run SELECT, INSERT, UPDATE queries with query plan analysis
Spark Applications: Submit, monitor, and manage Spark jobs
Data Ingestion: Load data from object storage into lakehouse tables
Currently, it supports stdio transport for local subprocess and streamable HTTP. For comprehensive details on transport options, including implementation guidelines and security best practices, refer to the MCP Transports Specification.
Note: IBM watsonx.data also provides a hosted remote MCP server that requires no installation. For details on using the remote server, see the Remote Querying Documentation.
Related MCP server: SQL Server MCP Server
Supported Features
Core Capabilities
Multiple Tools organized into 6 functional categories (see TOOLS.md)
Platform Tools: Instance details and status
Engine Tools: Lifecycle management for Presto and Spark engines
Catalog Tools: Schema and table discovery, metadata operations, DDL operations
Query Tools: SELECT, INSERT, UPDATE execution with query plan analysis
Spark Application Tools: Submit and manage Spark applications
Ingestion Tools: Data loading from object storage (CSV, Parquet, JSON)
Security & Authentication
IBM Cloud IAM authentication with automatic token refresh
Read and write operations with appropriate access controls
Transport & Integration
Current: stdio transport, streamable HTTP
Compatible with Claude Desktop, IBM Bob, and other MCP-enabled AI assistants
Architecture Overview
flowchart LR
User --> Assistant[AI Assistant]
Assistant -->|stdio/JSON-RPC| Server[watsonx.data MCP Server]
Server -->|IAM Auth + API Calls| WX[watsonx.data Service]
WX --> Engines[Presto & Spark Engines]
Engines --> Lakehouse[Lakehouse Storage]
style Server fill:#f3e5f5,stroke:#4a148c
style WX fill:#e0f2f1,stroke:#00695c
style Engines fill:#fff3e0,stroke:#ef6c00Query Execution Flow
sequenceDiagram
participant A as AI Assistant
participant S as MCP Server
participant I as IBM Cloud IAM
participant W as watsonx.data API
participant E as Presto/Spark Engines
A->>S: Natural-language request (MCP)
S->>I: Request IAM token
I-->>S: IAM access token
S->>W: API request (catalog, SQL, schema...)
W->>E: Query execution / metadata ops
E-->>W: Results
W-->>S: Response
S-->>A: Structured MCP resultGetting Started
1. Prerequisites
Before installation, ensure you have:
Python 3.11 or higher (Download)
uv package manager (Install)
IBM Cloud account (Create Account)
watsonx.data instance (Provision Instance) and (Setup)
IBM Cloud API key (Create API Key)
Gather Instance details:
Base URL: Obtain from your watsonx.data instance:
Option 1: Copy the hostname from your browser's address bar when accessing the instance, then append
/lakehouse/apiOption 2: Navigate to instance details → Data Access Service (DAS) endpoint
Example format:
https://us-south.lakehouse.cloud.ibm.com/lakehouse/api
Instance CRN (e.g.,
crn:v1:bluemix:public:lakehouse:us-south:a/...)IAM API Key with access to watsonx.data instance, catalog and engines
2. Installation
Option 1: Using pip / pipx
pipx install ibm-watsonxdata-mcp-serverIf pipx is not installed, you can install the MCP server using pip:
pip install --user ibm-watsonxdata-mcp-serverOption 2: Development Setup
# Clone repository
git clone https://github.com/IBM/ibm-watsonxdata-mcp-server.git
cd ibm-watsonxdata-mcp-server
# Install dependencies
uv sync
# Copy example configuration
cp examples/.env.example .env
# Edit with your credentials
export WATSONX_DATA_BASE_URL=https://us-south.lakehouse.cloud.ibm.com/lakehouse/api
export WATSONX_DATA_API_KEY=your_ibm_cloud_api_key_here
export WATSONX_DATA_INSTANCE_ID=crn:v1:bluemix:public:lakehouse:us-south:a/...
# Verify installation
uv run ibm-watsonxdata-mcp-server --transport stdio3. Configure your AI Assistants
Integration with Claude Desktop
Find your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Add this to claude_desktop_config.json:
Option 1: Using pip/pipx install
First, find the full path to the installed command:
# macOS/Linux
which ibm-watsonxdata-mcp-server
# Windows (PowerShell)
where.exe ibm-watsonxdata-mcp-serverCommon installation paths:
macOS/Linux with pipx or pip --user:
~/.local/bin/ibm-watsonxdata-mcp-serverWindows with pipx:
%USERPROFILE%\.local\bin\ibm-watsonxdata-mcp-server.exeSystem-wide install:
/usr/local/bin/ibm-watsonxdata-mcp-server
Then use the full path in your config:
{
"mcpServers": {
"IBM watsonx.data MCP Server": {
"command": "/path/from/which/command/ibm-watsonxdata-mcp-server",
"args": ["--transport", "stdio"],
"env": {
"WATSONX_DATA_BASE_URL": "https://us-south.lakehouse.cloud.ibm.com/lakehouse/api",
"WATSONX_DATA_API_KEY": "your_api_key_here",
"WATSONX_DATA_INSTANCE_ID": "crn:v1:bluemix:public:lakehouse:us-south:a/..."
}
}
}
}Option 2: Using development installation
{
"mcpServers": {
"IBM watsonx.data MCP Server": {
"command": "/absolute/path/to/uv",
"args": [
"--directory",
"/absolute/path/to/mcp-watsonx-data",
"run",
"ibm-watsonxdata-mcp-server"
],
"env": {
"WATSONX_DATA_BASE_URL": "https://us-south.lakehouse.cloud.ibm.com/lakehouse/api",
"WATSONX_DATA_API_KEY": "your_api_key_here",
"WATSONX_DATA_INSTANCE_ID": "crn:v1:bluemix:public:lakehouse:us-south:a/..."
}
}
}
}Integration with IBM Bob
Find your mcp_settings.json configuration file:
~/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code/settings/mcp_settings.json
Different version will have different path. The exact path will be found in Views and More Actions... -> MCP Servers -> Edit MCP
Option 1: Using pip/pipx install
First, find the full path:
which ibm-watsonxdata-mcp-serverThen use that path in your config:
{
"mcpServers": {
"IBM watsonx.data MCP Server": {
"command": "/path/from/which/command/ibm-watsonxdata-mcp-server",
"args": ["--transport", "stdio"],
"env": {
"WATSONX_DATA_BASE_URL": "https://us-south.lakehouse.cloud.ibm.com/lakehouse/api",
"WATSONX_DATA_API_KEY": "your_api_key_here",
"WATSONX_DATA_INSTANCE_ID": "crn:v1:bluemix:public:lakehouse:us-south:a/..."
}
}
}
}Option 2: Using development installation
{
"mcpServers": {
"IBM watsonx.data MCP Server": {
"command": "/absolute/path/to/uv",
"args": [
"--directory",
"/absolute/path/to/mcp-watsonx-data",
"run",
"ibm-watsonxdata-mcp-server"
],
"env": {
"WATSONX_DATA_BASE_URL": "https://us-south.lakehouse.cloud.ibm.com/lakehouse/api",
"WATSONX_DATA_API_KEY": "your_api_key_here",
"WATSONX_DATA_INSTANCE_ID": "crn:v1:bluemix:public:lakehouse:us-south:a/..."
}
}
}
}Running with Streamable HTTP Transport
For HTTP-based integrations, bind to 127.0.0.1 (localhost only) unless you explicitly need network access:
uv run python -m lakehouse_mcp --transport streamable-http --host 127.0.0.1 --port 9000Security note: The
streamable-httptransport has no built-in authentication layer. The server uses yourWATSONX_DATA_API_KEYto authenticate all requests to IBM Cloud on your behalf. If you bind to0.0.0.0(all interfaces), any client that can reach that port can invoke all tools under your IAM identity without supplying any credentials. Only use--host 0.0.0.0in a trusted network environment and place a reverse proxy (e.g. nginx) with authentication in front of the MCP endpoint. For single-user local use, always prefer--host 127.0.0.1or the defaultstdiotransport.
Available Tools
Quick Reference
Goal | Tool to Use | Example |
Check connectivity |
| "What's my instance status?" |
Find engines |
| "List all engines" |
Discover data |
| "What schemas exist?" |
Find tables |
| "Show tables in sales_db" |
Understand schema |
| "Describe customers table" |
Query data |
| "SELECT * FROM tpch.tiny.customer LIMIT 10" |
See TOOLS.md for currently supported tools and advanced usage patterns.
Example Usage
Once configured with Claude Desktop, you can interact with your watsonx.data instance using natural language:
1. Check Instance Status
You ask:
What watsonx.data instance am I connected to?Claude responds with:
You're connected to watsonx.data instance:
- Instance ID: crn:v1:bluemix:public:lakehouse:us-south:a/abc123...
- Region: us-south
- Version: 2.0.0
- Status: active
- Serverless Spark: enabled
- Presto: enabled2. Discover Available Data
You ask:
What schemas are available in tpch catalog?Claude responds:
Available Schemas:
- `tiny` - TPC-H benchmark data (smallest scale)
- `sf1` through `sf100000` - Various scale factors (1, 10, 100, 300, 1000, 3000, 10000, 30000, 100000)
- `information_schema` - System schema
**Tables in the "tiny" schema:**
1. customer
2. lineitem
3. nation
4. orders
5. part
6. partsupp
7. region
8. supplier
These are the standard TPC-H benchmark tables. Would you like me to:
- Describe the schema of one of these tables?
- Run a sample query on one of the tables?
- Explore tables from a different scale factor (sf1, sf100, etc.)?3. Explore Table Structure
You ask:
Show me the schema for the customer table in tiny schemaClaude responds:
Here's the schema for the **customer** table in the **tpch.tiny** schema:
Columns (8 total):
1. `c_custkey` - bigint (nullable)
2. `c_name` - varchar(25) (nullable)
3. `c_address` - varchar(40) (nullable)
4. `c_nationkey` - bigint (nullable)
5. `c_phone` - varchar(15) (nullable)
6. `c_acctbal` - double (nullable)
7. `c_mktsegment` - varchar(10) (nullable)
8. `c_comment` - varchar(117) (nullable)
Table Properties:
- Type: TABLE
- Primary Keys: None
- Partitions: None
This is a standard TPC-H customer table with customer ID, name, address, nation reference, phone, account balance, market segment, and comments. All columns are nullable.
Would you like me to run a query on this table or explore other tables?4. Query Data
You ask:
Show me the top 10 customers by account balanceClaude executes:
SELECT c_custkey, c_name, c_address, c_phone, c_acctbal, c_mktsegment FROM customer ORDER BY c_acctbal DESC LIMIT 10And presents results in a formatted table Here are the top 10 customers by account balance:
Customer ID | Customer Name | Account Balance |
213 | Customer#000000213 | $9,987.71 |
45 | Customer#000000045 | $9,983.38 |
1106 | Customer#000001106 | $9,977.62 |
200 | Customer#000000200 | $9,967.60 |
140 | Customer#000000140 | $9,963.15 |
381 | Customer#000000381 | $9,931.71 |
43 | Customer#000000043 | $9,904.28 |
100 | Customer#000000100 | $9,889.89 |
780 | Customer#000000780 | $9,874.12 |
518 | Customer#000000518 | $9,871.66 |
The query executed in 42.7 seconds and returned 10 rows. Customer#000000213 has the highest account balance at $9,987.71.
5. Multi-Step Analysis
You ask:
I need to analyze customer data. What's available and what does it look like?Claude:
Let me check what's in your watsonx.data instance
I'll explore the tpch catalog
Here's the customer table schema
Runs a query to get customer data
Runs few more queries based on the columns in the customer table
Looks at the related tables
Presents a summary
See TOOLS.md for the complete list of tools, more usage patterns, and advanced examples.
Development
Setting Up Development Environment
Clone the repository
git clone https://github.com/your-org/mcp-watsonx-data.git cd mcp-watsonx-dataInstall dependencies (including dev dependencies)
uv sync --extra devSet up environment variables
cp examples/.env.example .env # Edit .env with your credentials export WATSONX_DATA_BASE_URL=https://us-south.lakehouse.cloud.ibm.com/lakehouse/api export WATSONX_DATA_API_KEY=your_ibm_cloud_api_key_here export WATSONX_DATA_INSTANCE_ID=crn:v1:bluemix:public:lakehouse:us-south:a/...
Running Tests
Run the full test suite with coverage:
uv run pytestRun tests with verbose output:
uv run pytest -vRun specific test file:
uv run pytest tests/test_client.pyRun tests with coverage report:
uv run pytest --cov=lakehouse_mcp --cov-report=htmlView coverage report:
open htmlcov/index.html # macOS
xdg-open htmlcov/index.html # Linux
start htmlcov/index.html # WindowsCode Quality
Run linting and formatting:
uv run ruff check .
uv run ruff format .Run type checking:
uv run mypy src/Run pre-commit hooks:
uv run pre-commit run --all-filesTroubleshooting
See TROUBLESHOOTING.md for common issues, diagnostics, and solutions.
Useful Links
IBM watsonx.data Docs: https://cloud.ibm.com/docs/watsonxdata?topic=watsonxdata-getting-started
IBM Cloud API Keys: https://cloud.ibm.com/iam/apikeys
MCP Specification: https://modelcontextprotocol.io/
Available Tools
39 toolsadd_columnsA
Add one or more columns to a table in a watsonx.data schema.
Note: Data types are typically specified in lowercase (e.g., "varchar", "int", "decimal"). While the API pattern allows both cases, lowercase is recommended for compatibility.
Args: catalog_name: Catalog containing the table (e.g., "iceberg_data") schema_name: Schema containing the table table_name: Table to add columns to columns: List of column definitions, each with: name (required), type (required, lowercase recommended), comment (optional), extra (optional), precision (optional), scale (optional) engine_id: Engine ID to use for the operation (from list_engines)
Returns: Dict with: - columns: List of added column details - total_count: Number of columns added
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes | ||
| schema_name | Yes | ||
| table_name | Yes | ||
| columns | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the return value and data type guidance, but does not disclose potential side effects or authorization needs.
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?
Description is well-structured with Args and Returns sections and a note. It is concise but could be slightly tighter.
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 5 required params and no annotations, the description covers all parameters and return value. It lacks prerequisites or error conditions, but is adequate for invocation.
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 0%, so description must compensate. It explains each parameter: catalog_name, schema_name, table_name, columns (including sub-fields), engine_id, adding meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Add one or more columns to a table in a watsonx.data schema' with a specific verb and resource. It distinguishes from sibling tools like rename_column and rename_table.
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 a hint about data type casing but does not explicitly state when to use this tool vs alternatives. Sibling tools include other table modifications, but no cross-references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_ingestion_jobC
Cancel a data ingestion job.
Args: job_id: Job identifier
Returns: Dict with cancellation status
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits. It only states 'Cancel' and returns a dict, but fails to mention idempotency, what happens if job is already finished, or permission requirements. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and follows a standard Args/Returns structure, but it omits necessary context, making it too sparse. It is concise but at the cost of completeness.
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 the presence of an output schema, the description could be more complete. It does not address error states, preconditions (e.g., job must be active), or side effects. The tool requires more context for safe 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 description for 'job_id' ('Job identifier') adds minimal meaning beyond the schema, which has 0% description coverage. It does not clarify format, source, or constraints, so the parameter is poorly documented.
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 cancels a data ingestion job, using a specific verb and resource. It distinguishes from sibling tools like create_ingestion_job and list_ingestion_jobs.
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 on when to use this tool vs alternatives, nor any preconditions or exclusions. The description only states the action, leaving the agent to infer usage context from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ingestion_jobA
Create a data ingestion job to load data into watsonx.data.
Args:
job_id: Unique job identifier (e.g., "ingestion-1234567890")
catalog: Target catalog name
schema: Target schema name
table: Target table name
file_paths: Source file path (e.g., "s3://bucket-name/file.csv")
file_type: Source file type - "csv", "parquet", "json", "orc", "avro" (default: "csv")
bucket_name: S3 bucket name (extracted from file_paths if not provided)
bucket_type: Bucket type - "amazon_s3", "aws_s3", "minio", "ibm_cos", "ibm_ceph",
"adls_gen1", "adls_gen2", "google_cs", "ibm_storage_scale", "ozone" (default: "ibm_cos")
write_mode: Write mode - "append", "overwrite" (default: "append")
engine_id: Spark engine ID to use for ingestion
field_delimiter: CSV field delimiter (default: ",")
line_delimiter: CSV line delimiter (default: "
") escape_character: CSV escape character (default: "") header: Whether CSV has header row (default: true) encoding: File encoding (default: "UTF-8") driver_memory: Spark driver memory (default: "2G") driver_cores: Spark driver cores (default: 1) executor_memory: Spark executor memory (default: "2G") executor_cores: Spark executor cores (default: 1) num_executors: Number of Spark executors (default: 1)
Returns:
Dict with job_id, status, and creation details
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| catalog | Yes | ||
| schema | Yes | ||
| table | Yes | ||
| file_paths | Yes | ||
| file_type | No | csv | |
| bucket_name | No | ||
| bucket_type | No | ibm_cos | |
| write_mode | No | append | |
| engine_id | No | ||
| field_delimiter | No | , | |
| line_delimiter | No | ||
| escape_character | No | \ | |
| header | No | ||
| encoding | No | UTF-8 | |
| driver_memory | No | 2G | |
| driver_cores | No | ||
| executor_memory | No | 2G | |
| executor_cores | No | ||
| num_executors | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral aspects. However, it only lists parameters and a brief return type. It does not disclose important behaviors like whether the job starts immediately, is idempotent, requires permissions, or has 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 a purpose statement and then an organized Args block. While it is lengthy due to 20 parameters, it is well-structured and all information is relevant. Minor deduction for 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 20 parameters and no annotations, the description covers parameter details and return type. However, it lacks explanation of the overall process, error conditions, or output schema details. It is moderately 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 0%, so the description fully documents parameters. Each parameter includes explanation, default value, and format examples (e.g., 'e.g., s3://bucket-name/file.csv'). This significantly adds meaning beyond the raw 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 states 'Create a data ingestion job to load data into watsonx.data.' It uses a specific verb (create) and resource (data ingestion job) with context (watsonx.data). This clearly distinguishes from sibling tools like cancel_ingestion_job or get_ingestion_job.
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 does not provide any guidance on when to use this tool versus alternatives, such as other data loading or spark submission tools. It lacks context about prerequisites, ideal scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_prestissimo_engineA
Create a new Prestissimo engine in watsonx.data.
EXAMPLE PAYLOAD: { "origin": "native", "display_name": "My-Prestissimo-Engine", "description": "Prestissimo engine for fast queries", "tags": [], "associated_catalogs": [], "configuration": { "size_config": "custom", "coordinator": { "node_type": "starter", "quantity": 1 }, "worker": { "node_type": "starter", "quantity": 1 } } }
Args: origin: "native" display_name: (required) Display name for the engine configuration: (required) Engine configuration with required fields: - size_config: (required) "custom" (recommended) or predefined options (may be supported) - coordinator: (required) {"node_type": typically "starter" or "cache_optimized", "quantity": 1} - worker: (required) {"node_type": typically "starter" or "cache_optimized", "quantity": 1-18 recommended} associated_catalogs: (optional) List of catalog names to associate description: (optional) Engine description 50 characters max engine_id: (optional) Custom engine ID (must match pattern: prestissimo-0 to prestissimo-1000) tags: (optional) Tags for the engine
CUSTOM SIZE CONFIG (RECOMMENDED):
Coordinator: 1 node (always), node_type: "starter" or "cache_optimized"
Worker: 1-18 nodes (recommended), node_type: "starter" or "cache_optimized"
Node types do NOT need to match (e.g., starter coordinator + cache_optimized worker is allowed)
PREDEFINED SIZE CONFIGS: If using predefined configs, exact node types and quantities must match:
starter: 1 coordinator + 1 worker (both bx2.48x192)
small: 1 coordinator + 3 workers (both ox2.16x128)
medium: 1 coordinator + 6 workers (both ox2.16x128)
large: 1 coordinator + 12 workers (both ox2.16x128)
Returns: Dict with created engine details including engine_id
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | ||
| display_name | Yes | ||
| configuration | Yes | ||
| associated_catalogs | No | ||
| description | No | ||
| engine_id | No | ||
| tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It describes the creation operation, required parameters, configuration constraints (e.g., node types, quantities), and returns engine details. It does not cover auth requirements or rate limits, but provides extensive behavioral context about allowed values and recommendations.
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 a clear opening line, example payload, parameter descriptions, and detailed sections for custom/predefined configs. It is front-loaded but somewhat verbose; however, the length is justified by the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, nested objects, many options), no annotations, and schema coverage 0%, the description is very complete. It covers all parameters, required vs optional, recommended practices, config options, and return format. No major gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does so thoroughly by explaining each parameter, providing an example payload, detailing configuration subfields (size_config, coordinator, worker), defining constraints (e.g., description max 50 chars, engine_id pattern), and differentiating custom vs predefined setups.
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 starts with 'Create a new Prestissimo engine in watsonx.data.' which is a clear verb+resource statement. The name and context differentiate from siblings like create_presto_engine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives (e.g., create_presto_engine). The name implies the engine type, but the description does not provide usage context or when-not-to-use. The detailed configuration instructions imply usage for custom setups.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_presto_engineA
Create a new Presto engine in watsonx.data.
EXAMPLE PAYLOAD: { "origin": "native", "display_name": "My-Presto-Engine", "description": "Presto engine with autoscaling", "tags": [], "associated_catalogs": [], "configuration": { "size_config": "custom", "coordinator": { "node_type": "starter", "quantity": 1 }, "worker": { "node_type": "starter", "quantity": 1 }, "autoscaling_enabled": true, "autoscaling_config": { "type": "cpu", "target": 40, "min_worker_quantity": 1, "max_worker_quantity": 18, "query_termination_grace_period_min": 1, "scale_in_stabilization_window_min": 5, "scaling_step_size": 1 } } }
Args: origin: (required) "native" display_name: (required) Display name for the engine configuration: (required) Engine configuration with required fields: - size_config: (required) "custom" (recommended) or predefined options (may be supported) - coordinator: (required) {"node_type": typically "starter" or "cache_optimized", "quantity": 1} - worker: (required) {"node_type": typically "starter" or "cache_optimized", "quantity": 1-18 recommended} - autoscaling_enabled: (optional) boolean to enable autoscaling - autoscaling_config: (required if autoscaling_enabled is true) autoscaling configuration object (see AUTOSCALING section) associated_catalogs: (optional) List of catalog names to associate description: (optional) Engine description 50 characters max engine_id: (optional) Custom engine ID (must match pattern: presto-0 through presto-1000) tags: (optional) Tags for the engine
AUTOSCALING (OPTIONAL): To enable autoscaling, include these fields in the configuration:
autoscaling_enabled: true (boolean)
autoscaling_config: { "type": "cpu" or "memory", "target": 1-100 (target utilization percentage, e.g., 40), "min_worker_quantity": 1-18 (minimum workers), "max_worker_quantity": 1-18 (maximum workers), "query_termination_grace_period_min": 1-120 (grace period before terminating queries), "scale_in_stabilization_window_min": 5-60 (stabilization window for scale-in), "scaling_step_size": 1-18 (nodes to add/remove per scaling action) }
PREDEFINED SIZE CONFIGS: If using predefined configs, exact node types and quantities must match:
starter: 1 coordinator + 1 worker (both bx2.48x192)
small: 1 coordinator + 3 workers (both ox2.16x128)
medium: 1 coordinator + 6 workers (both ox2.16x128)
large: 1 coordinator + 12 workers (both ox2.16x128)
Returns: Dict with created engine details including engine_id
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | ||
| display_name | Yes | ||
| configuration | Yes | ||
| associated_catalogs | No | ||
| description | No | ||
| engine_id | No | ||
| tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the full burden. It details configuration options and constraints (e.g., engine_id pattern, description length), but does not disclose side effects (e.g., permissions needed, cost, idempotency, or conflict handling). Lacks information about the creation process length or error scenarios.
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 (example payload, args, autoscaling, predefined configs, returns). It is somewhat lengthy but organized, and the key information is front-loaded. Some redundancy exists between the example and the parameter descriptions, but overall it is efficient.
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 (nested objects, many optional fields), the description covers configuration details, autoscaling, predefined sizes, and return value. It includes constraints and examples. However, it lacks information on error handling, validation behavior, and does not mention that engine names must be unique or that certain configurations may fail.
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 0%, so the description must compensate. It thoroughly explains each parameter, including required/optional status, types, nested structures (e.g., configuration with coordinator/worker/autoscaling), constraints (e.g., min/max quantities), and provides an example payload. The autoscaling section details all fields. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new Presto engine in watsonx.data.' It provides specific verb and resource, and the details (predefined configs, autoscaling) align with Presto engine creation. While it doesn't explicitly compare with sibling tools (e.g., create_prestissimo_engine), the tool name and context make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like create_spark_engine or create_prestissimo_engine. It does not include prerequisites, limitations, or when not to use. The description focuses on the 'how' but not the 'when'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_schemaA
Create a new schema in a watsonx.data catalog.
IMPORTANT RESTRICTIONS: - Engine must be a Presto or Prestissimo engine (Spark engines are not supported) - Catalog must be an object storage catalog (Iceberg or Hive format) - Datasource catalogs (e.g., from external databases) are NOT supported for schema creation
Args: catalog_id: Catalog identifier - must be an object storage catalog (e.g., "iceberg_data", "hive_data") schema_name: Name for the new schema engine_id: Engine ID to use for the operation - must be a Presto or Prestissimo engine (from list_engines) custom_path: Path within bucket where schema will be created (REQUIRED, must be at least 1 character). If unsure, use the schema_name as the custom_path. storage_name: Storage/bucket name for the schema (REQUIRED for object storage catalogs)
Returns: Dict with: - name: Name of the created schema - catalog_name: Parent catalog name - custom_path: Custom path used - storage_name: Storage name if specified
Raises: Error if: - Engine is not Presto or Prestissimo type - Catalog is a datasource catalog (not object storage) - custom_path is empty or storage_name is not provided
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_id | Yes | ||
| schema_name | Yes | ||
| engine_id | Yes | ||
| custom_path | Yes | ||
| storage_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description takes full responsibility for behavioral disclosure. It details constraints, required parameters, and raises error conditions (e.g., engine type, catalog type, empty custom_path). Returns section clarifies output. However, it does not mention side effects (e.g., whether schema creation is immediately visible).
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 (IMPORTANT RESTRICTIONS, Args, Returns, Raises). While detailed, it avoids unnecessary verbosity; each sentence serves a purpose. Could be slightly more concise, but structure aids readability.
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 output schema exists, the description adequately covers return values. It includes parameter dependencies, error conditions, and usage guidelines. No apparent gaps in information for an agent to invoke the tool 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?
The description explains each parameter in an Args section beyond the input schema, which has 0% coverage. It clarifies requirements for custom_path ('must be at least 1 character') and storage_name ('REQUIRED for object storage catalogs'), adding essential context.
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 'Create a new schema in a watsonx.data catalog,' specifying the action and resource. This distinguishes it from sibling tools like list_schemas or create_ingestion_job.
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 restrictions on engine type and catalog type, guiding when this tool is appropriate. It does not explicitly mention when not to use it, but the restrictions effectively serve as usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_spark_engineB
Create a new Spark engine in watsonx.data.
Args: origin: Engine origin - "native", "external", or "discover" display_name: Display name for the engine storage_name: Storage/bucket name for engine_home (REQUIRED) associated_catalogs: List of catalog IDs to associate description: Engine description default_version: Spark version (default: "3.5") default_config: Additional engine configuration tags: Tags for the engine
Returns: Dict with created engine details including engine_id
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | ||
| display_name | Yes | ||
| storage_name | Yes | ||
| associated_catalogs | No | ||
| description | No | ||
| default_version | No | 3.5 | |
| default_config | No | ||
| tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It describes creation and return type but lacks details on side effects, authorization requirements, or consequences. Basic 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 structured with Args and Returns, front-loaded with the purpose sentence. It is clear but not overly concise; each sentence adds 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 8 parameters and no annotations, the description covers basics but lacks prerequisites, error conditions, or dependencies. An output schema exists but does not fully compensate for missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must add meaning. It provides brief descriptions for each parameter (e.g., origin values), adding value beyond the schema. However, some descriptions are obvious (e.g., display_name).
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 'Create a new Spark engine in watsonx.data.' It uses a specific verb ('create') and resource ('Spark engine'), and distinguishes it from sibling tools like create_presto_engine.
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 lists parameters including origin types but gives no guidance on when to use this tool versus alternatives like create_presto_engine or when not to use it. No explicit when-to-use or when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_tableA
Get detailed schema and metadata for a watsonx.data table.
Args: catalog_name: Catalog containing the table (e.g., "iceberg_data", "tpch") schema_name: Schema containing the table (from list_schemas) table_name: Table to describe (from list_tables) engine_id: Engine ID for metadata retrieval (from list_engines)
Returns: Dict with: - name: Table name - catalog_name, schema_name: Echo of inputs - columns: List of column objects with: - name: Column name (required) - type: SQL data type (required) - comment: Optional comment/description - extra: Optional extra attributes (e.g., AUTO_INCREMENT) - length: Optional length for VARCHAR/CHAR types - precision: Optional precision for DECIMAL types - scale: Optional scale for DECIMAL types - column_count: Total number of columns - engine_id: Echo of input
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes | ||
| schema_name | Yes | ||
| table_name | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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. It describes the return structure in detail but does not disclose behavioral traits such as read-only nature, side effects, error conditions, or authentication needs. The tool is likely read-only, but this is 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 Args and Returns sections, front-loading the purpose. It is appropriately detailed without being overly verbose; each sentence adds value. Minor redundancy in the Returns section echoing inputs, but overall efficient.
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 presence of an output schema (not fully shown), the description covers return values comprehensively, including column details. However, it lacks information on error scenarios, required permissions, or edge cases. For a describe tool, this is adequate but not exhaustive.
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 0% description coverage, so the description adds meaning beyond parameter names by providing examples and sources (e.g., 'catalog_name: Catalog containing the table (e.g., "iceberg_data", "tpch")'). This significantly aids parameter understanding, though format or constraints could be more precise.
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 'Get detailed schema and metadata for a watsonx.data table', which is a specific verb+resource combination. It distinguishes itself from sibling tools like list_tables (which lists table names) and other schema-related tools.
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 by referencing other tools as parameter sources (e.g., 'from list_schemas', 'from list_tables', 'from list_engines'), but it does not explicitly state when to use this tool vs alternatives like list_tables or get_instance_details. No when-not or exclusion guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_insertA
Execute INSERT queries against watsonx.data.
Args: sql: SQL INSERT query to execute (must start with INSERT) catalog_name: Target catalog (e.g., "iceberg_data", "hive_data") schema_name: Default schema for unqualified table names engine_id: Engine to run query on (from list_engines, must be running)
Returns: Dict with: - query_id: Unique query identifier - rows_inserted: Number of rows inserted (if available) - execution_time_ms: Query duration in milliseconds - status: Query execution status - catalog_name, schema_name: Echo of inputs
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| catalog_name | Yes | ||
| schema_name | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 details the return structure (query_id, rows_inserted, etc.) and constraints (SQL must start with INSERT, engine must be running), but does not mention that INSERT modifies data or any potential 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 well-structured with sections and bullet points, each sentence adding value without redundancy. It is 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 no output schema, the description fully covers return values. All four required parameters are explained, and the tool's role among 39 siblings is clear. The description provides sufficient information for correct invocation.
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 coverage is 0%, so the description fully compensates by explaining each parameter: sql expects an INSERT query, catalog_name with examples, schema_name as default for unqualified names, and engine_id sourced from list_engines and must be running.
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 it executes INSERT queries against watsonx.data and specifies that the SQL must start with INSERT, distinguishing it from siblings like execute_select or execute_update.
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?
It explains parameters including the requirement that engine_id must come from list_engines and be in a running state. While it doesn't explicitly contrast with alternatives, the 'must start with INSERT' implies the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_selectA
Execute read-only SELECT queries against watsonx.data.
Args: sql: SQL SELECT query to execute (must start with SELECT) catalog_name: Target catalog (e.g., "iceberg_data", "tpch") schema_name: Default schema for unqualified table names engine_id: Engine to run query on (from list_engines, must be running) limit: Max rows to return (default: 500 if no LIMIT in query). Note: Using high limits will consume more tokens.
Returns: Dict with: - query_id: Unique query identifier - columns: List of {name, type} objects - rows: List of row data (list of lists) - row_count: Number of rows returned - execution_time_ms: Query duration in milliseconds - catalog_name, schema_name: Echo of inputs
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| catalog_name | Yes | ||
| schema_name | Yes | ||
| engine_id | Yes | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses read-only behavior and notes that high limits consume more tokens. It also details return format. However, it does not mention error handling or performance constraints beyond token usage.
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 Args and Returns sections, concise yet informative. Every sentence adds value, and it avoids 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 parameter count and presence of output schema, the description covers all inputs and return values comprehensively. Minor omission: no mention of potential errors or query execution async nature, but overall sufficiently 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 coverage is 0%, but the description thoroughly explains each parameter: sql must start with SELECT, catalog_name provides examples, schema_name as default, engine_id from list_engines and must be running, and limit with default behavior. This compensates fully for the lack of schema descriptions.
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 it executes read-only SELECT queries against watsonx.data, specifying the verb (execute) and resource (SELECT queries on watsonx.data). This distinguishes it from sibling tools like execute_insert or execute_update, which perform different operations.
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 for read-only queries but does not explicitly state when to use this tool versus alternatives like execute_insert, execute_update, or explain_query. No guidance on when-not or comparisons with siblings is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_updateA
Execute UPDATE queries against watsonx.data.
Args: sql: SQL UPDATE query to execute (must start with UPDATE) catalog_name: Target catalog (e.g., "iceberg_data", "hive_data") schema_name: Default schema for unqualified table names engine_id: Engine to run query on (from list_engines, must be running)
Returns: Dict with: - query_id: Unique query identifier - rows_updated: Number of rows updated (if available) - execution_time_ms: Query duration in milliseconds - status: Query execution status - catalog_name, schema_name: Echo of inputs Note: Iceberg table updates require at least format version 2 and update mode must be merge-on-read. Use ALTER TABLE to configure: SET PROPERTIES 'format-version' = '2', 'write.update.mode' = 'merge-on-read'
| Name | Required | Description | Default |
|---|---|---|---|
| sql | Yes | ||
| catalog_name | Yes | ||
| schema_name | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 details the return dict and notes Iceberg table update limitations (format version 2, merge-on-read mode). However, it does not mention side effects, permission requirements, or handling of failed updates.
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 (Args, Returns, Note) and uses clear bullet points. It is somewhat verbose but every sentence adds value, especially the Iceberg note. Could be slightly more concise but effective.
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 presence of an output schema (though not detailed here) and the complexity of UPDATE operations, the description is comprehensive. It covers the return values, input parameters, and a specific configuration note for Iceberg tables. Lacks error handling or concurrency context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions in the input schema. The description adds substantial meaning: sql must start with UPDATE, catalog_name examples, schema_name as default schema, engine_id from list_engines. This compensates well for the lack of schema descriptions.
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 it executes UPDATE queries against watsonx.data, with a specific verb and resource. It distinguishes from sibling tools like execute_insert and execute_select by focusing on UPDATE operations and requiring SQL to start with UPDATE.
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 specifies when to use the tool (for UPDATE queries) and provides prerequisites like the engine must be running and obtained from list_engines. While it doesn't explicitly mention alternatives, the sibling list makes it clear. No explicit when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_analyze_queryA
Get detailed query analysis with execution statistics in watsonx.data.
Args: engine_id: Presto or Prestissimo engine identifier statement: SQL query to analyze. If query fails, consider using fully qualified table names (catalog.schema.table) engine_type: Engine type - "presto" or "prestissimo" (default: "presto") verbose: Include detailed statistics
Returns: Dict with engine_id, engine_type, statement, analysis, and full response
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| statement | Yes | ||
| engine_type | No | presto | |
| verbose | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It explains the return value as 'Dict with engine_id, engine_type, statement, analysis, and full response', which is transparent. However, it does not explicitly state that the tool is read-only, its safety profile, or any potential side effects. The mention of query failure hints at error handling but is incomplete.
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 a concise opening sentence followed by a clear arg/return format. It is front-loaded with the purpose. While the arg details are necessary, they add some length; still, every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's inputs, outputs, and a troubleshooting tip. Given the absence of annotations and the need to explain 4 parameters with 0% schema coverage, it is mostly complete. It could further clarify if the tool has any side effects or is purely analytical, but this is a minor gap.
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 0% schema description coverage, the description adds meaningful context to all parameters: engine_id ('Presto or Prestissimo engine identifier'), statement (with troubleshooting tip), engine_type (values and default), and verbose ('Include detailed statistics'). This goes well beyond the minimal 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 tool's purpose: 'Get detailed query analysis with execution statistics'. It identifies the resource (query analysis) and the action. However, it does not explicitly distinguish from the sibling 'explain_query' tool, which likely has a similar but possibly less detailed purpose.
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 a helpful usage tip: 'If query fails, consider using fully qualified table names (catalog.schema.table)'. But it lacks guidance on when to use this tool versus alternatives like 'explain_query', and does not specify any prerequisites or contexts where the tool is most appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_queryA
Get query execution plan without running the query in watsonx.data.
Args: engine_id: Presto or Prestissimo engine identifier statement: SQL query to explain. If query fails, consider using fully qualified table names (catalog.schema.table) engine_type: Engine type - "presto" or "prestissimo" (default: "presto") format: Output format - "json" or "text" type: Explain type - "logical", "distributed", "validate", or "io"
Returns: Dict with engine_id, engine_type, statement, plan, and full response
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| statement | Yes | ||
| engine_type | No | presto | |
| format | No | ||
| type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It states the tool does not run the query, which is key, and outlines return values. However, it does not specify permissions, error conditions, or confirm it is read-only, 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 concise and well-structured. The first line gives the core purpose, followed by clearly formatted Args and Returns sections. No unnecessary words, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no annotations, and an output schema, the description is fairly complete. It covers all parameters and the return dict structure. Minor omission: possible error cases or preconditions are not addressed, but overall sufficient.
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 0%, so the description compensates fully. Each parameter is described in the Args section: engine_id is an identifier, statement is the SQL with a tip for failure, and engine_type, format, type have enums explained. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get query execution plan without running the query', which is a specific verb and resource. It distinguishes from running actual queries and is actionable. While siblings like 'explain_analyze_query' exist, the purpose of obtaining a plan without execution is clear and unique.
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 a troubleshooting tip for failed queries but lacks explicit guidance on when to use this tool versus alternatives like 'explain_analyze_query'. No exclusions or prerequisites are mentioned, limiting its utility for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ingestion_jobB
Get detailed status of a data ingestion job.
Args: job_id: Job identifier
Returns: Dict with detailed job status, configuration, and execution details
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates it is a read-only status retrieval, but with no annotations, it does not cover behavioral aspects like idempotency, side effects, or required permissions. The description is minimal but sufficient to infer non-destructive nature.
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 short and front-loaded with the main purpose. The Args/Returns format is efficient, though it could be condensed into a single prose sentence without losing 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 the presence of an output schema, the description does not need to detail return values. However, it lacks information about error handling, timeouts, or permissions. The description is adequate for a simple retrieval 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 only parameter 'job_id' is described merely as 'Job identifier' with no additional context on format, constraints, or examples. Since schema description coverage is 0%, the description adds little value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'detailed status of a data ingestion job', specifying a concrete verb and resource. It distinguishes the tool from siblings like list_ingestion_jobs and cancel_ingestion_job.
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 on when to use this tool versus alternatives such as list_ingestion_jobs. No prerequisites, context, or when-not-to-use information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_instance_detailsA
Get watsonx.data instance information including status, version, region, and enabled features.
Returns: Dict with instance details: - instance_id: Instance CRN identifier - region: IBM Cloud region (e.g., "us-south") - status: Instance status ("active", "provisioning", "inactive", "failed") - version: watsonx.data version - account_type: Account type ("TRIAL", "ENTERPRISE", "LITE", "STANDARD") - serverless_spark_enabled: Whether Spark is available - public_endpoints_enabled: Public internet access enabled - console_url: Web console URL
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It clearly lists the return fields (instance_id, region, status, version, etc.), indicating a safe read operation. No side effects are mentioned, but that's expected. It could mention error conditions or prerequisites, but the provided detail is sufficient.
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?
Description is front-loaded with the main purpose in the first sentence, followed by a structured list of return fields. It is concise and easy to scan, though it could be slightly more compact by using a table or bullet list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no complex behavior), the description fully covers the returned information and purpose. It lists all relevant fields, and with the output schema presumably available, it is complete enough for an agent to understand and invoke 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?
Tool has zero parameters, and the description implicitly confirms this by stating it returns instance details without any input. Baseline for 0 parameters is 4, and no additional parameter info is needed.
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?
Description clearly states it retrieves watsonx.data instance information including status, version, region, and enabled features. It uses specific verb 'Get' and resource 'instance information', and distinguishes itself from sibling tools which focus on engines, ingestion, schemas, etc.
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?
Description does not provide explicit guidance on when to use this tool versus alternatives. While the context implies it's for instance-level info, no exclusions or alternatives are mentioned. Sibling tools are other getters/lists, but the description lacks usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_spark_application_statusA
Get detailed status of a Spark application.
Args: engine_id: Spark engine identifier application_id: Application identifier
Returns: Dict with detailed application status including: - application_id: Application identifier - state: Current state (e.g., "running", "finished", "failed") - start_time: Application start timestamp - end_time: Application end timestamp (if completed) - spark_version: Spark version used - application_details: Configuration and runtime details
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| application_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description accurately conveys that this is a read-only retrieval tool by using 'Get detailed status' and listing return fields. However, it does not mention side effects, authorization requirements, or error conditions, but the read nature is clear.
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 Args and Returns sections, front-loading the purpose and providing details in a clean format. It is appropriately concise without unnecessary 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?
For a two-parameter tool with an output schema, the description fully covers the return value fields and parameter meanings. It is complete for an agent to understand the tool's input and output without additional 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?
With 0% schema description coverage, the description compensates by explaining each parameter: 'engine_id: Spark engine identifier' and 'application_id: Application identifier', adding context beyond the raw property names.
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 explicitly states 'Get detailed status of a Spark application', using a strong verb and specifying the resource. This clearly distinguishes it from sibling tools like list_spark_applications (which lists all) and submit_spark_application (which creates).
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 list_spark_applications for listing or explain_query for analysis. There are no prerequisites, exclusions, or context hints beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_enginesA
List available Presto, Prestissimo, and Spark compute engines in watsonx.data.
Args: engine_type: Optional filter - "presto", "prestissimo", "spark", or None for all engines
Returns: Dict with: - engines: List of engine objects with engine_id, display_name, type, status, size (if applicable), created_on, created_by, associated_catalogs - summary: Counts by type and status (total_count, presto_count, prestissimo_count, spark_count, by_status)
| Name | Required | Description | Default |
|---|---|---|---|
| engine_type | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 structure (engines list and summary) but does not mention side effects, authorization, rate limits, or performance characteristics. It does not contradict structured data but lacks behavioral depth.
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 structured as a short paragraph with args and returns sections. It is front-loaded and each sentence adds value. Slightly verbose but clear and efficient.
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 single optional parameter and presence of output schema (though described in text), the description covers the tool's purpose and return format. It lacks mention of paging or instance scope, but is complete for a straightforward 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 coverage is 0%, but the description compensates well by explaining the parameter engine_type with specific values ('presto', 'prestissimo', 'spark', or None) and its effect. Also documents the return structure, adding value beyond the minimal 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 it lists available Presto, Prestissimo, and Spark compute engines in watsonx.data. It uses specific verbs and resources ('List available ... engines') and distinguishes from sibling tools that create, pause, or scale engines.
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 by showing an optional filter but does not explicitly state when to use this tool versus alternatives like list_schemas or list_tables. No when-not-to-use or alternative suggestions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ingestion_jobsA
List data ingestion jobs on watsonx.data.
Args: start: Offset for pagination (default: 0, 0-based) limit: Number of jobs per page (default: 10, max: 100, -1 for all)
Returns: Dict with ingestion_jobs list containing job details
| Name | Required | Description | Default |
|---|---|---|---|
| start | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 pagination behavior (start and limit parameters) but does not mention read-only nature, rate limits, idempotency, or potential cost implications. The description is adequate but lacks deeper behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a clear front-loaded purpose, followed by structured Args and Returns sections. Every sentence provides essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists (not provided but referenced), the description is largely complete for a list tool. It explains pagination and return structure, but could mention sorting or filtering possibilities, though these are not required for basic 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 0% schema coverage, the description clearly explains both parameters: start (offset, 0-based, default 0) and limit (number per page, default 10, max 100, -1 for all). This adds substantial meaning beyond the basic type information in 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 explicitly states 'List data ingestion jobs on watsonx.data' using a specific verb (list) and resource (ingestion jobs). It clearly distinguishes from sibling tools like get_ingestion_job (single job), cancel_ingestion_job, and create_ingestion_job.
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 for listing ingestion jobs with pagination, but does not provide explicit guidance on when to use this tool versus alternatives like get_ingestion_job for single job retrieval. No exclusion criteria or context for pagination parameters are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_schemasA
List database schemas in a watsonx.data catalog.
Args: catalog_name: Catalog to list schemas from (e.g., "iceberg_data", "hive_data", "tpch") engine_id: Engine ID for metadata queries (from list_engines)
Returns: Dict with: - schemas: List of schema objects with schema_name, catalog_name - total_count: Number of schemas found - catalog_name, engine_id: Echo of inputs
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It describes the return value structure, indicating a read-like operation, but does not explicitly state idempotency, error handling, or side effects. The description adds moderate transparency but leaves 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 extremely concise, using a two-line summary followed by structured Args and Returns sections. Every sentence provides necessary information without redundancy. No extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (list schemas), the description covers the key aspects: purpose, parameters with examples, and return structure. The output schema is described, so return values are clear. Missing details like error conditions or permission requirements are minor for a read-only listing 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 0% description coverage for parameters. The description compensates by explaining catalog_name with examples ('iceberg_data', 'hive_data', 'tpch') and noting engine_id's source (list_engines). This adds significant meaning beyond the raw schema, though no validation constraints are mentioned.
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 'List database schemas in a watsonx.data catalog,' specifying the verb (list) and resource (schemas). It provides parameter examples that reinforce the purpose. However, it does not explicitly differentiate this tool from siblings like list_tables or create_schema, though the action is distinct.
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 includes Args with examples and notes that engine_id comes from list_engines, implying a dependency. It does not provide explicit guidance on when to use this tool vs alternatives (e.g., describe_table, list_tables) or when not to use it. The usage context is implied but not fully defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_spark_applicationsB
List Spark applications on a Spark engine.
Args: engine_id: (required) Spark engine identifier state: (optional) Filter by application state (e.g., ["running", "finished", "failed"]) limit: (optional) Maximum number of applications to return (1-1000). Recommended to use smaller values (e.g., 10-50) to avoid exhausting tokens.
Returns: Dict with applications list containing application details
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| state | No | ||
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It states the return type (dict with applications list) but omits details like pagination behavior, required permissions, error conditions, or whether the list is complete. The limit parameter hint is helpful but insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear structure separating purpose, arguments, and returns. No redundant sentences, though the 'Args:' format is slightly verbose. It could be shorter, but remains efficient.
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 no output schema provided, the description partially compensates by mentioning the return value. However, it does not cover pagination, error handling, or prerequisites. For a list endpoint, this is a moderate gap.
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 coverage is 0%, so the description effectively documents all three parameters. It provides examples for state, and for limit it gives a range and a recommendation. engine_id is described as 'Spark engine identifier', which adds minimal but sufficient context beyond the schema type.
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 it lists Spark applications on a Spark engine. This distinguishes it from siblings like get_spark_application_status (for a single app) and submit_spark_application. However, it could be more specific about the scope (e.g., whether it returns all applications or those belonging to the caller).
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 a clear use case (listing applications) and includes a recommendation for limit to avoid token exhaustion. However, it does not explicitly state when not to use this tool or differentiate it from alternatives like get_spark_application_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tablesA
List tables in a watsonx.data schema.
Args: catalog_name: Catalog containing the schema (e.g., "iceberg_data", "hive_data") schema_name: Schema/database containing tables (from list_schemas) engine_id: Engine ID for metadata queries (from list_engines)
Returns: Dict with: - tables: List of table names (strings) - total_count: Number of tables in schema - catalog_name, schema_name, engine_id: Echo of inputs
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes | ||
| schema_name | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It details the return format (tables list, total_count, echo) and notes parameter sources. It does not explicitly state read-only, but it is implied by 'List tables'. Good for a listing 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 well-structured with a clear purpose sentence and separate Args/Returns sections. It is informative without being verbose, though minor trimming could make it 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?
Given the existence of an output schema covering return values, the description is complete for a list tool. It covers purpose, parameter sources, and return format. Could mention pagination or limits, but not essential.
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 coverage is 0% with no parameter descriptions. The description compensates by providing examples for catalog_name and noting that schema_name and engine_id come from other tool outputs, adding significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The purpose is clearly stated: 'List tables in a watsonx.data schema.' The verb 'list' and resource 'tables' are specific, and the scope 'in a schema' distinguishes it from siblings like describe_table and list_schemas.
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 usage context by noting that schema_name comes from list_schemas and engine_id from list_engines, implying a workflow. However, it does not explicitly state when not to use or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_prestissimo_engineB
Pause a running Prestissimo engine in watsonx.data.
Args: engine_id: Engine identifier
Returns: Dict with pause operation status and engine state transition
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It mentions pausing and returning status/state transition, but does not disclose side effects (e.g., on running queries), reversibility, or required permissions.
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 purpose, followed by docstring-style args and returns. It is reasonably concise but could be shorter by removing 'Args:' and 'Returns:' boilerplate since these are contextually implied.
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 one parameter, no annotations, and presence of an output schema, the description covers the basic operation and return value. However, it lacks guidance on when to pause and what happens to the engine state afterward, which is needed for complete 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?
Only one parameter (engine_id) with minimal description ('Engine identifier'). Schema description coverage is 0%, and the description adds no details on format, source, or validation rules.
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 ('Pause') and the resource ('running Prestissimo engine in watsonx.data'), and distinguishes from sibling tools like pause_presto_engine and pause_spark_engine by specifying the engine 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?
No guidance on when to use this tool versus alternatives, such as pause_presto_engine or pause_spark_engine, nor any prerequisites or consequences of pausing. The description only implies usage through the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_presto_engineB
Pause a running Presto engine in watsonx.data.
Args: engine_id: Engine identifier
Returns: Dict with pause operation status and engine state transition
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 only mentions 'pause' and 'state transition', but does not disclose any side effects, permissions needed, or whether the operation is reversible. For a mutation tool, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: a clear title, then structured Args and Returns. It is front-loaded and efficient, though the Args/Returns section is somewhat redundant with the schema.
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 one parameter, no annotations, and an existing output schema, the description covers basic input and output. However, it lacks behavioral context like preconditions (engine must be running) and consequences, leaving gaps for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description lists the parameter name (engine_id) in Args but adds no additional meaning beyond the schema's type string. Schema description coverage is 0%, so the description should compensate, but it does not provide format, examples, or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Pause' and the resource 'running Presto engine', verb+resource is specific. It distinguishes from sibling tools like pause_prestissimo_engine and pause_spark_engine.
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 there is a running Presto engine, but does not explicitly state when to use this tool versus alternatives like pause_prestissimo_engine. No when-not-to-use or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pause_spark_engineA
Pause a running Spark engine in watsonx.data (SAAS only).
Args: engine_id: Engine identifier force: Force pause even if applications are running (default: False)
Returns: Dict with pause operation status
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| force | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains the force parameter's effect but does not disclose what happens to existing applications if not forced, whether the operation is reversible, or any authentication requirements. Lacks depth on 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 three sentences with a structured Args list. It is front-loaded with the main action and is entirely concise with no redundant 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 simple two-parameter tool, the description covers the action and parameters adequately but lacks detail on return value structure (only 'Dict with pause operation status') and prerequisites (e.g., engine must be running). Not 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 0%, so the description must add meaning. It defines engine_id as 'Engine identifier' and force as 'Force pause even if applications are running (default: False)', which adds context beyond type/default, though it could specify the format of engine_id.
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 (Pause), the resource (running Spark engine), and the context (watsonx.data SAAS only). It differentiates from sibling tools like pause_presto_engine and pause_prestissimo_engine by specifying 'Spark engine'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'SAAS only' as a usage constraint, but does not provide guidance on when to use pause versus stop or resume, nor when to set force=True. No explicit alternatives or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_columnA
Rename a column in a table in a watsonx.data schema.
Args: catalog_name: Catalog containing the table (e.g., "iceberg_data") schema_name: Schema containing the table table_name: Table containing the column column_name: Current column name new_column_name: New name for the column engine_id: Engine ID to use for the operation (from list_engines)
Returns: Dict with column details including the new name
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes | ||
| schema_name | Yes | ||
| table_name | Yes | ||
| column_name | Yes | ||
| new_column_name | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must address behavioral traits. It describes the operation and return value but does not disclose side effects, permissions needed, reversibility, or error conditions. It implies a rename but lacks detail on what happens to dependent objects.
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 Args and Returns sections, using clear parameter names and brief explanations. Every sentence adds value, and the format is easy to parse for an AI agent.
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 simple operation and presence of an output schema (not shown), the description adequately covers the task. It specifies required parameters and the return type. However, it could add more detail on validation or failure cases.
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 coverage is 0%, so the description compensates by listing parameters with examples (e.g., catalog_name: 'iceberg_data') and linking engine_id to list_engines. However, it does not explain constraints on new_column_name or behavior if column doesn't exist.
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 operation: 'Rename a column in a table in a watsonx.data schema.' The verb 'rename' and resource 'column' are specific. It distinguishes from sibling 'rename_table' which renames a table, and other table/column operations like 'add_columns'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use or not use this tool. There is no mention of prerequisites, alternatives, or contexts where renaming might be inappropriate. The description only lists parameters without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rename_tableA
Rename a table in a watsonx.data schema.
Args: catalog_name: Catalog containing the table (e.g., "iceberg_data") schema_name: Schema containing the table table_name: Current table name new_table_name: New name for the table engine_id: Engine ID to use for the operation (from list_engines)
Returns: Dict with table details including the new name
| Name | Required | Description | Default |
|---|---|---|---|
| catalog_name | Yes | ||
| schema_name | Yes | ||
| table_name | Yes | ||
| new_table_name | Yes | ||
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It fails to mention potential side effects (e.g., impact on references), required permissions, or whether the operation is reversible. It only states the action and return type.
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 concise and front-loaded with the one-line purpose. The Args and Returns sections are structured and efficient, though some parameter details could be more compact.
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 5 required parameters and no provided output schema, the description covers basics but omits context like error handling or prerequisites (e.g., engine availability). It does reference 'list_engines' for the engine_id, which adds useful 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?
With 0% schema description coverage, the description adds essential meaning by listing each parameter and providing examples (e.g., 'catalog_name: Catalog containing the table (e.g., "iceberg_data")'). This compensates well for the bare 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 'Rename a table in a watsonx.data schema.' It uses a specific verb (rename) and resource (table), distinguishing it from sibling tools like 'rename_column' and other table operations.
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 by describing the operation, but it lacks explicit guidance on when to use this tool over alternatives (e.g., for renaming vs. other table modifications). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_prestissimo_engineC
Restart a Prestissimo engine in watsonx.data.
Args: engine_id: Engine identifier
Returns: Dict with engine_id, status, message, response
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 simply says 'Restart' without explaining side effects (e.g., downtime, state transitions), required permissions, or response details. This is minimal 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 very short, with three concise sections: purpose, args, returns. It is front-loaded with the key action. However, the brevity limits content; it earns a 4 for efficiency but not a 5 due to lack of depth.
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 restart operation requiring state awareness) and absence of output schema details beyond field names, the description is incomplete. It lacks prerequisites, error information, and behavioral context, leaving gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description only adds 'Engine identifier' for engine_id. This clarifies the parameter's role but provides no format, constraints, or context. The addition is minimal, not compensating fully for the schema gap.
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 'Restart' and the resource 'Prestissimo engine' in watsonx.data, distinguishing it from sibling 'restart_presto_engine' by engine type. It uses a specific verb and resource, making the tool's purpose 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 no guidance on when to use this tool versus alternatives like restart_presto_engine, pause/resume, or scale. It does not specify prerequisites (e.g., engine state) or exclude any scenarios, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restart_presto_engineC
Restart a Presto engine in watsonx.data.
Args: engine_id: Engine identifier
Returns: Dict with engine_id, status, message, response
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only says 'Restart' without explaining side effects (e.g., impact on running queries, permissions required, or whether restart is graceful). This is insufficient for a mutation 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 short (2 lines) but includes a docstring structure (Args, Returns) that is acceptable though not necessary. It is not verbose, but the lack of essential information makes it merely adequate in length.
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 (1 required param, no annotations, sibling tools with similar actions), the description is incomplete. It does not mention potential outcomes, error conditions, or any context beyond the basic restart intent. An output schema exists but is not utilized in description.
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 0% schema description coverage, the description should compensate. It merely restates 'engine_id: Engine identifier', adding no meaning beyond the schema's string type and required flag. No format, constraints, or examples are given.
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 explicitly states 'Restart a Presto engine in watsonx.data', which is a specific verb (restart) and resource (Presto engine). It clearly distinguishes from sibling tools like restart_prestissimo_engine, pause_presto_engine, etc.
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 restart vs alternatives (e.g., pause/resume) or any prerequisites. It lacks any context about conditions or preferred use cases, failing to help the agent decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_prestissimo_engineB
Resume a paused Prestissimo engine in watsonx.data.
Args: engine_id: Engine identifier
Returns: Dict with resume operation status and engine state transition
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fails to disclose side effects, required permissions, or behavior when the engine is not paused. The return value mentions status and state transition but lacks detail.
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 brief, direct, and well-structured with clear Args and Returns sections, making it easy to scan.
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 simple operation and presence of an output schema, the description sufficiently covers the core functionality and return value, though it omits error conditions and prerequisite state checks.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description includes an Args section that labels 'engine_id' as 'Engine identifier', which adds basic meaning beyond the schema's type-only definition, but no further constraints or formatting details are 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 clearly states the verb 'Resume' and the resource 'paused Prestissimo engine', and it distinguishes from sibling tools like pause_prestissimo_engine and resume_presto_engine.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool versus alternatives such as resume_presto_engine or resume_spark_engine, nor are any prerequisites or conditions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_presto_engineC
Resume a paused Presto engine in watsonx.data.
Args: engine_id: Engine identifier
Returns: Dict with resume operation status and engine state transition
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It states the tool resumes a paused engine and returns a status dict, but omits safety (e.g., is it destructive?), authorization needs, or consequences of resuming an already running engine.
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 concise and well-structured with separate Args and Returns sections. However, it could be slightly more compact without losing 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 the tool's simplicity (1 parameter) and presence of an output schema, the description covers the core function and return value. However, it lacks mention of preconditions (e.g., engine must exist and be paused), error states, or side effects.
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 single parameter engine_id is described only with 'Engine identifier', which adds virtually no meaning beyond its name in the schema. Schema coverage is 0% because the description fails to elaborate on format, constraints, or examples.
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 (Resume), the resource (a paused Presto engine), and the domain (watsonx.data). It effectively distinguishes from sibling tools like pause_presto_engine and resume_prestissimo_engine.
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 gives no explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., engine must be paused). The only implied usage is from the verb 'resume' and the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resume_spark_engineB
Resume a paused Spark engine in watsonx.data (SAAS only).
Args: engine_id: Engine identifier
Returns: Dict with resume operation status
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description only states basic action and return type. Missing details on side effects (e.g., idempotency, state changes, prerequisites, error conditions). Minimal disclosure.
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?
Two concise sentences, but includes 'Args:' and 'Returns:' which add minimal value. Could be streamlined into one sentence without losing 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?
With one parameter and no annotations, description is adequate for a simple resume operation but lacks mention of permissions, error handling, or prerequisites for the engine to exist and be paused.
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 coverage is 0%; description merely repeats 'engine_id: Engine identifier' without adding meaning beyond the schema. Does not explain how to obtain or validate the identifier.
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?
Description clearly states 'Resume a paused Spark engine in watsonx.data (SAAS only)', specifying exact verb and resource with scope limitation. Distinguishes from sibling tools like pause_spark_engine and resume_presto_engine.
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?
Description implies usage context (when engine is paused) but lacks explicit when-not-to-use guidance or comparisons to alternative resume tools. No exclusions or prerequisites stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_prestissimo_engineA
Scale a Prestissimo engine by adjusting coordinator and worker node counts in watsonx.data.
RECOMMENDED NODE TYPES: "starter" or "cache_optimized" (other types may be available)
SCALING CAPABILITIES:
Coordinator quantity: Always 1 (cannot be changed)
Worker quantity: 1-18 (recommended), up to 50 may be supported
Node types CAN be changed during scaling (e.g., from "starter" to "cache_optimized")
Coordinator and worker do NOT need to match node types
API REQUIREMENT: Must provide BOTH coordinator AND worker configurations together.
Args: engine_id: Engine identifier coordinator_node_type: Typically "starter" or "cache_optimized". Can be different from current type. coordinator_quantity: Number of coordinator nodes (must be 1 for Prestissimo) worker_node_type: Typically "starter" or "cache_optimized". Can be different from coordinator_node_type. worker_quantity: Number of worker nodes (1-18 recommended, up to 50 may be supported)
Returns: Dict with scaling operation status and new node configuration
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| coordinator_node_type | Yes | ||
| coordinator_quantity | Yes | ||
| worker_node_type | Yes | ||
| worker_quantity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 key behaviors: coordinator quantity fixed at 1, worker range, node types can be changed, and both configurations must be provided. This adds value beyond the input 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 well-structured with sections for recommendations, capabilities, API requirements, and parameter details. It is slightly verbose but every sentence provides useful information, with the main action front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 5 required parameters and an output schema, the description covers all parameters, explains return values, and addresses potential edge cases (e.g., node type changes, different types for coordinator and worker). It is complete for the complexity level.
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 0%, but the description explains each parameter thoroughly, including constraints (e.g., coordinator_quantity must be 1, worker_quantity recommended 1-18), typical values, and how parameters interact. This fully compensates for the lack of schema descriptions.
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: 'Scale a Prestissimo engine by adjusting coordinator and worker node counts'. It specifies the resource (Prestissimo engine) and the specific adjustments, distinguishing it from siblings like scale_presto_engine and scale_spark_engine.
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 guidelines: recommended node types, scaling capabilities (coordinator always 1, worker 1-18), note that node types can be changed, and requirement to provide both configurations. It does not explicitly state when not to use this tool versus alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_presto_engineA
Scale a Presto engine by adjusting coordinator and worker node counts in watsonx.data.
RECOMMENDED NODE TYPES: "starter" or "cache_optimized" (other types may be available)
SCALING CAPABILITIES:
Coordinator quantity: Always 1 (cannot be changed)
Worker quantity: 1-18 (recommended), up to 50 may be supported
Node types CAN be changed during scaling (e.g., from "starter" to "cache_optimized")
Coordinator and worker do NOT need to match node types
API REQUIREMENT: Must provide BOTH coordinator AND worker configurations together.
Args: engine_id: Engine identifier coordinator_node_type: Typically "starter" or "cache_optimized". Can be different from current type. coordinator_quantity: Number of coordinator nodes (must be 1 for Presto) worker_node_type: Typically "starter" or "cache_optimized". Can be different from coordinator_node_type. worker_quantity: Number of worker nodes (1-18 recommended, up to 50 may be supported)
Returns: Dict with scaling operation status and new node configuration
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| coordinator_node_type | Yes | ||
| coordinator_quantity | Yes | ||
| worker_node_type | Yes | ||
| worker_quantity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses critical behaviors: coordinator quantity fixed at 1, worker range 1-50, node types can be changed, coordinator and worker can have different types. No ambiguity.
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 bullet points and sections. Slightly verbose but every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 parameters, no annotations, output schema present), the description covers all necessary information: purpose, constraints, ranges, requirements. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, but description's Args block explains each parameter with constraints (e.g., coordinator_quantity must be 1, worker_quantity 1-18 recommended). Adds significant meaning beyond the bare 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?
Clearly states it scales a Presto engine by adjusting node counts in watsonx.data. The specific verb 'scale' and resource 'Presto engine' distinguish it from sibling tools like scale_prestissimo_engine and scale_spark_engine.
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?
Provides explicit guidelines: recommended node types, scaling capabilities, requirement to provide both coordinator and worker configurations. Does not explicitly mention when not to use or compare with alternatives, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scale_spark_engineA
Scale a Spark engine by adjusting node count in watsonx.data (SAAS only).
Args: engine_id: Engine identifier number_of_nodes: Target node count (1-1000)
Returns: Dict with scaling operation status (202 Accepted - asynchronous operation)
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| number_of_nodes | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses asynchronous nature (202 Accepted) and SAAS-only constraint, but does not detail side effects like downtime or whether scaling is incremental or requires a restart.
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?
Extremely concise with a clear structure: summary line, parameter list, return description. No extraneous words.
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?
Covers input, effect, and return. Lacks preconditions or error scenarios, but sufficient for a simple scaling tool 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?
Adds meaning beyond schema by specifying node count range (1-1000) and clarifying that engine_id is an identifier, compensating for schema's lack of descriptions.
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?
Description clearly states the action (scale) and resource (Spark engine) with the specific constraint of SAAS only, which differentiates it from sibling tools that scale other engine types.
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 on when to use scale versus other operations like pause or resume, and no mention of prerequisites or if the engine must be running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stop_spark_applicationA
Stop and remove a Spark application.
This will terminate a running application and remove it from the engine's history.
Args: engine_id: Spark engine identifier application_id: Application identifier to stop
Returns: Dict with operation status
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| application_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It states termination and removal from engine history, which is helpful. However, it lacks details on irreversibility, permission requirements, or impact on running queries. For a tool with no annotations, it provides basic but not comprehensive behavior info.
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 concise with a single-line summary, followed by structured Args and Returns sections. Every sentence adds value with no wasted words.
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?
The tool is simple (stop a spark app), and the description covers purpose, parameters, and return format. It mentions removal from history, which is a key behavioral detail. Given the presence of an output schema, it is fairly complete, though it could mention prerequisites like the engine existing.
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 0% description coverage, so the description must compensate. It does so by clearly explaining each parameter: engine_id as 'Spark engine identifier' and application_id as 'Application identifier to stop', adding semantic meaning beyond the property names.
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 explicitly states 'Stop and remove a Spark application,' which clearly identifies the verb and resource. It distinguishes itself from sibling tools like submit_spark_application, get_spark_application_status, and list_spark_applications.
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 clearly states the action (stop and remove) but does not explicitly mention when to use this tool versus alternatives or when not to use it. However, the purpose is clear, and the sibling list indicates this is the only tool for stopping a Spark application.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_spark_applicationA
Submit a Spark application for execution on a Spark engine.
Args: engine_id: Spark engine identifier application: Application file path (JAR, Python, R file) arguments: Application arguments array conf: Spark configuration properties (e.g., {"spark.executor.memory": "2g"}) env: Environment variables name: Application name (will be added to conf as spark.app.name) job_endpoint: External job endpoint service_instance_id: Service instance ID - "iae" or "emr" type: Engine type - "spark" or "gluten" context_type: Context type - "project", "git_project", or "space" volumes: Volume mounts (watsonx.data software only). List of dicts with: - name: volume name - mount_path: path in spark cluster (e.g., "/mount/path") - source_sub_path: path in volume to mount (e.g., "/source/path") - read_only: boolean flag
Returns: Dict with application_id, state, and submission details
Examples: Minimal configuration for IBM Cloud Object Storage using cos:// protocol:
{
"engine_id": "spark398",
"application": "cos://bucket.instance/app.py",
"arguments": ["cos://bucket.instance/data.csv"],
"conf": {
"spark.hadoop.fs.cos.instance.endpoint": "s3.direct.us-east.cloud-object-storage.appdomain.cloud",
"spark.hadoop.fs.cos.instance.access.key": "your-access-key",
"spark.hadoop.fs.cos.instance.secret.key": "your-secret-key"
}
}
Minimal configuration for IBM Cloud Object Storage using s3a:// protocol:
{
"engine_id": "spark398",
"application": "s3a://bucket/app.py",
"arguments": ["s3a://bucket/data.csv"],
"conf": {
"spark.hadoop.fs.s3a.bucket.bucket.access.key": "your-access-key",
"spark.hadoop.fs.s3a.bucket.bucket.secret.key": "your-secret-key",
"spark.hadoop.fs.s3a.bucket.bucket.aws.credentials.provider": "org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider"
}
}
Optional conf parameters (uses engine defaults if not specified):
- spark.app.name: Custom application name
- ae.spark.driver.log.level / ae.spark.executor.log.level: Log levels
- spark.driver.cores / spark.driver.memory: Driver resources
- spark.executor.cores / spark.executor.memory: Executor resources| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| application | Yes | ||
| arguments | No | ||
| conf | No | ||
| env | No | ||
| name | No | ||
| job_endpoint | No | ||
| service_instance_id | No | ||
| type | No | ||
| context_type | No | ||
| volumes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description does not disclose side effects, blocking behavior, authentication requirements beyond examples, or rate limits. Lacks disclosure of potential errors.
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 Args, Returns, Examples, and Optional params sections. Slightly verbose but justified by complexity of the 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?
Covers all 11 parameters, provides return type, and includes examples. Lacks error handling or state change details, but adequate for typical 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?
With 0% schema description coverage, the description excellently explains each parameter's purpose and format, including examples for conf, volumes structure, and name auto-injection into conf.
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?
Clear verb+resource: 'Submit a Spark application for execution on a Spark engine.' Distinguishes from sibling tools like get_spark_application_status or stop_spark_application.
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?
Provides examples for common configurations (COS, S3A) but does not explicitly state when to use this tool versus alternatives or prerequisites. No when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_prestissimo_engineA
Update Prestissimo engine configuration in watsonx.data.
IMPORTANT: Due to a known API limitation, the description field cannot be
updated on its own. If you want to update the description, you must include
at least one additional field in the same call (e.g., display_name, tags,
or properties). Calls that modify only description will fail.
Args: engine_id: Engine identifier. description: Updated description (1-50 characters). Must be accompanied by at least one other updatable field in the same request. display_name: Updated display name. properties: Engine configuration properties. restart_type: Set to "force" to trigger a restart after the update. remove_engine_properties: Properties to remove. tags: Updated tags.
Returns: Dict with updated engine configuration
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| description | No | ||
| display_name | No | ||
| properties | No | ||
| restart_type | No | ||
| remove_engine_properties | No | ||
| tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 a known API limitation (description cannot be updated alone) and notes that setting restart_type to 'force' triggers a restart. It does not detail other behaviors like auth needs, idempotency, or error states.
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: an opening sentence, an important warning, and a bullet-like Args list. It is slightly repetitive as the warning about description needing an additional field appears both in the main text and in the parameter description.
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 complexity (7 params, 1 required, a known limitation) and the presence of an output schema, the description covers the limitation, all parameters, and the return type. It lacks details on update semantics (merge vs replace) and potential errors, but is otherwise 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?
The input schema has 0% description coverage, so the description must compensate. It lists each parameter with a clear explanation, including constraints (e.g., description length 1-50) and behavioral notes (e.g., restart_type triggers restart). This adds significant meaning beyond the bare 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 tool updates Prestissimo engine configuration in watsonx.data. The sibling list includes update_presto_engine and update_spark_engine, so the agent can differentiate by the engine 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 explicit guidance on when to use this tool (updating engine config) and includes a critical warning about the description field limitation. However, it does not explicitly state when not to use or suggest alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_presto_engineB
Update Presto engine configuration in watsonx.data.
Args: engine_id: Engine identifier description: Updated description display_name: Updated display name engine_properties: Engine configuration properties engine_restart: Set to "force" to trigger restart after update remove_engine_properties: Properties to remove tags: Updated tags
Returns: Dict with updated engine configuration
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| description | No | ||
| display_name | No | ||
| engine_properties | No | ||
| engine_restart | No | ||
| remove_engine_properties | No | ||
| tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It mentions that engine_restart set to 'force' triggers a restart, which is helpful, but it does not disclose whether the update is reversible, whether it disrupts running queries, or if specific permissions are required. The description is partially transparent but lacks important behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured as a concise Args/Returns docstring with minimal redundancy. Each parameter is listed on a separate line, and the return value is briefly described. It is front-loaded with the main purpose, but the line breaks could be tighter for better readability.
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?
The tool has an output schema (as per context), and the description mentions that the return is a dict with updated engine configuration, which is sufficient. However, for 7 parameters, the description does not cover error conditions, prerequisites (e.g., engine must exist), or implications of property changes. It is moderately complete but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It lists all 7 parameters with brief explanations (e.g., 'engine_restart: Set to "force" to trigger restart after update'), but the explanations are mostly repetitions of parameter names (e.g., 'engine_properties: Engine configuration properties'). The description adds some value but is not sufficiently detailed for parameters like engine_properties or remove_engine_properties.
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 explicitly states 'Update Presto engine configuration in watsonx.data', which clearly identifies the verb (update), resource (Presto engine), and domain. It distinguishes from sibling tools like update_prestissimo_engine and update_spark_engine by specifying 'Presto'.
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 a list of parameters but does not explicitly state when to use this tool versus alternatives like update_prestissimo_engine or update_spark_engine. It implies usage via the engine type in the name, but no direct guidance on prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_spark_engineA
Update Spark engine configuration in watsonx.data.
Args: engine_id: Engine identifier description: Updated description display_name: Updated display name configuration: Engine configuration (default_config, default_version, engine_home) tags: Updated tags
Returns: Dict with updated engine configuration
Note: Spark engines do NOT support engine_restart parameter. Configuration changes may require manual restart.
| Name | Required | Description | Default |
|---|---|---|---|
| engine_id | Yes | ||
| description | No | ||
| display_name | No | ||
| configuration | No | ||
| tags | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions the return type (dict) and the need for manual restart, but lacks details on permissions, failure modes, or side effects beyond the note.
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 Args, Returns, and Note sections. It is not overly verbose, and each sentence contributes useful 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 presence of an output schema and moderate parameter count, the description covers purpose, basic parameter roles, and a behavioral note. However, it lacks information on error conditions, validation rules, or relationship to other engine operations.
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 coverage is 0%, so the description compensates with brief parameter descriptions (e.g., 'Updated display name', 'Engine configuration (default_config, default_version, engine_home)'). These add value but are minimal and lack details on constraints or defaults.
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 'Update Spark engine configuration in watsonx.data,' specifying the verb and resource. It distinguishes from sibling tools like create_spark_engine and scale_spark_engine by focusing on configuration updates.
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 includes a note about Spark engines not supporting engine_restart and that configuration changes may require manual restart. This provides useful guidance but does not explicitly compare to other update tools like update_presto_engine.
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.
39 tool updates
v0.1.4- First observed
add_columns - First observed
cancel_ingestion_job - First observed
create_ingestion_job - First observed
create_prestissimo_engine - First observed
create_presto_engine - First observed
create_schema - First observed
create_spark_engine - First observed
describe_table - First observed
execute_insert - First observed
execute_select - First observed
execute_update - First observed
explain_analyze_query - First observed
explain_query - First observed
get_ingestion_job - First observed
get_instance_details - First observed
get_spark_application_status - First observed
list_engines - First observed
list_ingestion_jobs - First observed
list_schemas - First observed
list_spark_applications - First observed
list_tables - First observed
pause_prestissimo_engine - First observed
pause_presto_engine - First observed
pause_spark_engine - First observed
rename_column - First observed
rename_table - First observed
restart_prestissimo_engine - First observed
restart_presto_engine - First observed
resume_prestissimo_engine - First observed
resume_presto_engine - First observed
resume_spark_engine - First observed
scale_prestissimo_engine - First observed
scale_presto_engine - First observed
scale_spark_engine - First observed
stop_spark_application - First observed
submit_spark_application - First observed
update_prestissimo_engine - First observed
update_presto_engine - First observed
update_spark_engine
TDQS
Each tool targets a distinct action and resource. Even though there are many engine-specific tools (e.g., create_presto_engine vs create_prestissimo_engine), the tool names and descriptions clearly differentiate them. Overlapping concepts like pause/resume are separated by engine type, making selection unambiguous.
Most tools follow a verb_noun pattern (create_schema, list_engines, execute_select). There is slight inconsistency: 'get' vs 'list' for retrieval tools (e.g., get_instance_details vs list_engines), and 'describe_table' uses 'describe' instead of a more uniform prefix. Overall, the convention is predictable.
With 39 tools, the set is on the higher side. Many tools are redundant because they duplicate the same operations for different engine types (Presto, Prestissimo, Spark). While each tool serves a purpose, the count feels heavy for a typical MCP server, bordering on excessive.
Several lifecycle operations are missing: no tool to delete engines, schemas, or tables, and no create_table tool exists. Additionally, there is no way to list catalogs, which are referenced in many operations. These gaps would cause agent failures when trying to perform basic data management tasks.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Your Databricks Lakehouse in natural language: run SQL on your SQL warehouses, track long-running qu
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
Query BigQuery, Snowflake, Redshift & Azure Synapse with natural language
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to query and explore distributed data across EdgeLake nodes through SQL operations, resource discovery, and schema inspection. Supports complex queries with joins, aggregations, and metadata fields across multiple databases and tables.Mozilla Public 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with SQL Server databases through natural language, providing capabilities for executing queries, exploring schemas, analyzing performance, backing up tables, and managing data with built-in safety limits.-

Watsonx.data Document Libraryofficial
AlicenseNot gradedqualityCmaintenanceBridges AI agents with watsonx.data document libraries, enabling natural language queries and intelligent retrieval from document libraries.4Apache 2.0- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to execute SQL queries and explore databases, tables, and catalogs on Databricks using Unity Catalog.1MIT
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/IBM/ibm-watsonxdata-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server