Skip to main content
Glama
dnic-dev

bw-modeling-mcp

by dnic-dev

bw-modeling-mcp

A Model Context Protocol (MCP) server that enables AI assistants like Claude to work directly inside SAP BW/4HANA systems — reading, creating and modifying BW modeling objects via the same internal SAP APIs that Eclipse BWMT and the BW/4HANA Cockpit use: the BW Modeling REST API (/sap/bw/modeling/) for objects, queries and live data, the ADT API (/sap/bc/adt/) for the ABAP and AMDP routines BW generates, the BW/4HANA manage API for the request monitor and runtime, and the Push API (/sap/bw4/) for data loads.

This is not a simulation. Every tool call connects to a live BW system — write operations produce real changes.


☁️ Running on SAP BTP Cloud Foundry

Central MCP server for AI-assisted SAP BW/4HANA modeling: MCP-capable AI clients connect via OAuth to bw-modeling-mcp with role-based access control, which reaches on-premise, private cloud and BW Bridge systems via principal propagation

Besides stdio, the server can run as an HTTP service on SAP BTP Cloud Foundry with XSUAA OAuth in front and a BTP destination behind — either a shared technical user (BasicAuthentication) or principal propagation, where each caller reaches BW as themselves and BW applies their own authorizations.

Two role collections decide what a user is offered: BW MCP Reader and BW MCP Developer. stdio is unchanged — npm start behaves exactly as before. Setup: docs/CENTRAL-HOSTING-SETUP.md (step-by-step) and docs/CLOUD-FOUNDRY.md (reference).

What central hosting changes

Scenario

stdio only

Hosted on BTP

One analyst, one BW system

runs on the analyst's machine

server-side, the analyst logs in with their own identity

Several analysts, one server

not possible, no central auth

all log in via BTP, each caller's identity reaches BW

Tool permissions

none — whoever runs it can call every tool

granted per role, independent of BW authorizations: a BW developer can be read-only in the MCP, or the querying tools can be withheld from someone who may otherwise view data

BW authorizations

enforced through the user's own credentials

unchanged, still fully enforced — with principal propagation each caller acts as themselves, never as a shared identity

Audit trail

limited

XSUAA logs every login; with principal propagation the BW session log shows the real user

A new tool stays unavailable to read-only callers until it is explicitly classified as a read, so the surface never widens by accident; write implies read, never the reverse. The two role collections are a starting point and can be split further in xs-security.json. Principal propagation additionally needs a certificate rule and ICM trust on the BW side.


Related MCP server: abap-adt-mcp

A two-part blog series about this project (both available in German and English):

  1. Agentic AI meets SAP BW — the full story behind this project: why I built it, what's inside, what happens when Claude walks through a complete BW data lineage on its own. https://www.nextlytics.com/blog/agentic-ai-meets-sap-bw

  2. Agentic AI in practice: MCP server for SAP BW/4HANA — how the server is operated company-wide on SAP BTP Cloud Foundry with role-based access and per-user identity, plus two real customer projects. https://www.nextlytics.com/blog/agentic-ai-in-practice-mcp-server-for-sap-bw/4hana


🆕 What's New — v1.4.0

🎯 SAP BW 7.5 on HANA

Until now almost every call against a BW 7.5 system failed with HTTP 406, because the 7.5 REST framework looks the Accept header up case-sensitively. A small ABAP post-exit neutralises that — an enhancement, no modification. With it in place every REST endpoint that exists on 7.5 is reachable.

  • 📘 docs/BW75-SUPPORT.md — root cause, the ABAP code, the SE24 setup steps, and what BW 7.5 ships no REST resource for — split into what is reachable another way and what is not

  • bw_system_profile — one call and the agent knows what it is working on: BW/4HANA or classic BW, which REST endpoint groups the system publishes, and whether the three preconditions hold (Accept-header handling, ADT DataPreview access, query reporting). It can then take the route that works on this release — reading a transformation from the metadata tables where there is no REST resource for one — instead of discovering the release through failed calls

  • bw_read_metadata_tables — reads straight from the metadata tables what the system publishes no REST resource for:

    • Transformations — field mappings with their rule types, and the source of the start, end, expert and field routines

    • DTPs — path, resolved transformation, extraction mode and error handling

    • Classic providersODSO, CUBE and MPRO

    • Process chains — steps with their variant parameters and the dependencies between them, in the order the chain runs

    • Load history of an InfoCube or DataStore object — request, status, update mode, start, user, duration, records and source

🔗 Process chains, edited in place

  • bw_add_process_chain_edge, bw_remove_process_chain_edge, bw_remove_process_chain_step — change one dependency or one step instead of rewriting the whole model. Removing a step takes its edges and its inline variant with it and bridges the gap, so the strand stays connected

  • Steps are addressed by name — a DTP, an aDSO, the program of an ABAP step, a collector type, or #<index>. An ambiguous name is rejected with the candidates listed rather than resolved by guesswork

  • before / after now inserts a DTP or ABAP block in series: the target's edges are rerouted through the block, so it really runs ahead of or behind that step

🧱 Remodeling monitor

  • bw_list_remodeling_requests, bw_get_remodeling_request, bw_run_remodeling — monitor, diagnose and run remodeling requests: the five processing steps with their status and the application log per step, plus execute, restart, reset and reset-step. Running a rule restructures the InfoProvider and converts its data, so this is a write with data impact

📐 Query characteristic properties

  • bw_update_query_characteristic — display of result rows, display as key/text, access type for result values, sorting, cumulation, display level, and the hierarchy assignment with its display options. "*" applies one set of properties to every characteristic in the layout

🗂️ aDSO field groups

  • bw_update_adso takes a dimension on add_field and add_pure_field, so a new field is created in the right group — a key figure lands in the key figure group instead of the catch-all. That is where the value is: the second activation, and with it the reactivation of every aggregation level, transformation and DTP behind the aDSO, does not happen at all

  • update_field_properties takes the same parameter to move an existing field between groups, and changes nothing else about it

  • Group names are defined per aDSO rather than by a fixed vocabulary, so an unknown name is refused with the declared groups listed instead of quietly falling back to the catch-all

🔧 Minor changes and fixes

  • DTP filters take the full range vocabulary — sign I/E with Equal, Between, ContainsPattern and the comparison operators — validated against the operators the field itself publishes

  • The CSRF token fetch is retried once on a dead keep-alive socket, which used to abort a run of process-chain writes mid-sequence

  • Process-chain run timestamps are parsed again (#15)

  • bw_get_request works for requests without a process log (#16)

  • A failed transformation model serialization is reported as such instead of dumped (#17)

  • NODESNOTCONNECTED is no longer reported as an InfoArea (#18)

  • Namespaced object names such as /NAMESPACE/OBJECT_NAME are addressed correctly in every URL (#19)


Earlier releases — the "What's New" notes for v1.3.0 and older are archived in WHATS_NEW.md; the full structured history is in CHANGELOG.md.


What it can do

An overview by area. Every tool in detail — parameters, behaviour, and the sequences it belongs in — is in the Tools Reference (99 tools).

Search & Discovery

  • Search BW objects by name or description (wildcards supported), filtered by type

  • Where-used / dependency analysis (xref) for any BW object

aDSO

  • Read aDSO structure (fields, settings, version state)

  • Create a new aDSO — from an aDSO template, from a DataSource (RSDS) template, or empty

  • Add InfoObject-backed fields or pure (field-based) fields

  • Remove fields

  • Manage key fields

  • Update field properties (aggregation, data type, length, etc.)

  • Place fields in a field group — on creation, so a key figure lands in the key figure group without a second activation, or afterwards to move an existing field between groups

  • Update aDSO settings (type preset, flags, description)

  • Write-interface aDSO support (pushMode)

InfoObject

  • Read InfoObject definition

  • Create Characteristic — all data types (CHAR, NUMC, DATS, TIMS, SNUMC), with or without master data and texts, with referenced InfoObject, with compounding parents

  • Create Key Figure — all types (NUM, AMT, QTY, DAT, INT), all aggregations (SUM, MAX, MIN)

  • Add and remove display and navigation attributes

InfoArea

  • Read InfoArea definition (name, label, parent area, status)

  • Create a new InfoArea (immediately active, no activation step needed)

  • Move any BW object to a different InfoArea

InfoSource

  • Read InfoSource structure (fields, key fields, label, InfoArea)

  • Create InfoSource with full field definitions

Transformation

  • Read Transformation structure (all sources, all targets)

  • Create a Transformation — including InfoObject (IOBJ) sources/targets with an explicit sub-type (text table, attributes/master data, hierarchy)

  • Map source fields to target InfoObjects or plain fields (StepDirect)

  • Set formula rules (StepFormula)

  • Set field routines — ABAP and AMDP (StepRoutine)

  • Set start routines — ABAP and AMDP

  • Set end routines — ABAP and AMDP

  • Set END routine target fields (explicit field list or exclusion list)

  • Switch runtime between ABAP and AMDP

DTP (Data Transfer Process)

  • Read DTP structure and settings

  • Create DTPs — including DataSource (RSDS) sources and InfoObject targets by sub-type (attributes, texts, hierarchies)

  • Run (execute) a DTP load — returns the run request id for monitoring

  • Update DTP settings and description

  • Switch extraction mode between Full and Delta

  • Set value filters on fields

  • Set routine filters (ABAP code)

BW Query

  • Read a BW Query — metadata, variables, filter, layout, measures, exceptions, and settings

  • Variables: type, processing type (UserEntry, Authorization, CustomerExit), input behavior

  • Filter: fixed values and variable references fully resolved, including mixed selections

  • Layout: rows, columns, free characteristics with full member lists and nested members

  • Calculated key figures: recursively resolved human-readable formulas

  • Restricted key figures: selection conditions (key figure + characteristic restrictions)

  • Inline local measures inside structures: both formulas and selections

  • Exceptions with alert levels and thresholds, cell definitions for grid layout queries

  • Active version with automatic fallback to inactive

  • Create a new, consistent Query (ELEM) on an InfoProvider — empty, or as a full copy of an existing query (layout, filter, variables, key figures) via copy_from

  • Update the layout — rows, columns, structures, and free characteristics

  • Update the filter — fixed values and restrictions

  • Update key figures — basic key figures, references to global RKFs/CKFs, and local formula members with exception aggregation and display properties

  • Build local formula members from the full BW analytic-engine operator catalog — arithmetic, percentage, data, mathematical, trigonometric, and boolean operators plus ternary IF; operand counts are validated before saving

  • Update query settings (properties)

  • Update the display and access properties of each characteristic in the layout — display of result rows, display as key/text, access type for result values, sorting, cumulation, display level, and the hierarchy assignment with its display options; in bulk across every characteristic with "*"

  • Record query edits on a transport request for queries on a transportable package

  • Delete a query

  • Create characteristic variables — user entry, customer exit, authorization or replacement path; as characteristic value, hierarchy or hierarchy nodes; interval, single value, several single values or comparison operators

Live Data Querying

  • Execute a BEx Query or preview data from any InfoProvider (aDSO, CompositeProvider) — returns a formatted result table

  • Fill query variables, control axis layout (rows / columns / free), apply characteristic filters with include/exclude and range operators

  • Drill into hierarchy nodes and structure members (expand / collapse by tuple index)

  • Look up valid characteristic values before setting filters or variables — returns both internal and external key formats

CompositeProvider

  • Read CompositeProvider structure — view node type (Union/Join), source providers (inputs) with mapping count, all fields with dimension classification, join conditions, and temporal join details

  • Create a CompositeProvider — Union or Join node with its source providers attached, or as a copy of an existing one

  • Attach and detach source providers, with their target elements created as needed

  • Replace the field mappings of an input, either explicitly or mapped one to one from the source

  • Set and remove join conditions per input pair, with join type and cardinality

  • Add and remove fields, edit root settings (description, stackable, default node, aggregation behaviour)

Global CP Components

  • Read global Calculated Key Figure (CKF) — formula recursively resolved to a human-readable string, full dependency graph of all referenced sub-components

  • Read global Restricted Key Figure (RKF) — base measure, all characteristic restriction groups with field and value details

  • Read global Structure — all members with Formula/Selection breakdown, referenced components, characteristic filters, optional child members

  • Create a reusable Restricted Key Figure (RKF) on an InfoProvider — from a base key figure plus characteristic restrictions (built for mass creation, one per call); each value is validated against the InfoProvider and written consistent, no separate activation

Repository Navigation

  • Navigate the full BW repository tree — drill from InfoArea to type folder to object to sub-folder, mirroring the Eclipse BWMT Project Explorer; each entry returns a children_path for seamless drill-down

Data Flow Navigation

  • Traverse the complete structural data flow graph of any BW object — all connected sources and targets resolved recursively through Transformations, DTPs, InfoSources, aDSOs, DataSources, CompositeProviders, and InfoObjects; mirrors the Eclipse BWMT Transient Data Flow view

DataSource Navigation & Authoring

  • List all source systems connected to the BW system (ODP_SAP, ODP_CDS, ODP_BW, ODP, FILE, HANA_SDA, HANA_LOCAL)

  • Recursively list all DataSources in a source system with full APCO hierarchy path

  • Read full source system metadata including connection details (ODP context/destination, HANA remote source and schema)

  • Read complete DataSource structure: fields with types, lengths, transfer flags, adapter configuration

  • Discover remote entities (HANA views / virtual tables) exposed by a source system

  • Create a DataSource from a remote entity using the server's field proposal (inactive; activate separately)

  • Change the delta process of a DataSource (deltaProperties)

  • Set the transfer flag of DataSource fields and/or the segment language field

BW Role Management

  • Read the full role hierarchy (ROLE + FOLDER structure)

  • List all queries published per role

  • Check which roles a specific query is assigned to

  • Publish a query into a role or a specific sub-folder

  • Remove a query from a role or folder

  • Move a query between roles (remove from old, add to new)

Push API

  • Get JSON push schema for a write-interface aDSO

  • Push JSON record arrays directly into an aDSO

Process Chain Navigation, Authoring & Monitoring

  • Read complete Process Chain definitions — all steps with type, variant, description, and last execution status

  • Conditional flow semantics fully resolved: DECISION branch labels (including ABAP formula expressions), OR/AND join nodes, positive/negative/neutral edge conditions

  • Automatic variant detail per step: ABAP program and selection variant, TRIGGER scheduling parameters, ADSOACT/ADSOREM aDSO targets and cleanup settings, PLSWITCHL/P target aDSO, DECISION branching formulas — all embedded inline in a single tool call

  • Recursive sub-chain expansion: CHAIN-type steps reference other Process Chains — call bw_get_process_chain again on any referenced chain name to expand the full hierarchy

  • Generic process variant reader: covers all 93 BW/4HANA process types including custom Z-types; unknown types return oDetail as raw JSON

  • Create a Process Chain from a step and edge list — supported types: DTP_LOAD, ADSOACT, ADSOREM (DSO request cleanup), ABAP (execute an ABAP program, optionally with an SE38 selection variant), CHAIN, DECISION, collectors AND / OR / XOR

  • Replace the step model of an existing chain; activate a chain

  • Incrementally edit an existing chain — insert a DTP load step (optionally with its own DSO activation) or an "Execute ABAP Program" step in series before or after any existing step, swap one DTP load variant for another, add on-error (negative) links mirroring the existing success links

  • Repair the wiring of an existing chain — add or remove a single dependency between two steps, or remove a step altogether with the gap bridged automatically

  • Create a DECISION process variant for use as a branch/decision step

  • Monitor execution runs: history with status and timestamps, step-level and message-level run detail, last status per chain across the entire system

DataSource Data Preview

  • Fetch a live data preview from any DataSource (RSDS) directly from the source system

  • Field names resolved automatically from the DataSource structure; configurable record count (default 20)

  • Rendered as a padded plain-text table with column alignment

Open Hub Destination

  • Read an Open Hub Destination (DEST): destination type, source object, DB table, InfoArea, package, and status

  • Complete output field list with types, InfoObject binding, conversion routine, compounding, and key flag

  • File properties for FILE-type destinations

Integrated Planning

  • Create and change Aggregation Levels on an aDSO or a CompositeProvider — over all fields of the provider or a chosen subset

  • Read Aggregation Levels (ALVL) — the planning-enabled view on top of an InfoProvider; characteristics and key figures with full type and semantic detail

  • Read Planning Functions (PLSE) — function type, characteristic usage roles, and parameter tree; FOX code surfaced for FORMULA functions

  • Read Planning Sequences (PLSQ) — ordered step list with aggregation level, planning function, and filter references

  • Read Planning Properties (PLCR) — key-date mode, maximum characteristic combinations, and save strategy for plan-enabled InfoProviders

System Diagnostics & Classic Objects

  • Profile the connected system — BW/4HANA vs classic BW, the REST endpoint groups it publishes and therefore which tool groups work on it, plus three preconditions: Accept-header handling, ADT DataPreview access, and whether query reporting is implemented

  • Read objects the connected system publishes no REST resource for, straight from the metadata tables: transformations (including start, end, expert and field routine source code), DTPs, the classic providers — DataStore objects, InfoCubes and MultiProviders — and process chains, whose steps, variant parameters and dependencies are resolved into execution order

  • Read the load history of an InfoCube or DataStore object — request, status, update mode, start time, user, duration, records transferred and added, and the source — which on a classic BW system is the only route to load status at all

  • SAP BW 7.5 on HANA is reachable for modeling reads after a small ABAP post-exit — see docs/BW75-SUPPORT.md

Request Monitor & Runtime

  • List load requests for a target InfoProvider — status, last process status/action, record count, timestamp, user, TSN

  • Full status analysis of a single load request — header, DTP information (start/finish/duration), process step chain, and message log in one call

  • Activate loaded data (DSO request activation) — move a finished load from the inbound table into the active data table + change log

  • Monitor, diagnose and run remodeling requests — the five processing steps (CHECK, SAVE, CONVERT, ACTIVATE, CLEANUP) with their individual status and the application log per step, plus execute, restart, reset and reset-step. Running a rule restructures the InfoProvider and converts its data

  • Uses the BW/4HANA /sap/bc/.../bw4 manage API (the same operations as the BW/4HANA Cockpit)

General

  • Search & Where-Used (xref)

  • Activate BW objects (aDSO, InfoObject, Transformation, DTP, DataSource, CompositeProvider)

  • Release locks without activating (discard changes)

  • Delete BW objects

  • Transport request assignment — add a user task (sub-request) to a workbench transport, list changeable transport requests and their tasks

  • Reassign an object to a different package (Development Class) on a transport request


Combining with an ADT MCP Server

bw-modeling-mcp works best alongside an ADT MCP server such as vibing-steampunk or ARC-1. The two do not overlap as much as it may look.

This server owns the BW object and, with it, the body of the ABAP that BW generated for that object: the class behind a transformation routine, the program behind a DTP filter routine. Write those through bw_set_transformation_routine, bw_set_transformation_expert_routine and bw_set_dtp_filter_routine rather than through ADT — they do not only replace the source, they save the transformation master back afterwards, which is what re-registers the code in the transportable metadata. A class-only edit survives until the next regeneration or transport and is then gone.

The ADT MCP server covers ABAP as a subject in its own right: your own reports, classes, function modules and DDIC tables, repository search and navigation, arbitrary table reads, debugging, ATC, unit tests, dumps and transports. Together they cover the full cycle from BW object to ABAP logic.


System Compatibility

System

Support

SAP BW/4HANA (all versions)

✅ Full support

SAP BW Bridge (SAP BTP ABAP stack)

✅ Via cookie authentication (BW_COOKIE_FILE)

SAP BW on HANA (7.5)

⚠️ Modeling reads after a small ABAP enhancement — see BW 7.5 Support


Requirements

  • SAP BW/4HANA system with the internal SAP APIs enabled (SAP BW 7.5 works for modeling reads once the enhancement in docs/BW75-SUPPORT.md is in place)

  • Node.js 18 or later

  • An MCP-compatible AI client (Claude Desktop, Claude Code, etc.)


Installation

Two ways to run. Locally as a stdio server (one user, one machine — the steps below), or centrally hosted on SAP BTP Cloud Foundry behind XSUAA OAuth for a whole team → see docs/CENTRAL-HOSTING-SETUP.md. The installation and configuration below cover local stdio use; upgrading an existing local setup is non-breaking.

# Option 1: Install via npm (recommended)
npm install -g bw-modeling-mcp

# Option 2: Clone and build
git clone https://github.com/dnic-dev/bw-modeling-mcp.git
cd bw-modeling-mcp
npm install
npm run build

Configuration

For local (stdio) use, the server is configured via environment variables. For central BTP hosting, connection and credentials come from the BTP destination and service bindings instead — see docs/CENTRAL-HOSTING-SETUP.md.

Variable

Description

Required

BW_URL

BW system URL (e.g. https://myhost:50001)

yes

BW_USER

SAP user name

yes (or BW_COOKIE_FILE)

BW_PASSWORD

SAP password

yes (or BW_COOKIE_FILE)

BW_CLIENT

SAP client (e.g. 001)

yes

BW_LANGUAGE

Language for object texts (e.g. EN, DE). Default: DE

no

BW_COOKIE_FILE

Path to a browser-exported cookie file for SAML-/OAuth-fronted systems (e.g. BW Bridge). Netscape or name=value format. When set, BW_USER / BW_PASSWORD are optional.

no

Cookie authentication (BW Bridge / SAP BTP): For BW systems that sit behind a SAML or OAuth login (such as BW Bridge on the SAP BTP ABAP stack), Basic Auth is not available. Export the authenticated session cookies from your browser into a file and point BW_COOKIE_FILE at it. The login/session approach is analogous to vibing-steampunk and ARC-1. When the session expires, refresh the cookie file and restart the server.

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "bw-modeling-mcp": {
      "command": "node",
      "args": ["/path/to/bw-modeling-mcp/dist/stdio.js"],
      "env": {
        "BW_URL": "https://your-bw-host:50001",
        "BW_USER": "YOUR_USER",
        "BW_PASSWORD": "YOUR_PASSWORD",
        "BW_CLIENT": "001",
        "BW_LANGUAGE": "EN"
      }
    }
  }
}

Claude Code (VS Code extension)

Add .mcp.json to your project root:

{
  "mcpServers": {
    "bw-modeling-mcp": {
      "command": "node",
      "args": ["/path/to/bw-modeling-mcp/dist/stdio.js"],
      "env": {
        "BW_URL": "https://your-bw-host:50001",
        "BW_USER": "YOUR_USER",
        "BW_PASSWORD": "YOUR_PASSWORD",
        "BW_CLIENT": "001",
        "BW_LANGUAGE": "EN"
      }
    }
  }
}

How it works

The server talks to four SAP APIs, and only one of them needs a protocol worth describing.

The BW Modeling REST API (/sap/bw/modeling/) is a full-document API: there is no way to change one attribute of an object. Every write therefore runs the same six steps.

  1. Lock — acquires an exclusive lock and returns a lockHandle

  2. Read — fetches the current complete XML of the object

  3. Modify — applies the change to that XML

  4. PUT — sends the whole document back, never a fragment

  5. Activate — promotes the inactive version to the active one

  6. Unlock — releases the lock

Two consequences are worth knowing. Saving and activating are separate: a document the server accepts can still fail to activate, so a successful write proves less than it appears to. And because the whole document travels, a read that came from a stale session buffer will silently write old values back — the tools read fresh for exactly this reason.

The other three need none of it. The ADT API (/sap/bc/adt/) is used narrowly and always for an object BW generated itself: the body of a transformation routine (its generated class), the body of a DTP filter routine (its generated program), the DataPreview service behind bw_read_metadata_tables, plus transport checks and activation runs. Everything else ABAP — writing your own reports, classes or DDIC tables, searching the repository, reading arbitrary tables, debugging — is the job of an ABAP ADT MCP server alongside this one, see Combining with an ADT MCP Server. The BW/4HANA manage API (/sap/bc/http/sap/bw4/) answers the request monitor, the remodeling monitor and runtime operations. The Push API (/sap/bw4/v1/push/) takes a JSON record array straight into a write-interface aDSO.

Session cookies and CSRF tokens are handled for all four.

See ARCHITECTURE.md for the full technical architecture and the complete endpoint reference.


Roadmap

  • Tool consolidation — collapse today's one-tool-per-operation surface into a small set of verb-based tools (bw_read, bw_find, bw_write_*, …) that cover the same operations. Same functionality, a single consistent name parameter across all reads, and each new operation then costs one enum value instead of a whole new tool — so coverage keeps growing while the surface stays within MCP clients' tool limits.

  • More modeling & Cockpit coverage — integrate and complete further BW modeling and BW/4HANA Cockpit operations, e.g. Open ODS Views, further planning objects, additional runtime and monitoring operations, and further modeling objects.


Contributing

Issues and feature requests are welcome — please use the Issue templates.

If you have access to a BW/4HANA system and want to help expand coverage, I am happy to hear from you. The best way to contribute is to try it out and report what works, what doesn't, and what's missing.


License

MIT

Available Tools

99 tools
bw_activateA

Activate one BW object (aDSO, Transformation, DTP, InfoObject, InfoSource, DataSource, CompositeProvider, or Aggregation Level). Pass the lock_handle from bw_update_adso or bw_update_transformation. For DTP and DataSource (rsds) activation use lock_handle="" (no lock needed — standalone activation). For object_type "rsds" also pass source_system (a DataSource is identified by DataSource name plus source system). Unlock is sent automatically after activation (not for DTPs or DataSources). The response lists any DTPs deactivated by impact analysis — these must be re-activated.

ParametersJSON Schema
NameRequiredDescriptionDefault
transportNoTransport request number. Required on systems with transport obligation.
lock_handleYesLock handle from bw_update_adso or bw_update_transformation. Use empty string "" for DTP and DataSource (rsds) activation, and for an Aggregation Level (alvl) created with bw_create_aggregation_level.
object_nameYesObject name (e.g. "OBJECT_NAME" or "DTP_..."). For rsds, the DataSource name.
object_typeYesObject type: adso, trfn, dtpa, iobj, trcs, rsds (DataSource), hcpr (CompositeProvider), or alvl (Aggregation Level).
source_systemNoSource system name. Required when object_type is "rsds" (e.g. "LSYS_NAME").

TDQS

A4.4/5.0
Behavior4/5

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

There are no annotations, so the description carries the full behavioral burden. It discloses that unlock is sent automatically, except for DTPs and DataSources, and that impact analysis can deactivate DTPs that must be re-activated. This is strong side-effect transparency, though error behavior is not covered.

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

Conciseness5/5

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

The description is efficiently organized and every sentence contributes: scoping sentence, lock-handle rules, source-system rule, and a side-effect warning. There is no filler or redundant text.

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

Completeness4/5

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

For a five-parameter tool without an output schema, the description covers the nu rules, provides usage conditions, notes side effects, and warns about required re-activations. It does not describe the exact success/error return shape, but the essential calling requirements are covered.

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

Parameters4/5

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

Schema coverage is 100%, giving a baseline of 3. The description adds real value beyond the schema by explaining when lock_handle must be empty, when source_system is required, and how unlock behavior varies by object type.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Activate one BW object' and lists the exact supported object types. This clearly distinguishes it from sibling tools like bw_activate_request and bw_activate_process_chain.

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

Usage Guidelines4/5

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

The description gives concrete usage rules: when to pass a lock_handle, when to pass an empty string, and when to include source_system. It does not explicitly name alternative tools for request or process-chain activation, but the object-type enumeration makes the intended scope clear.

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

bw_activate_process_chainA

Activate an existing Process Chain (RSPC) via the BW/4HANA Cockpit REST API. Use this after bw_create_process_chain (with activate=false) or to re-activate a modified chain. Returns the top-level activation message, severity, and full log entries. Surfaces any log entries with severity "error" in a dedicated errors field.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses it activates (mutation), returns message, severity, and log entries, and surfaces errors. It does not mention if the chain must be inactive or if activation is synchronous, but provides good insight overall.

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

Conciseness5/5

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

The description is two terse sentences front-loaded with the main action. No redundant words; every sentence adds value.

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

Completeness5/5

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

Given the low complexity (one parameter), full schema coverage, and clear return value description, the tool is well-documented and complete for its scope.

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

Parameters3/5

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

Schema coverage is 100% with a clear description including case-insensitivity. The tool description does not add additional meaning beyond what the schema already provides, earning a baseline 3.

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

Purpose5/5

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

The description clearly states it activates an existing Process Chain via the BW/4HANA Cockpit REST API, and distinguishes from sibling tools like bw_create_process_chain by specifying the use case after creation or reactivation.

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

Usage Guidelines4/5

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

Explicitly says when to use: after bw_create_process_chain with activate=false or to re-activate a modified chain. It does not state when not to use, but the context is clear enough.

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

bw_activate_requestA

Activate loaded data (DSO request activation): move a finished load from the Inbound Table into the active data table and change log. This is the runtime request activation, NOT the modeling-object activation done by bw_activate. Only applies to aDSOs that have an activation step (not inbound-only staging aDSOs). Activates all previous loads up to the given request. Asynchronous: a successful call starts activation; monitor completion via bw_list_requests / bw_get_request.

ParametersJSON Schema
NameRequiredDescriptionDefault
storageNoStorage area code the request lives in (default "AQ").
request_tsnYesLoad request TSN to activate (from bw_list_requests / bw_run_dtp output).

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description fully discloses key behaviors: it activates all previous loads up to the given request, moves data from Inbound Table to active data table and change log, and is asynchronous. No contradictions.

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

Conciseness5/5

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

The description is two well-structured sentences. The first sentence front-loads the action and scope, while the second provides important distinctions and asynchronous behavior. No wasted words.

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

Completeness5/5

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

The description covers prerequisites (aDSO with activation step), scope (all previous loads), asynchronous nature, and post-call monitoring via sibling tools. With only two parameters and no output schema, this is complete and self-contained.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters (request_tsn and storage). The description adds context that request_tsn comes from bw_list_requests/bw_run_dtp output and notes that storage defaults to 'AQ', but this mostly mirrors the schema. The additional context about 'all previous loads' is more about overall behavior than parameter semantics, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool activates loaded data (DSO request activation) and distinguishes it from bw_activate, which does modeling-object activation. The verb 'activate' and resource 'DSO request' are specific, and the differentiation from the sibling tool is explicit.

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

Usage Guidelines5/5

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

The description explicitly states when to use (for aDSOs with an activation step) and when not (not for inbound-only staging aDSOs, not modeling-object activation). It also notes that activation is asynchronous and that progress should be monitored via bw_list_requests or bw_get_request.

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

bw_add_process_chain_edgeA

Add one dependency (edge) between two existing steps of a Process Chain (RSPC), via the BW/4HANA Cockpit REST API. In-place edit: reads the current model, appends the edge, and PUTs it back. Use this to repair the wiring of a chain — for example to connect the end of a newly inserted block to the step that must run after it. Note that an "always continue" dependency is TWO edges (one on-success, one on-error): call this twice, once with status "positive" and once with "negative". Idempotent: an identical edge is skipped without writing. A 412 on the PUT means the ETag was stale (chain modified between read and write); the error reports this explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget step. Same reference forms as "from".
fromYesSource step. Node reference forms: a DTP or process-variant name; an aDSO held by an ADSOACT/ADSOREM node; the program of an ABAP step, or "PROGRAM/VARIANT"; "TRIGGER" or a collector type ("AND"/"OR"); or "#<index>" using the step numbers printed by bw_get_process_chain. An ambiguous name is rejected with the candidates listed.
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
statusNoEdge condition: "positive" = on success, "negative" = on error, "neutral" = unconditional. Defaults to "neutral" when the source is the TRIGGER or a collector (neither can succeed or fail), "positive" otherwise.
activateNoIf true, activate the chain immediately after the edit. Default false.
sub_statusNoBranch condition for an edge leaving a DECISION step: the branch EVENTNO, e.g. "01" (THEN/JA) or "02" (ELSE/NEIN). Defaults to "00" (a normal, non-branch edge). A branch edge is always "positive".
transport_requestNoOptional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description alone discloses the full behavioral profile: it reads the current model, appends the edge, and PUTs it back; it is idempotent for identical edges; and ETag stalreferencing (412) is explicitly explained. This is strong transparency for a mutating tool.

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

Conciseness5/5

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

The description is dense but no word is wasted. Purpose, mechanics, usage scenario, edge-condition nuance, and error behavior are each given one clear sentence in a logical order. Nothing feels padded or redundant.

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

Completeness5/5

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

For a 7-parameter mutating tool with no annotations and no output schema, the description is nearly complete: it explains what the operation does, how it mutates, when the right to use it, how to express a special edge type, and what error message to expect on concurrency conflict. Remaining details already live in the well-described schema.

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

Parameters4/5

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

Schema coverage is 100% coverage, so the schema already documents each parameter thoroughly. The description adds meaningful cross-parameter semantics by explaining that an 'always continue'edge requires two calls with status 'positive' and 'negative', and that identical edges are skipped. This goes beyond the schema without repeating it.

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

Purpose5/5

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

The description opens with a precise verb and target: 'Add one dependency (edge) between two existing steps of a Process Chain (RSPC).' It also distinctly scopes the tool as in-place edge wiring, making it clearly distinct from sibling tools that create, remove, or append process-chain nodes.

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

Usage Guidelines4/5

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

It gives explicit usage context ('repair the wiring of a chain') with a concrete example (connecting the end of a newly inserted block to the next step). It also covers the special two-call pattern for 'always continue' dependencies. The only gap is that it does not explicitly route away from the sibling error-link and removal tools.

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

bw_add_process_chain_programA

Add an "Execute ABAP Program" step (RSPC process type ABAP, "Programm ausführen") to an existing Process Chain (RSPC), via the BW/4HANA Cockpit REST API. Runs an ABAP report, optionally with a named SE38 selection variant. In-place edit: reads the current model, inserts the node + its INLINE process variant (the program call is stored inline in the chain — there is no separate variant object), and PUTs it back. Positioning: pass "before" to run the program ahead of an existing step (the target's incoming edges are rerouted through the new step, e.g. Start → PROGRAM → DTP); pass "after" to run it between a step and its successors; pass neither (optionally with predecessor) to append behind the strand end closest to the trigger. edge_mode "both" (default) adds an on-success and an on-error edge per new link; "success_only" adds only the on-success edge. Idempotent: if an ABAP step already calls the same program (and variant), it is skipped without writing. Only the synchronous/local/program call configuration is verified; keep the defaults. A 412 on the PUT means the ETag was stale (chain modified between read and write); the error reports this explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
afterNoInsert the program step AFTER this node — it runs between the target and its former successors. Mutually exclusive with "before".
localNoCall location. true (default) runs the program on this system (X_LOCAL). Only the default is verified.
beforeNoInsert the program step BEFORE this node (its DTP/variant name, or an aDSO held by an ADSOACT node). The target's incoming edges are rerouted through the new step. Mutually exclusive with "after".
programYesABAP program / report to execute (e.g. "REPORT_NAME").
variantNoOptional ABAP report (SE38) selection variant name (e.g. "VARIANT_NAME"). Omit to run the report without a variant.
activateNoIf true, activate the chain immediately after the edit. Default false.
edge_modeNo"both" (default): add an on-success and an on-error edge per new link. "success_only": add only the on-success edge.
descriptionNoOptional step description (cosmetic).
predecessorNoUsed only when neither before nor after is given. Node to append behind (a DTP/variant name, an aDSO held by an ADSOACT node) or the literal "strand_end_auto" (default = terminal node closest to the trigger).
synchronousNoCall mode. true (default) runs the program synchronously (X_SYNCHRON). Only the default is verified.
program_packageNoOptional package of the report (cosmetic value-help enrichment; the server re-derives it when omitted).
transport_requestNoOptional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.
program_descriptionNoOptional report description (cosmetic).
variant_descriptionNoOptional variant description (cosmetic).

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: in-place edit, idempotency (skip if same program/variant), edge rerouting details, and error handling. It also clarifies that only synchronous/local/defaults are verified. This provides comprehensive insight beyond the basic function.

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

Conciseness4/5

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

The description is detailed (~200 words) but efficiently combines multiple concepts: purpose, mechanism, positioning, edge mode, idempotency, and error handling. It is front-loaded with the core action. While concise given complexity, some technical details could be moved to notes, but overall it earns its space.

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

Completeness3/5

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

Given 15 parameters and no output schema, the description covers behavior, error handling, and positioning well. However, it does not describe the return value or output format for successful calls. For a tool without output schema, that omission leaves a gap, preventing the agent from fully understanding what to expect.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for each parameter, so baseline is 3. The main description adds value by explaining how 'before', 'after', and 'predecessor' affect chain structure (e.g., rerouting), and gives examples ('Start → PROGRAM → DTP'). It goes beyond schema details to contextualize parameter usage.

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

Purpose5/5

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

The description clearly states the tool adds an 'Execute ABAP Program' step to a Process Chain, specifying the API and mechanism. It uses specific verbs ('Add', 'runs an ABAP report') and distinguishes from sibling tools like bw_create_process_chain or bw_update_process_chain by focusing on inserting a program step into an existing chain.

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

Usage Guidelines4/5

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

The description explains positioning options (before, after, append), edge modes, and idempotency, providing clear guidance on how to insert the step. It also notes error handling (412 for stale ETag) but does not explicitly compare with alternatives for other step types or state when not to use this tool.

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

bw_append_process_chain_dtpA

Add one DTP load step (optionally followed by its own DSO activation step) to an existing Process Chain (RSPC), via the BW/4HANA Cockpit REST API. In-place edit: reads the current model, inserts the node(s)/edge(s)/inline variant, and PUTs it back — the caller does not supply the full model. Positioning: pass "before" to place the block IN SERIES ahead of an existing step (the target's incoming edges are rerouted into the block, then the block links to the target), or "after" to place it in series between a step and its successors. With neither, the block is only APPENDED behind the strand end closest to the trigger (or behind "predecessor") — the target keeps its existing successors, so the block ends up running in PARALLEL to them, not ahead of them. Use before/after whenever the new step must complete before an existing one starts. When adsoact is given, the whole DTP → activation block is placed as one unit. edge_mode defaults to "both", which adds an on-success AND an on-error edge per link ("always continue" — the successor runs even after a failed load). Pass "success_only" for an on-success edge only, which is what a chain whose existing DTP steps have no error edge expects. Idempotent: if the DTP is already a node in the chain, it is skipped without writing. Optionally activates afterwards and then verifies that no collector was inserted and no extra strand appeared. A 412 on the PUT means the ETag was stale (chain modified between read and write); the error reports this explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtpYesDTP variant name to append (e.g. "DTP_NAME").
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
afterNoInsert the block IN SERIES AFTER this node — it runs between the target and its former successors. Mutually exclusive with "before".
beforeNoInsert the block IN SERIES BEFORE this node: the target's incoming edges are rerouted into the block, then the block links to the target. Node reference — see the note below. Mutually exclusive with "after".
adsoactNoOptional aDSO name (e.g. "ADSO_NAME"). When given, an ADSOACT step activating this aDSO is added right after the DTP (per-DTP activation) and the two form one block that is placed together.
activateNoIf true, activate the chain immediately after the edit. Default false.
edge_modeNo"both" (default): add an on-success AND an on-error edge per link, so the successor runs even after a failed load ("always continue"). "success_only": add only the on-success edge. Match whatever the chain's existing steps use — the default adds an error edge that a success-only chain does not have.
predecessorNoUsed only when neither before nor after is given. Node to APPEND behind, or the literal "strand_end_auto" (default = terminal node closest to the trigger, ties → first). An append leaves the target's existing successors untouched, so the new block runs in parallel to them — pass before/after instead when it must run in sequence. Node reference forms (same for before / after / predecessor): a DTP or process-variant name; an aDSO held by an ADSOACT/ADSOREM node; the program of an ABAP step, or "PROGRAM/VARIANT"; "TRIGGER" or a collector type ("AND"/"OR"); or "#<index>" using the step numbers printed by bw_get_process_chain. An ambiguous name is rejected with the candidates listed — use "#<index>" then.
transport_requestNoOptional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations to rely on, the description fully carries the burden and does so thoroughly: it discloses the in-place read/modify/write behavior, ETag staleness producing a 412, idempotent skip when the DTP already exists, default dual-edge 'always continue' semantics, placement after verification, and the exact structural impact of append vs before/after. This is rich, non-obvious behavioral context well beyond just saying 'adds a step'.

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

Conciseness4/5

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

The text is long and dense, but nearly every sentence carries a distinct piece of operational guidance: position routing, edge default, idempotency, ETag failure, block placement. The main structural weakness is that many separate topics are blended together without breaks, so an agent must parse deeply, though no filler is present.

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

Completeness5/5

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

Given the tool's complexity (nine parameters, two required), no annotations, and no output schema, this description is remarkably complete. It covers the risky positioning semantics, default behaviors, failure mode for stale ETags, transport relevance, idempotency, and node reference forms, leaving an agent with the information needed to correctly invoke it and interpret unexpected results.

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

Parameters5/5

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

Even though schema coverage is 100%, the description adds substantial semantic meaning: it explains how before/after interacts conceptually with rerouting, what 'neither' means for predecessor/strand end auto-selection, how adsoact makes the DTP and activation one block, and what edge_mode defaults and alternatives actually cause. The node-reference forms for predecessor and sibling named tools like bw_get_process_chain greatly enrich the raw parameter definitions.

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

Purpose5/5

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

The description opens with a specific verb-resource pair: 'Add one DTP load step (optionally followed by its own DSO activation step) to an existing Process Chain (RSPC)'. It clearly differentiates this tool from siblings like bw_swap_process_chain_dtp, bw_add_process_chain_program, and bw_add_process_chain_edge by naming the exact operation and its optional companion step.

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

Usage Guidelines5/5

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

The description gives explicit when-to and when-not-to instructions: use before/after when a step must complete before an existing one, and phrases like 'pass "before" to place...' and 'the block ends up running in PARALLEL to them, not ahead of them' spell out consequences. It also explains that edge_mode 'success_only' is what a chain with no existing error edges expects, giving actionable context for choosing parameters.

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

bw_change_datasource_deltaA

Change the delta process of a DataSource (RSDS deltaProperties). Full read-modify-write; the requested value is validated against the DataSource's admissible delta values. Leaves the DataSource inactive — activate separately with bw_activate (object_type "rsds"). Pass delta_process as an empty string to remove the delta process.

ParametersJSON Schema
NameRequiredDescriptionDefault
delta_processYesTarget delta process code (e.g. "FIL0"), or empty string for no delta.
source_systemYesSource system of the DataSource (compound key), e.g. "SOURCE_SYSTEM".
datasource_nameYesTechnical name of the DataSource (e.g. "DATASOURCE_NAME").

TDQS

A4.6/5.0
Behavior5/5

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

No annotations exist, but the description covers key behaviors: read-modify-write, validation against admissible values, deactivation side effect, and empty string removal. No contradictions.

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

Conciseness5/5

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

Three concise sentences with no fluff. Front-loaded with purpose and action, then side effects, then a specific parameter note.

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

Completeness4/5

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

For a mutation tool with no output schema, the description adequately explains inputs, behavior, and side effects. Minor gap: no mention of return value or error handling, but overall sufficient.

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

Parameters4/5

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

Schema covers all parameters with descriptions. The description adds that 'delta_process' can be empty to remove and that it is validated against admissible values, providing extra context beyond basic schema.

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

Purpose5/5

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

The description clearly states the action ('change the delta process'), the resource ('DataSource RSDS deltaProperties'), and distinguishes from siblings like 'bw_activate' by noting the datasource is left inactive.

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

Usage Guidelines4/5

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

Guidance is provided on when to use (change delta process), the read-modify-write behavior, validation, and the need to activate separately. Lacks explicit conditions for not using this tool but offers clear context.

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

bw_change_packageA

Assign an existing BW object to a different package (Development Class) and record the change on a transport request. Single write, no activation and no version change: this is a pure TADIR/transport assignment, so an active object stays active and no re-activation is required (verified for ADSO, TRFN, DTPA). Do not re-activate a TRFN afterwards — an activation with a stale lock can regenerate the AMDP method body. For object_type "RSDS" (DataSource) source_system is mandatory — the key is compound and the package change is verified by re-reading the DataSource. Verified for TRFN and RSDS; other TLOGO types use the same mechanism but are not trace-verified.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageYesTarget package / Development Class (e.g. "Z_PACKAGE").
transportNoTransport request number (e.g. DEVK900123). Required on systems with transport obligation.
object_nameYesTechnical name of the object to reassign (e.g. "OBJECT_NAME").
object_typeYesBW object type / TLOGO, e.g. "TRFN", "ADSO", "IOBJ", "TRCS", "RSDS", "HCPR".
source_systemNoSource system — required only for object_type "RSDS" (a DataSource is identified by DataSource name plus source system).

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully covers behavioral traits: no activation, no version change, active object stays active, verified for specific types, and a warning about TRFN re-activation. It honestly notes that other types are not trace-verified.

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

Conciseness4/5

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

The description is slightly long but every sentence provides necessary detail. There is no fluff or repetition, and it is structured logically: action, behavior, warnings, special cases.

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

Completeness5/5

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

Given 5 parameters with 3 required and no output schema, the description adequately covers behavior, side effects, verified object types, and parameter nuances. It is complete for an agent to use the tool correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the compound key for RSDS and that the change is verified by re-reading the DataSource. It also gives example values and clarifies mandatory conditions.

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

Purpose5/5

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

The description clearly states the verb 'assign' and the resource 'BW object to a different package', specifying it is a pure TADIR/transport assignment with no activation or version change. This distinguishes it from siblings like bw_move_object.

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

Usage Guidelines4/5

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

The description provides clear context: it's a single write, no activation needed, and explicitly warns not to re-activate TRFN afterwards. It also specifies that for RSDS, source_system is mandatory. However, it does not explicitly contrast with other tools like bw_move_object.

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

bw_create_adsoA

Create a new aDSO shell. action "from_template" (default): proposes fields/keys/settings from a template object — pass template_name. Without template_name creates an empty standard shell. The template can be an existing aDSO (template_type "ADSO", default) or a DataSource (template_type "RSDS"); for RSDS, source_system is required and the server proposes the DataSource fields. action "empty": creates a minimal empty aDSO with the given adso_type preset (no fields). After creation the aDSO is inactive — add fields with bw_update_adso, then call bw_activate.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesDescription / label for the new aDSO.
actionNo"from_template" (default) or "empty".
packageNoDevelopment package (default "$TMP").
adso_nameYesName for the new aDSO (e.g. "ADSO_NAME").
adso_typeNoaDSO type preset for action "empty" (default "standard").
info_areaYesInfoArea to create the aDSO in (e.g. "NEXTJUICE").
source_systemNoSource system name of the DataSource. Required when template_type is "RSDS".
template_nameNoTemplate object to propose fields from (action "from_template" only). An aDSO name when template_type is "ADSO", or a DataSource name when template_type is "RSDS".
template_typeNoType of the template object for action "from_template": "ADSO" (default) to copy from an existing aDSO, or "RSDS" to propose fields from a DataSource. When "RSDS", source_system is required.
write_interfaceNoEnable write interface (pushMode="true"). Default false.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description must disclose all behavioral traits. It does so by stating the created aDSO is inactive, the default action and template_type, and the requirement for source_system when template_type is RSDS. No contradictory or missing critical behavior.

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

Conciseness4/5

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

The description is moderately long but each sentence contributes essential information. It is well-structured: starts with the core action, then details each action's behavior, and ends with post-creation steps. No redundant phrases.

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

Completeness4/5

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

Given the tool's complexity (10 parameters, 2 actions, no output schema), the description covers parameter dependencies, default behaviors, and subsequent required steps (update/activate). It references related tools, providing sufficient context for correct invocation.

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

Parameters4/5

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

The input schema has 100% coverage, so baseline is 3. The description adds value by explaining dependencies (e.g., source_system required for RSDS) and defaults (action='from_template', template_type='ADSO'), going beyond mere schema descriptions.

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

Purpose5/5

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

The description clearly states 'Create a new aDSO shell' and elaborates on two specific actions (from_template, empty). It differentiates effectively from sibling tools like bw_create_datasource or bw_create_infoarea by focusing exclusively on aDSO creation.

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

Usage Guidelines4/5

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

The description explains when to use 'from_template' (with or without template_name) and 'empty', and provides workflow context (inactive shell, then update/activate). It does not explicitly list scenarios where the tool should not be used, but the guidance is adequate.

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

bw_create_aggregation_levelA

Create a new Aggregation Level (TLOGO ALVL) on top of a planning-enabled InfoProvider (aDSO or CompositeProvider), for Integrated Planning / embedded BPC. Sequence: lock → POST the shell → unlock → lock → PUT the field list → unlock. The Aggregation Level is created inactive — activate it with bw_activate using object_type "alvl" and lock_handle "". By default every characteristic and key figure of the InfoProvider is exposed; pass fields to restrict the selection. A selection needs at least one characteristic and one key figure, and it must contain every key field of the underlying provider, otherwise activation reports the missing ones. The InfoProvider must be planning-enabled, otherwise the create fails with a message saying it cannot serve as the basis of an aggregation level.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesDescription of the Aggregation Level.
fieldsNoCharacteristics and key figures to expose, by their name on the InfoProvider (e.g. ["FIELD_NAME", "IOBJ_NAME"]). Omit to expose every field of the provider. Read the provider with bw_get_adso or bw_get_composite_provider to see the names. On a CompositeProvider the fields carry a generated prefix ("<prefix>-FIELD_NAME"); both that form and the bare name are accepted.
packageNoDevelopment package. Defaults to "$TMP" (local, not transported).
info_areaYesInfoArea the Aggregation Level is created in (e.g. "AREA_NAME").
transportNoTransport request number. Required on systems with transport obligation.
info_providerYesTechnical name of the underlying planning-enabled InfoProvider — an aDSO or a CompositeProvider (e.g. "OBJECT_NAME").
aggregation_level_nameYesTechnical name of the new Aggregation Level (e.g. "OBJECT_NAME").

TDQS

A4.7/5.0
Behavior5/5

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

There are no annotations, so the description carries the full behavioral burden. It discloses the multi-step lock/POST/unlock/lock/PUT/unlock sequence, inactive-creation behavior, default exposure of all provider fields, selection constraints (at least one characteristic and one key figure, all key fields required), and the failure condition for non-planning-enabled providers. This is rare specificity.

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

Conciseness5/5

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

The description is structured and information-dense with zero filler. Complex procedural and constraint information is organized into ordered statements that progress from creation sequence, to activation, to field-selection rules, to failure conditions. Front-loading the core purpose and immediate procedural requirement is effective.

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

Completeness5/5

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

Given the tool's complexity, no output schema, and lack of annotations, this description is remarkably complete. It covers prerequisites, procedure, activation follow-up, optional parameters, field-list expectations, and common errors. The agent has everything needed to invoke the tool correctly and interpret the workflow around it.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaningful semantics beyond the schema, especially around the 'fields' parameter: its effect (restrict vs expose all), accepted formats for CompositeProvider fields, and the required content of a valid selection. It also reinforces the planning-enabled prerequisite for info_provider, which is only implied in the schema.

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

Purpose5/5

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

The description states a specific action ('Create a new Aggregation Level') on a clearly identified resource type (TLOGO ALVL) with a defined underlying object (planning-enabled InfoProvider). It clearly scopes this tool relative to related operations like activation and update, so an agent can distinguish it from siblings.

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

Usage Guidelines4/5

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

The description clearly identifies the intended creation scenario and prerequisites (planning-enabled aDSO or CompositeProvider), and it tells the agent to use bw_activate for activation. It does not explicitly name bw_update_aggregation_level as the alternative for existing levels, so it stops short of full when-to-use versus 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.

bw_create_composite_providerA

Create a CompositeProvider (HCPR). Without copy_from it creates a view node of the given type with the listed source providers attached — entity only, so give them their mappings afterwards with bw_update_composite_provider action "update_mapping". A Union node may be created empty; a JOIN node must be created WITH its sources, since a join node without inputs makes the server dump. With copy_from the server copies view node, inputs and mappings from an existing CompositeProvider. The result is inactive — activate it with bw_activate (object type hcpr).

ParametersJSON Schema
NameRequiredDescriptionDefault
labelYesDescription.
inputsNoSource InfoProviders to attach right away. Required in practice for a Join node.
packageNoDevelopment package (default "$TMP").
copy_fromNoCopy the structure of this existing CompositeProvider. view_type, inputs and stackable are then irrelevant — they come from the template.
info_areaYesInfoArea to create it in (e.g. "AREA_NAME").
stackableNoDefaults to false.
view_typeNoView node type. Defaults to "Join".
composite_provider_nameYesName for the new CompositeProvider (e.g. "HCPR_NAME").

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations available, the description fully carries the behavioral transparency burden. It disclose materials hidden side effects: a JOIN node without inputs crashes the server/creates a server dump, copied objects inherit mappings, and the created object is inactive and must be activated separately. These are not inferable from the name or schema and are highly decision-relevant.

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

Conciseness5/5

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

The description is dense and well-front-loaded, starting with the action, then covering the no-copy path, the special JOIN/Union behavior, the copy path, and the final activation step. Every sentence earns its keep and no line is filler or repeated schema content.

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

Completeness5/5

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

Given that there is no output schema and no annotations, the description explains everything needed to call this tool correctly and safely: the Join-with-inputs strict prohibition, copy_from templating behavior, required post-creation mapping step, and required activation step. The only remaining details come from the fully-documented schema.

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

Parameters4/5

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

Since schema_description_coverage is 100%, the baseline is 3. The description adds real semantic value on top by explaining that inputs are required in practice for JOIN, that copy_from overrides view_type/inputs/stackable, and that a fresh creation produces an entity-only node requiring a mapping update. It does not add depth on every parameter, but it covers the materially tricky ones.

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

Purpose5/5

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

The first sentence states the exact action and resource: 'Create a CompositeProvider (HCPR).' It then distinguishes fresh creation from copy-based creation and pairs the tool with the follow-up tools bw_update_composite_provider and bw_activate, clarifying the object lifecycle versus those siblings.

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

Usage Guidelines5/5

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

The description is explicit about when to use the copy_from path versus the fresh path, and about Union being allowed empty while JOIN must include inputs. It also directs the agent to the exact follow-up tools for mappings and activation, making the overall workflow unambiguous.

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

bw_create_datasourceA

Create a DataSource (RSDS) on top of a remote entity from the server's field proposal, leaving it inactive. The server derives the complete field/segment structure from the remote entity — no field, key, or partitioning editing is supported (v1). Local objects only (Development-Class $TMP); no transport handling. The HANA entity binds via the adapter externalObject attribute, not by name equality — use bw_list_remote_entities to find a valid hana_entity. After creation, activate separately with bw_activate (object_type "rsds", the same source_system, lock_handle "").

ParametersJSON Schema
NameRequiredDescriptionDefault
descriptionNoDataSource description (default: the hana_entity value).
hana_entityNoRemote entity technical name (technicalName from bw_list_remote_entities), bound as the adapter externalObject. Defaults to datasource_name as a convenience; set independently when they differ. Case-sensitive — passed to the source as-is.
source_systemYesLogical source system name (e.g. "LSYS_NAME"). A HANA/SDA/SDI source system.
datasource_nameYesTechnical name for the new DataSource (e.g. "DS_NAME").
application_componentYesApplication component (APCO) to file the DataSource under (e.g. "APCO_NAME").

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses several behavioral traits: the datasource is created inactive, the structure is derived from the remote entity, binding is via adapter externalObject (not name equality), and it only works with Development-Class $TMP (local objects). It also notes that field/key/partitioning editing is not supported. This provides a comprehensive behavioral picture.

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

Conciseness4/5

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

The description is well-structured with essential information front-loaded. It is slightly longer than minimal but every sentence adds value. No redundant statements. A minor improvement could be to condense some details, but overall it is effective.

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

Completeness5/5

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

Given the tool's complexity (5 parameters, no output schema, no annotations), the description is very complete. It explains creation behavior, constraints, prerequisites, and post-creation steps. Combined with the input schema, an agent has sufficient information to use the tool correctly.

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

Parameters4/5

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

Schema coverage is 100% (all 5 parameters described), so baseline is 3. The description adds meaningful context: it explains that hana_entity is bound as adapter externalObject, defaults to datasource_name, and is case-sensitive. It clarifies that description defaults to hana_entity value. It also specifies that source_system must be a HANA/SDA/SDI source system. These details go beyond the schema definitions.

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

Purpose5/5

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

The description explicitly states the tool creates a DataSource (RSDS) from a remote entity's field proposal, leaving it inactive. It distinguishes from sibling tools like bw_activate by specifying that activation is separate. The verb 'Create' and resource 'DataSource' are clear, and the description highlights unique constraints like 'no field, key, or partitioning editing' and 'local objects only'.

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

Usage Guidelines5/5

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

The description provides clear when-to-use guidance: to create a DataSource on top of a remote entity. It specifies prerequisites: use bw_list_remote_entities to find a valid hana_entity. It also gives explicit next steps: after creation, activate with bw_activate. This helps the agent understand the sequence and alternatives.

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

bw_create_decision_variantA

Create a DECISION process variant (a standalone TLOGO object) for use as a branch/decision step in a Process Chain, via the BW/4HANA Cockpit REST API. The variant holds two branches indexed by position: THEN/first (EVENTNO "01" by default, label "JA") and ELSE/second (EVENTNO "02", label "NEIN"). The formula is the branch condition (e.g. "GET_SEGMENT( ) = ' 3'"); it is evaluated for the THEN branch, the ELSE branch is its complement. The variant is created AND activated (activation is mandatory — an inactive variant is not selectable in the chain variant picker). After creation, reference the variant from a DECISION step in bw_create_process_chain / bw_update_process_chain (variant=), and branch its out-edges with sub_status "01"/"02". Package/transport: $TMP is fine for visibility and picker selection; pass a transportable package (NOT $TMP) only if you need to transport the variant. For a transportable package a transport_request is used (auto-selected when exactly one changeable request is available; pass it to disambiguate).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesDecision variant technical name, uppercase (e.g. "VARIANT_NAME"). This is the name a chain DECISION step references.
formulaYesBranch condition formula (BW decision formula syntax), e.g. "GET_SEGMENT( ) = ' 3'".
packageNoTarget package. Defaults to $TMP, which is fine for visibility/picker selection. Pass a transportable package only if the variant must be transportable.
else_labelNoLabel of the ELSE/second branch. Default "NEIN".
then_labelNoLabel of the THEN/first branch. Default "JA".
descriptionYesVariant description / label.
else_event_noNoEVENTNO of the ELSE branch. Default "02".
then_event_noNoEVENTNO of the THEN branch (referenced by chain branch edges via sub_status). Default "01".
transport_requestNoTransport request to record the new variant into. Used only for a transportable package (auto-selected when exactly one changeable request is available; pass to disambiguate).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the variant is created and activated (mandatory), explains the branch structure (THEN/ELSE with default labels and event numbers), and describes transport behavior. It does not mention potential side effects (e.g., overwriting) or error conditions, but the key behaviors are covered.

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

Conciseness4/5

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

The description is relatively long but well-structured with a clear first sentence stating purpose, followed by details on branches, activation, and transport. Every sentence adds value, though a slight trim could improve conciseness without losing essential information.

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

Completeness3/5

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

Given 9 parameters (3 required) and no output schema, the description is fairly complete but lacks information about the return value or possible errors. It also does not mention prerequisites or authentication requirements. This leaves gaps for an agent to fully understand the tool's behavior.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant context beyond the schema. It explains the purpose of each parameter: name is referenced by chains, formula is the branch condition, and defaults for optional parameters. It integrates parameter meaning with the tool's workflow (e.g., event numbers map to sub_status edges).

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

Purpose5/5

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

The description clearly states the tool creates a DECISION process variant as a standalone TLOGO object for use in a Process Chain. It specifies the action (create), the resource (decision variant), and the purpose (branch/decision step). It distinguishes from siblings by explaining how to use the variant afterward with specific chain creation tools.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool (to create a decision variant) and offers guidance on package/transport choices, including default $TMP vs. transportable packages. It references related tools (bw_create_process_chain, bw_update_process_chain) for subsequent steps. However, it does not explicitly state when NOT to use it, leaving some ambiguity.

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

bw_create_dtpA

Create a new DTP (Data Transfer Process) for an existing Transformation and activate it. The DTP name is server-generated. Optionally set a filter on one source field (Equal operator). After creation the DTP is activated automatically. IMPORTANT: Before calling this tool, always check the full transformation chain. Single-step chain (e.g. ADSO->ADSO): use trfn_name only. Two-step chain (e.g. ADSO->TRCS->ADSO): use trfn_name for the first transformation and trfn_name_2 for the second; source_name/source_type = the start object, target_name/target_type = the end object. Omitting trfn_name_2 in a two-step chain causes a persistent HTTP 500 error. Use bw_get_transformation or bw_xref to determine the chain before creating the DTP. DataSource source: set source_type "RSDS" and pass source_system (the DataSource source system). source_name is then the plain DataSource name; the tool builds the RSDS compound source key internally.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoDevelopment package (default "$TMP").
trfn_nameYesTechnical name of the existing Transformation (UUID-like key).
descriptionNoOptional DTP description text (default: empty).
source_nameYesSource object name (e.g. "SOURCE_NAME").
source_typeYesSource object type (e.g. "ADSO", "TRCS", "RSDS"). Use "RSDS" for a DataSource source — source_system is then required.
target_nameYesTarget object name (e.g. "TARGET_NAME").
target_typeYesTarget object type (e.g. "ADSO"). Use "IOBJ" to load into an InfoObject; the loaded sub-object (attributes / texts / hierarchies) is selected with target_object_subtype.
trfn_name_2NoOptional second transformation in a multi-step chain. Include when the DTP spans two transformations (e.g. ADSO→TRCS→ADSO).
filter_fieldNoFilter field to set. Use the exact field name from bw_get_dtp; a name that does not exist is rejected. Requires filter_value or filter_selections.
filter_valueNoOne or more values for an Equal selection, comma-separated (e.g. "VAL1,VAL2,VAL3"). REPLACE semantics: the list is the complete selection of that field, so pass all values in one call. An empty string selects the BW initial value (not the literal "#"). For ranges, patterns, exclusions or values containing a comma, use filter_selections. Look values up with bw_get_filter_values first — a wrong value activates cleanly and filters everything away.
source_systemNoSource system name of the DataSource. Required when source_type is "RSDS".
filter_excludingNoIf true, all values of filter_value are excluded instead of included. Default false. Applies to filter_value only; filter_selections carries a sign per entry.
filter_selectionsNoFull selection vocabulary for one filter field, equivalent to an ABAP RANGE table. REPLACE semantics like filter_value, and mutually exclusive with it. Each entry is validated against the operators the field itself publishes, so an unsupported operator is an error instead of a silently ignored setting.
target_object_subtypeNoInfoObject sub-object to load into. Only applies when target_type is "IOBJ". ATTR (default) = attributes/master data (IOBJA), TEXT = texts (IOBJT), HIER = hierarchies (IOBJH). Must match the sub-object the transformation chain targets.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden, and it does so well: it discloses automatic activation, server-generated naming, the persistent HTTP 500 when trfn_name_2 is omitted in two-step chains, and the internal RSDS compound-key construction. It could still be more transparent about failure modes, idempotency, or whether the operation is reversible, hence 4 rather than 5.

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

Conciseness4/5

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

The description is dense and front-loaded, opening with the core purpose and then proceeding to the most consequential scenario (multi-step chains) before the filter and DataSource notes. It is slightly longer than necessary and contains minor redundancy between 'activate it' and 'activated automatically', but every major point earns its place.

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

Completeness4/5

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

Given 14 parameters, no annotations, and no output schema, the description covers the biggest hazards and option semantics very well: chain topology, 500 error, DataSource compound keys, and filter replacement behavior. It does not describe return values or post-creation verification, which would be helpful but not required for correct invocation.

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

Parameters5/5

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

The schema already covers 100% of the parameters with solid descriptions, so the baseline is 3, but the description adds significant higher-level meaning: how trfn_name and trfn_name_2 are selected based on chain depth, how source_name/target_name relate to chain endpoints, the consequence of omitting trfn_name_2, and the special handling of DataSource keys. This is substantial added value beyond the schema.

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

Purpose5/5

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

The description opens with a specific and unambiguous action: 'Create a new DTP for an existing Transformation and activate it.' It clearly identifies the resource (DTP), the precedent requirement (existing Transformation), and the side effect (activation), which distinguishes it from run/update/get DTP siblings without needing to name them.

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

Usage Guidelines4/5

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

The description provides strong situational guidance: it tells the agent to check the transformation chain first, names the lookup tools (bw_get_transformation, bw_xref), and explicitly describes how a two-step chain changes parameter usage. It does not explicitly state when not to use the tool or name sibling alternatives like bw_update_dtp, so it stops short of a 5.

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

bw_create_infoareaA

Create a new InfoArea. The InfoArea is immediately active after creation — no activation step needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInfoArea name, max 12 characters (e.g. "NEXTJUICE").
packageNoDevelopment package. Default "$TMP".
descriptionNoDescription text for the InfoArea.
parent_info_areaNoParent InfoArea name. Omit to create at root level.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description provides one behavioral trait (immediately active, no activation step). However, it does not disclose other aspects like authentication requirements, side effects (e.g., overwriting existing InfoAreas), or what happens on duplicate names. Adequate but minimal.

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

Conciseness5/5

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

Two short sentences with no redundancy. The first sentence states the core purpose, the second adds an important behavioral fact. Every word earns its place.

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

Completeness4/5

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

Given the low complexity (4 parameters, no nested objects, no output schema) and full schema descriptions, the description is mostly complete. It explains the key activation behavior. It could be enhanced by specifying what the tool returns, but for a creation tool the current level is sufficient.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already defines parameter meanings. The description adds no additional parameter-level context beyond the schema. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Create') and the resource ('InfoArea'), and adds a specific behavioral detail (immediately active, no activation needed), which distinguishes it from other create tools like bw_create_adso or bw_create_dtp.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. There is no mention of prerequisites, when-not-to-use, or comparison with sibling tools. The description is purely declarative.

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

bw_create_infoobjectA

Create a new InfoObject — Characteristic (CHA) or Key Figure (KYF) — inactive. Sequence: lock → POST create → unlock. After creation call bw_activate with object_type "iobj" to activate.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInfoObject name, max 9 characters (e.g. "IOBJ_NAME").
lengthNoCHA only. Field length. Default 10.
packageNoDevelopment package. Default "$TMP".
data_typeNoCHA only. ABAP data type. Default "CHAR".
info_areaYesInfoArea to assign the InfoObject to (e.g. "NEXTJUICE").
transportNoTransport request number (e.g. DEVK900123). Only required if the BW system requires transport assignment.
fixed_unitNoFixed unit of measure for QUAN key figures (e.g. "KWH", "M3"). Required when object_specific_data_type is QUAN.
with_textsNoCHA only. Generate text tables. Default false.
descriptionYesShort and long description text.
fixed_currencyNoFixed currency for CURR key figures (e.g. "EUR"). Required when object_specific_data_type is CURR.
infoobject_typeNoInfoObject type: CHA (Characteristic) or KYF (Key Figure). Default "CHA".
aggregation_typeNoKYF only. Aggregation type. Default "SUM".
with_master_dataNoCHA only. Generate master data tables. Default false.
conversion_routineNoCHA only. Conversion routine (e.g. "ALPHA"). Default "ALPHA" for CHAR/NUMC, "" for others.
compound_infoobjectsNoTechnical names of the compound parent InfoObjects, in order. CHA only. Example: ["COMPND_IOBJ_NAME"].
referenced_infoobjectNoCHA only. Reference to an existing InfoObject (e.g. "IOBJ_NAME"). Omit withMasterData/withTexts — they are inherited. Default "".
object_specific_data_typeNoKYF only. Data type. Default "DEC". keyfigureType and semantics are derived automatically.

TDQS

A4.1/5.0
Behavior4/5

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

Discloses that the InfoObject is created inactive and that a lock/unlock sequence is used. Since no annotations are provided, the description carries the burden and adds useful behavioral context beyond the schema, such as requiring activation post-creation.

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

Conciseness5/5

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

Three sentences, front-loaded with purpose, then sequence and activation step. No fluff, every sentence adds value.

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

Completeness3/5

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

Given 17 parameters, no output schema, and no annotations, the description explains the core purpose and activation step but lacks details on return values, error handling, or when to use this over other creation tools (e.g., bw_create_adso). Adequate but leaves some gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add any parameter-level details beyond what the schema already provides; it focuses on the overall workflow.

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

Purpose5/5

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

Description clearly states 'Create a new InfoObject — Characteristic (CHA) or Key Figure (KYF) — inactive', specifying verb, resource, and types. It distinguishes from sibling tools like bw_activate and bw_update_infoobject.

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

Usage Guidelines4/5

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

Provides explicit instructions: 'After creation call bw_activate with object_type "iobj" to activate.' and describes the sequence 'lock → POST create → unlock'. Does not explicitly mention alternatives but context with siblings makes creation purpose clear.

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

bw_create_infosourceA

Create a new InfoSource (TRCS) shell. Optionally copy fields from an existing aDSO, CompositeProvider, DataSource, or InfoObject via copy_from_* parameters. Created inactive — call bw_activate with object_type "trcs" afterwards. To add fields after creation use bw_update_infosource.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInfoSource name (e.g. "INFOSOURCE_NAME").
packageNoDevelopment package (default "$TMP").
info_areaYesInfoArea to create the InfoSource in (e.g. "MCPBW").
descriptionYesDescription / label for the InfoSource.
copy_from_object_nameNoTechnical name of the source object to copy fields from. Required when copy_from_object_type is set.
copy_from_object_typeNoType of the source object: ADSO (aDSO), HCPR (CompositeProvider), RSDS (DataSource), IOBJ (InfoObject).
copy_from_source_systemNoSource system name (required when copy_from_object_type is RSDS, e.g. "PC_FILE").
copy_from_object_sub_typeNoSubType for IOBJ only: ATTR (Attribute), TEXT (Text), HIER (Hierarchy).

TDQS

A4/5.0
Behavior3/5

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

Discloses that the creation results in an inactive shell and that copying is optional. No annotations present, so description carries full burden; however, it does not cover permissions, error conditions, or side effects.

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

Conciseness5/5

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

Three sentences, front-loaded with the main action, no redundant information. Every sentence adds value.

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

Completeness4/5

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

Covers creation, optional copy, and subsequent steps (activate, update). No output schema, but the description explains the lifecycle well. Missing details about validation or defaults, but sufficient for a creation tool.

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

Parameters3/5

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

Schema has 100% coverage with descriptions for each parameter. The description adds context about the copy_from_* parameters and the inactive state, but does not significantly enhance individual parameter understanding beyond the schema.

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

Purpose5/5

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

The description clearly states it creates a new InfoSource shell with optional copying from specified object types. It distinguishes from sibling tools like bw_update_infosource and bw_activate by mentioning post-creation steps.

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

Usage Guidelines4/5

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

Provides explicit guidance: created inactive, requires bw_activate for activation, and bw_update_infosource for adding fields. Lacks explicit when-not-to-use or alternatives for other object types, but context is clear.

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

bw_create_process_chainA

Create a Process Chain (RSPC) via the BW/4HANA Cockpit REST API. Builds the chain model from a list of steps and edges, creates it with a trigger-only skeleton, then updates it with the full model in a single operation. Optionally activates after creation. The TRIGGER (Start) node is implicit (node index 0) and must not be listed in steps. DTP_LOAD and generic referenced steps use bIsReference=true; ADSOACT and ADSOREM use inline variants. Collectors (AND, OR, XOR) require no extra fields beyond their type. Edge status defaults: neutral for edges whose source is TRIGGER or a collector; positive for all others. For two-step DTP loading always use bw_create_dtp first; this tool builds the process chain around existing DTPs. Supported step types: DTP_LOAD (DTP load), ADSOACT (DSO data activation), ADSOREM (DSO request cleanup), ABAP (execute an ABAP program, optionally with an SE38 selection variant), CHAIN (start a local sub-chain, verified), DECISION (branch on a decision variant, requires the variant field), and collectors AND / OR / XOR; the start trigger is implicit. A generic referenced-step path (any process type string plus an object name, bIsReference=true) is available and verified for DTP_LOAD and CHAIN; for other types it may work but is untested. Other inline-configuration process types (for example OS command, attribute change run) are not supported in this version. Edges support on-success (positive) and unconditional (neutral) links; on-error (negative) links are accepted in the schema but not emitted by default. DECISION branch edges: set sub_status to the branch EVENTNO ("01"=THEN/JA, "02"=ELSE/NEIN) — such edges are always positive. Create the referenced decision variant first with bw_create_decision_variant. To start the chain on an event instead of immediately, pass trigger_event (start type "E").

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProcess chain technical name, uppercase, max 30 characters (e.g. "CHAIN_NAME").
edgesYesDirected edges connecting steps. Use the step id or the literal "TRIGGER" for the start node. Status defaults: "neutral" when the source is "TRIGGER" or a collector (AND/OR/XOR); "positive" otherwise. For a branch edge out of a DECISION node, set sub_status to the branch EVENTNO ("01"/"02"); such edges are forced to "positive".
stepsYesOrdered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), ABAP (requires program field, optional program_variant), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field).
activateNoIf true, activate the chain immediately after creation. Default false.
infoareaYesInfoArea to file the chain under (e.g. "AREA_NAME").
descriptionYesShort description / label for the process chain.
trigger_eventNoOptional event start-condition for the trigger (start type "E"). Omit for the default immediate start (start type "I").

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full behavioral burden. It fully discloses the skeleton-then-update mechanism, the implicit TRIGGER node, edge status defaults, the non-emission of negative edges by default, DECISION branch semantics, and which generic reference paths are verified versus untested.

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

Conciseness5/5

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

The description is dense but all content earns its place for such a complex, multi-typed tool. It opens with the core operation and then methodically covers step types, edges, defaults, and use-before prerequisites without filler or redundancy.

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

Completeness5/5

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

The description, along with the rich schema, gives an agent everything required to construct a valid call: how to compose steps and edges, which fields are needed per step type, default edge conditions, decision-variant prerequisites, and start/activation options. The absence of an output schema does not create a serious gap.

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

Parameters5/5

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

Schema coverage is 100%, but the description still adds substantial meaning: implicit TRIGGER index 0, per-step field requirements, edge status defaults, sub_status semantics, the bw_create_dtp relationship, and verified/untested step-type behavior. This goes well beyond the schema definitions.

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

Purpose5/5

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

The description states a specific action — creating a Process Chain (RSPC) — and explains the exact operation: build from steps and edges, create a trigger-only skeleton, then update with the full model. It clearly distinguishes this from sibling mutation/editing tools such as bw_update_process_chain and bw_add_process_chain_edge.

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

Usage Guidelines4/5

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

The description explicitly says to use bw_create_dtp first for two-step DTP loading and to use bw_create_decision_variant before referencing DECISION variants. It also marks verified vs untested paths and unsupported process types. However, it does not explicitly name sibling alternatives for modifying an already-created chain.

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

bw_create_queryA

Create a new BW Query (TLOGO ELEM) on an InfoProvider in package $TMP. Without copy_from the query is created empty and consistent (no rows, columns, or key figures yet). With copy_from the new query is created as a full copy of an existing query (layout, filter, variables, key figures); the description parameter still applies to the copy, and infoprovider may be omitted (it is derived from the source query). Support for transportable packages is not yet available; only package $TMP is supported.

ParametersJSON Schema
NameRequiredDescriptionDefault
copy_fromNoTechnical name of an existing query to copy (e.g. "QUERY_NAME"). The new query is created as a full copy of its content.
query_nameYesTechnical name of the query to create (e.g. "QUERY_NAME").
descriptionNoQuery description. Defaults to query_name if omitted.
infoproviderNoTechnical name of the InfoProvider the query is built on (e.g. "PROVIDER_NAME"). Required unless copy_from is given, in which case it defaults to the source query's provider.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description reveals key behaviors: empty query creation without copy_from, full copy behavior with copy_from, defaulting of infoprovider, and limitation to $TMP package. It does not mention potential side effects like locking or permissions, but overall is transparent.

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

Conciseness5/5

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

Two sentences efficiently convey all necessary information without redundancy. The main action is stated upfront, and each clause adds distinct value.

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

Completeness4/5

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

Covers the two main use cases (empty and copy) and the package limitation. Does not describe return values or error handling, but for a creation tool the output is implicit. Overall sufficiently complete for the complexity.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds value beyond the schema by explaining the semantics of copy_from (full copy), defaulting of description, and conditional requirement for infoprovider. This aids in correct invocation.

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

Purpose5/5

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

Clearly states the tool creates a new BW Query (TLOGO ELEM) on an InfoProvider in package $TMP, with specific details about the creation process including empty vs copy modes. This distinguishes it from sibling tools like bw_update_query_layout or bw_create_adso.

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

Usage Guidelines4/5

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

Provides clear guidance on when to use copy_from vs empty creation, and notes that only $TMP package is supported. However, it does not explicitly state when not to use this tool or compare directly to alternatives like bw_update_query.

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

bw_create_rkfA

Create one reusable Restricted Key Figure (RKF, TLOGO ELEM) on an InfoProvider. Built for mass creation: one RKF per call — the agent loops. The RKF is created from a base key figure plus one or more characteristic restrictions; each restriction value is validated against the InfoProvider and mapped to its internal key before the write. The RKF is written consistent (no separate activation step). All names must be technical names (e.g. "PROVIDER_NAME", "RKF_NAME", "KYF_NAME", "IOBJ_NAME").

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoDevelopment package. Defaults to the local package (e.g. "$TMP").
info_areaNoOptional InfoArea (technical name). When omitted, no InfoArea is set.
descriptionYesRKF description text.
restrictionsYesCharacteristic restrictions applied to the base key figure. At least one is required.
provider_nameYesTechnical name of the InfoProvider the RKF is built on (e.g. "PROVIDER_NAME").
technical_nameYesTechnical name of the RKF to create (e.g. "RKF_NAME"). Convention is typically PROVIDER_SUFFIX, but the name is free.
base_key_figureYesTechnical name of the base key figure to restrict (e.g. an amount key figure "KYF_NAME").
transport_requestNoTransport request number (e.g. DEVK900123). Only needed when package is transportable; omit for the local package.

TDQS

A4.4/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It details validation, internal key mapping, consistent write without activation, and naming conventions. Covers key behavioral aspects for a creation tool.

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

Conciseness5/5

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

Two sentences pack purpose, usage pattern, and detailed behavior without waste. Front-loaded with core purpose, then specific details. Highly efficient.

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

Completeness4/5

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

Lacks output schema and return value description, but thoroughly explains creation process, validation, and constraints. Adequate for an agent to understand tool behavior.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by explaining technical naming requirement, restrictions structure, and package/transport context, going beyond schema descriptions.

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

Purpose5/5

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

Description clearly states it creates a Restricted Key Figure (RKF) on an InfoProvider. Distinguishes from siblings like bw_get_rkf and mentions it's for mass creation with looping.

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

Usage Guidelines4/5

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

Explicitly says 'Built for mass creation: one RKF per call — the agent loops,' indicating when to use and pattern. No explicit when-not or alternatives, but context is clear.

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

bw_create_transformationA

Create a new Transformation between two BW objects (aDSO, DataSource, InfoSource, etc.). The Transformation name is server-generated (32-char UUID-like key). Created inactive — call bw_activate with object_type "trfn" afterwards.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoDevelopment package. Default "$TMP".
source_systemNoSource system name. Required when source_object_type is RSDS (DataSource).
source_object_nameYesTechnical name of the source object.
source_object_typeYesSource object type. Valid values: HCPR (CompositeProvider), ADSO (aDSO), RSDS (DataSource — requires source_system), HAAP (HANA Analysis Process), IOBJ (InfoObject), TRCS (InfoSource), QVIW (Query).
target_object_nameYesTechnical name of the target object.
target_object_typeYesTarget object type. Valid values: ADSO (aDSO), IOBJ (InfoObject), TRCS (InfoSource), DEST (Open Hub Destination).
source_object_subtypeNoInfoObject sub-type of the source. Only applies when source_object_type is IOBJ. Valid values: TEXT (text table), ATTR (attributes / master data), HIER (hierarchy).
target_object_subtypeNoInfoObject sub-type of the target. Only applies when target_object_type is IOBJ. Valid values: TEXT (text table), ATTR (attributes / master data), HIER (hierarchy).
copy_from_transformationNoTechnical name of an existing Transformation to copy rules from.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses two key behaviors: server-generated name (32-char UUID-like) and inactive creation. It does not cover permissions, failure modes, or side effects, so it's adequate but not comprehensive.

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

Conciseness5/5

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

Two sentences containing essential information: purpose, name behavior, and post-creation action. No redundant words, highly efficient.

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

Completeness4/5

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

Given no output schema, the description is complete enough for the tool's complexity. It explains the result (inactive transformation), references the needed sibling tool (bw_activate), and covers parameters adequately. Could mention the return value or confirmation, but not critical.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by noting that source_system is required for RSDS and that copy_from_transformation exists. It does not elaborate on parameter formatting beyond the schema, but the added context justifies the baseline.

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

Purpose5/5

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

The description uses specific verbs and resources: 'Create a new Transformation between two BW objects'. It lists object types (aDSO, DataSource, etc.), distinguishes from sibling tools like bw_delete or bw_activate by stating it creates and is followed by activation.

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

Usage Guidelines4/5

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

Explicitly states the created transformation is inactive and instructs to call bw_activate with object_type 'trfn'. This provides clear post-creation guidance. However, it does not mention when not to use this tool or list alternatives for other creation tasks.

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

bw_create_transport_taskA

Add a task (sub-request) for a user to an existing workbench transport request. Single ADT call, no lock or activation. The parent request must be modifiable. Returns the created task number.

ParametersJSON Schema
NameRequiredDescriptionDefault
userYesTarget user the task is created for (task owner), e.g. "USERNAME".
transport_requestYesParent workbench transport request number (e.g. DEVK900123).

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the call is a single ADT call, no lock or activation, and returns the created task number. It does not detail side effects or error conditions, but for a creation tool, it provides reasonable behavioral insight.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the action, and contains no unnecessary words. Every sentence adds value.

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

Completeness5/5

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

Given no output schema, the description mentions the return value ('Returns the created task number'). It covers prerequisites (modifiable parent) and the call's nature. For a simple two-parameter creation tool, it is complete.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The tool description adds minimal extra meaning beyond examples; it mostly restates the parameter purposes. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Add a task'), the resource ('sub-request for a user to an existing workbench transport request'), and context. It distinguishes from sibling tools, none of which create transport tasks.

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

Usage Guidelines4/5

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

The description provides guidance on when it can be used ('parent request must be modifiable') and notes the call is single and has no lock or activation. However, it does not explicitly compare to alternatives or state when not to use it.

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

bw_create_variableA

Create a reusable BW Variable on a characteristic, for use as a filter parameter in queries. The variable is created active and consistent. Covers processing types UserEntry (manual entry, the default), CustomerExit, Authorization and the current-member flavour of ReplacementPath, and stands for a characteristic value, a hierarchy or hierarchy nodes. Text and formula variables are not supported. To keep a variable out of the user's variable screen, set ready_for_input false.

ParametersJSON Schema
NameRequiredDescriptionDefault
packageNoAlias for development_class (for consistency with other tools).
reusableNoWhether the variable can be reused in multiple queries. Defaults to true.
iobj_nameYesTechnical name of the InfoObject (characteristic) this variable is based on (e.g. "0CALMONTH"). Must exist in the system.
transportNoTransport request number (e.g. "DEVK900123"). Only needed when the target package is transportable.
input_typeNoWhether a value is required: Optional (default), MandatoryWithInitial (entry required, initial value allowed) or MandatoryWithoutInitial (entry required, initial value rejected).
representsNoSelection type. Interval is a from/to range, SelectionOption allows the full set of comparison operators. Defaults to Interval.
descriptionYesVariable description (displayed in query parameter screens).
variable_nameYesTechnical name of the variable to create (e.g. "VAR_NAME").
variable_typeNoWhat the variable stands for: a characteristic value (default), a whole hierarchy, or hierarchy nodes. Hierarchy variables still reference a characteristic via iobj_name.
master_languageNoLanguage code for the descriptions (e.g. "EN", "DE"). Defaults to the BW_LANGUAGE of the connection, otherwise "EN".
processing_typeNoHow the variable is filled: UserEntry (manual entry by the user, the default), CustomerExit (filled by the exit), Authorization, or ReplacementPath. Replacement path is limited to the current-member variant, which needs no donor object; replacement from a query result is not supported.
ready_for_inputNoWhether the variable is shown on the variable screen for user input. Defaults to true. Set false for a variable that only the customer exit fills.
development_classNoPackage name (e.g. "ZPKG"). Defaults to $TMP if omitted.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden. It states observable behaviors: 'The variable is created active and consistent', and explains that setting ready_for_input false keeps a variable out of the variable screen. It also states scope limits on replacement path and unsupported variable types. Missing detail such as overwrite behavior or permissions is a minor gap.

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

Conciseness5/5

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

Four dense sentences with no filler. The core purpose and resource are front-loaded, then the caveats and exclusions are listed efficiently. Every sentence carries information necessary for invocation.

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

Completeness4/5

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

For a 13-parameter tool with no output schema and no annotations, the descption provides enough context to understand supported types, representation, and key value (ready_for_input). The schema already covers all parameters, so the description does not need to restate them. It only omits details like whether an existing variable is overwritten, but that is a reasonable and not total gap.

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

Parameters4/5

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

Schema coverage is complete at 100%, so the baseline is 3.0. The description adds value beyond the schema by clarifying the enum semantics, such as what 'UserEntry' means, the current-member-only restriction on ReplacementPath, and what 'ready_for_input' controls. This helps the agent choose valid parameter combinations.

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

Purpose5/5

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

States a specific verb and resource: 'Create a reusable BW Variable on a characteristic' and connects it to a concrete purpose ('use as a filter parameter in queries'). This distinguishes it from sibling create tools like bw_create_infoobject or bw_create_adso without needing to inspect the schema.

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

Usage Guidelines4/5

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

The description lists exactly which processing types are covered and explicitly excludes unsupported types: 'Text and formula variables are not supported' and 'replacement path is limited to the current-member variant'. While it does not name an alternative tool, there is enough context to decide whether this tool applies, and clear when-not-to-use signals are present.

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

bw_deleteA

Delete a BW object permanently (aDSO, InfoObject, Transformation, DTP, Query, etc.). Sequence: lock (with /m) → DELETE → unlock. No activation needed — deletion is immediate. Queries (object_type "query", alias "elem") use a dedicated delete sequence; deleting a query does NOT delete the reusable components (variables, CKFs, RKFs) it references — only the query itself. Dependency note: delete aDSOs before their InfoObjects, not the other way around.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesTechnical object name (e.g. "OBJECT_NAME").
object_typeYesBW object type: adso, iobj, trfn, dtpa, query (alias elem), etc.

TDQS

A4.7/5.0
Behavior5/5

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

Discloses permanent, immediate deletion, no activation needed, query deletion scoping, and dependency constraints. With no annotations, description fully carries the burden of behavioral disclosure.

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

Conciseness5/5

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

Five sentences, front-loaded with main action, then sequence and clarifications. Every sentence adds distinct information; no redundancy or fluff.

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

Completeness5/5

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

Covers all essential aspects: deletion semantics, sequence, special cases (queries), and dependencies. No output schema needed; description is complete for this simple tool.

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

Parameters4/5

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

Schema already describes both parameters (100% coverage). Description adds value by elaborating object types, query alias, and contextual usage notes (dependency order), but does not introduce new parameter syntax.

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

Purpose5/5

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

Clear verb ('Delete') and resource ('BW object') with explicit examples (aDSO, InfoObject, etc.), distinguishing from sibling delete tools like bw_delete_transformation_routine.

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

Usage Guidelines4/5

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

Provides explicit sequence (lock -> delete -> unlock), notes immediacy, and clarifies query deletion behavior and dependency order (aDSO before InfoObject). Lacks explicit exclusion of alternative tools but sufficiently covers when to use.

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

bw_delete_transformation_routineA

Remove a Start, End, or Expert routine from a Transformation. Removes the matching routine rule from the transformation's global routine group. If no rules remain, removes the entire group. Returns lock_handle for bw_activate.

ParametersJSON Schema
NameRequiredDescriptionDefault
routine_typeYesRoutine to remove: "start", "end", or "expert".
transformation_nameYesTransformation name (UUID-like key).

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses side effects (removing entire group if no rules remain) and return value ('lock_handle for bw_activate'), providing useful behavioral context beyond a simple delete statement.

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

Conciseness5/5

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

Three concise sentences: first for action, second for effect, third for return value. No unnecessary words, front-loaded with the core purpose.

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

Completeness4/5

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

For a simple delete tool with 2 parameters and no output schema, the description covers purpose, side effects, and return value. However, it lacks preconditions (e.g., whether the transformation must be locked beforehand), leaving minor gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description does not add new meaning beyond what the schema provides (e.g., 'routine_type' enum values). Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Remove', the resource 'Start, End, or Expert routine from a Transformation', and specifies the types. It distinguishes from sibling tools like bw_set_transformation_routine by focusing on deletion.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives, prerequisites, or order of operations. The description only states what it does, leaving the agent to infer usage context.

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

bw_get_adsoA

Read an aDSO (Advanced DataStore Object) structure — fields, settings, version.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): compact human-readable summary. "raw": raw XML from BW.
adso_nameYesaDSO name (e.g. "ADSO_NAME").

TDQS

A3.6/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. Only states 'Read' (safe), but omits error handling (e.g., missing aDSO), return format details beyond the three listed items, and any authentication or permissions requirements.

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

Conciseness5/5

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

Single sentence front-loaded with action verb, using dash-separated list for clarity. No redundant or irrelevant content. Efficient for the tool's simplicity.

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

Completeness4/5

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

For a simple read tool with two parameters and no output schema, the description covers the core output (fields, settings, version). Lacks details on edge cases (e.g., non-existent aDSO) and permissions, but suffices for typical use.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are clear. The tool description adds no additional semantic value beyond the schema, including no mention of parameters. Baseline of 3 is appropriate.

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

Purpose5/5

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

Description clearly states the tool reads an aDSO structure, listing specific components (fields, settings, version). Distinguishes well from sibling creation/update tools (e.g., bw_create_adso, bw_update_adso) and other get tools targeting different objects.

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

Usage Guidelines3/5

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

No explicit when-to-use or when-not-to-use guidance. The verb 'Read' and context of sibling tools imply read-only use, but the description does not explicitly direct the agent away from alternatives or mention prerequisites.

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

bw_get_aggregation_levelA

Read an Aggregation Level (TLOGO ALVL) definition — the planning-enabled view on top of an InfoProvider (aDSO or CompositeProvider) used for Integrated Planning / embedded BPC. Returns name, description, status, InfoArea, package, the underlying InfoProvider, and the full element list split into characteristics and key figures. Characteristics include type, length, conversion routine, base InfoObject, compounding, and dimension group. Key figures additionally include aggregation behavior, semantics (AMO/QUA/NUM), and the unit/currency reference (unit characteristic, fixed unit, or fixed currency).

ParametersJSON Schema
NameRequiredDescriptionDefault
aggregation_level_nameYesTechnical name of the Aggregation Level (e.g. "OBJECT_NAME").

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It transparently details the returned fields, including nested structures, without contradictory claims.

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

Conciseness4/5

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

The description is structured with front-loaded purpose and detailed breakdown of return fields. Slightly lengthy but necessary for completeness.

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

Completeness5/5

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

For a read tool with one parameter and no output schema, the description fully compensates by listing all returned elements, making it self-sufficient.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter. The description adds an example but no extra semantics beyond what the schema provides.

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

Purpose5/5

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

The description clearly states it reads an Aggregation Level definition and explains its role. It distinguishes from sibling getters by focusing on this specific object type.

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

Usage Guidelines3/5

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

The description implies usage context for retrieving ALVL definitions but provides no explicit guidance on when to use alternatives or when not to use it.

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

bw_get_ckfA

Read a global Calculated Key Figure (CKF) defined at CompositeProvider level. Returns technical name, description, formula (recursively resolved), metadata, and the full dependency graph of referenced CKF/RKF sub-components.

ParametersJSON Schema
NameRequiredDescriptionDefault
component_nameYesTechnical name of the CKF (e.g. "CKF_NAME").

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations provided, the description carries full responsibility. It clearly indicates a read operation ('Read') and details what is returned, including recursive resolution and dependency graphs. No behavioral contradictions are present.

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

Conciseness5/5

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

Two sentences with no wasted words. The first sentence front-loads the action and resource, making the purpose immediately clear.

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

Completeness4/5

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

The description covers what the tool returns without an output schema, listing key components. While it could specify the exact output format, it provides sufficient context for an agent to understand the tool's capability.

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

Parameters4/5

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

Schema coverage is 100% (one parameter with full description). The description adds context by specifying the CKF is at the CompositeProvider level, enriching the parameter's meaning beyond the schema's technical name hint.

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

Purpose5/5

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

The description clearly states it reads a global CKF at CompositeProvider level and specifies the exact return data (technical name, description, formula, metadata, dependency graph). This differentiates it from sibling tools like bw_get_rkf which deals with RKFs.

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

Usage Guidelines4/5

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

While it does not explicitly state when not to use it or name alternatives, the description and tool name make it clear that it is intended for CKF retrieval. The context is implied but could be more explicit about exclusions.

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

bw_get_composite_providerA

Read a CompositeProvider (HCPR) structure — general info, view node type (Union/Join), source providers (inputs) with mapping counts, fields with dimension classification, join condition, and temporal join details. Returns the inactive version.

ParametersJSON Schema
NameRequiredDescriptionDefault
composite_provider_nameYesTechnical name of the CompositeProvider (e.g. "HCPR_NAME").

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries full behavioral burden. It states 'Read' (implies no modification), lists return content in detail, and notes 'Returns the inactive version'. It does not explicitly assert idempotency or safety, 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.

Conciseness4/5

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

The description is a single sentence that front-loads the action and then lists what is returned. It is informative without unnecessary fluff, though the list is somewhat lengthy.

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

Completeness5/5

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

With no output schema, the description fully explains what the tool returns (general info, view node type, source providers, fields, join conditions, temporal details). The single parameter is clearly documented in schema, and the description specifies the version ('inactive'). No gaps remain.

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

Parameters3/5

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

Schema description coverage is 100% (parameter described as technical name). The tool description does not add additional meaning beyond what the schema already provides; baseline 3 applies.

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

Purpose5/5

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

The description uses a specific verb ('Read') and resource ('CompositeProvider (HCPR) structure'), and lists detailed contents (view node type, source providers, fields, etc.). It clearly distinguishes from sibling get_* tools that target different BW objects.

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

Usage Guidelines3/5

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

Usage is implied by the tool name and description (use when you need CompositeProvider details), but there is no explicit guidance on when not to use it or comparison to alternatives like other get_* tools.

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

bw_get_dataflowA

Trace the data flow graph for a BW object. Returns a tree (≤ 30 nodes) or flat table (> 30 nodes) showing all connected objects (ADSO, RSDS, TRFN, DTPA, TRCS, IOBJ, HCPR, LSYS, ELEM) with their type, name, description, and status. BW direction convention: "upwards" traverses towards BW target objects (ADSO, TRFN, TRCS, IOBJ); "downwards" traverses towards source systems (LSYS, RSDS). Use this to understand the full lineage of an object without navigating each connection manually. IMPORTANT: Always print the complete tool result verbatim as a fenced code block in your chat response — never omit or summarize it.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): tree or flat table. "raw": raw XML from BW.
levelsNoNumber of levels to expand in each direction. -1 = all levels (default).
directionNoDirection to traverse: "upwards" (towards BW target objects: ADSO, TRFN, TRCS, IOBJ), "downwards" (towards source systems: LSYS, RSDS), or "both". Default "both".
object_nameYesTechnical name of the BW object (e.g. "ADSO_NAME", "DS_NAME").
object_typeYesBW object type: ADSO, RSDS, HCPR, TRFN, DTPA, IOBJ, TRCS, LSYS.
source_systemNoRequired when object_type is RSDS. Logical source system name (e.g. "LSYS_NAME").

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses output format thresholds (tree vs flat table) and direction conventions. It does not mention nondestructive nature or permissions, but the behavioral details are adequate for correct usage.

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

Conciseness4/5

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

The description is concise at about 5 sentences, with the main action front-loaded. The important instruction about printing the result adds length but is valuable. Some redundancy in listing object types could be trimmed, but overall it's well-structured.

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

Completeness4/5

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

Given the 6 parameters (2 required), no output schema, and no annotations, the description covers essential behavioral aspects: output format, direction, and object types. It could mention read-only nature, but it provides enough for an agent to invoke correctly.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds some value by explaining the direction convention more thoroughly and noting defaults. However, most parameters are well-described in the schema, and the description doesn't significantly augment them.

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

Purpose5/5

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

The description clearly states the tool traces the data flow graph for a BW object, specifies the output format (tree or flat table) based on node count, lists included object types, and explains direction convention. It distinguishes from sibling tools which are for creation, activation, deletion, etc.

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

Usage Guidelines4/5

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

The description explicitly states the use case: 'Use this to understand the full lineage of an object without navigating each connection manually.' It also provides an important instruction to always print the complete result. However, it does not mention when not to use it or compare to alternatives like bw_xref.

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

bw_get_datasourceA

Read the full structure of a DataSource (RSDS) — metadata, all fields with types and properties, and adapter configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): compact human-readable summary. "raw": raw XML from BW.
source_systemYesLogical source system name (e.g. "LSYS_NAME").
datasource_nameYesTechnical name of the DataSource (e.g. "DS_NAME").

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description implies a read-only operation without side effects. However, it does not disclose error handling, return behavior for invalid inputs, or performance implications. The description is adequate for a standard 'get' operation but lacks depth.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the key purpose. Every part is meaningful, no redundancy, and it efficiently conveys the tool's function.

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

Completeness4/5

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

For a read tool with 3 parameters and no output schema, the description adequately outlines what is returned (metadata, fields, adapter config). It could mention output format details, but the schema covers the format parameter. Overall complete given the tool's simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already explains all parameters. The description adds no additional semantics beyond what the schema provides. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action (Read) and the resource (DataSource/RSDS), specifying it returns the full structure including metadata, fields, and adapter configuration. This distinguishes it from sibling tools like bw_list_datasources (listing) and bw_get_infosource (different object).

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

Usage Guidelines2/5

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

The description lacks any guidance on when to use this tool versus alternatives such as bw_get_infosource or bw_get_adso. No prerequisites, exclusions, or context are provided, leaving the agent to infer usage solely from the tool name and description.

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

bw_get_dtpA

Read a DTP (Data Transfer Process) definition — source, target, transformation, extraction settings, and filter fields (selections and routines). Use bw_xref on an aDSO to find the DTP name first. To find only the process chain a DTP belongs to, use bw_xref with object_type=DTPA instead — it is faster and avoids loading the full DTP definition.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtp_nameYesDTP name (e.g. "DTP_...").

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. Clearly indicates a read operation ('Read'), but does not explicitly state non-destructiveness or permission requirements. Notes that loading the full definition is heavier than alternatives, which adds useful 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.

Conciseness4/5

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

Two sentences with clear front-loading. First sentence conveys purpose and scope concisely. Second sentence provides usage guidance. Very efficient, though the second sentence could be slightly more integrated.

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

Completeness4/5

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

With one parameter and no output schema, the description adequately explains what will be returned (source, target, transformation, etc.) and how to use the tool in context. No missing critical information.

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

Parameters3/5

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

Schema coverage is 100%: one required parameter dtp_name with schema description. The description adds an example format ('DTP_...') but no additional semantic detail beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Read') and clearly identifies the resource ('DTP definition') with a detailed list of included components. It distinguishes itself from sibling tools like bw_get_dtps and bw_xref by specifying the scope.

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

Usage Guidelines5/5

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

Explicitly states prerequisite: use bw_xref on an aDSO to find the DTP name first. Provides alternative: for process chain membership only, use bw_xref with object_type=DTPA, which is faster.

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

bw_get_dtpsA

List DTPs (Data Transfer Processes) that depend on a BW object. Uses the xref endpoint filtered to DTPA object type. Use object_type=TRFN and the transformation name to find DTPs after activating a transformation.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesObject name to find dependent DTPs for.
object_typeYesObject type of the referenced object: ADSO, TRFN, IOBJ, etc.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description bears full burden. It discloses that the tool uses the 'xref endpoint filtered to DTPA object type,' which is a behavioral detail. However, it does not mention permissions, side effects, or error handling. As a read-only operation, the lack of destructive hints is acceptable but could be clearer.

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

Conciseness5/5

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

Two sentences, front-loaded with the primary purpose, followed by a technical detail. No wasted words. Efficient and clear.

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

Completeness3/5

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

No output schema exists, and the description does not specify what the tool returns (e.g., list of DTP names/IDs). For a list tool, omitting the return format is a gap. However, the description is adequate for basic use. Not fully complete.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions for both parameters. The description adds a usage hint for object_type=TRFN but does not enhance the semantic meaning beyond what the schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'DTPs (Data Transfer Processes)' and specifies the context 'that depend on a BW object.' It distinguishes from siblings like bw_get_dtp (single DTP) by focusing on dependents.

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

Usage Guidelines4/5

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

Provides a concrete usage example: 'Use object_type=TRFN and the transformation name to find DTPs after activating a transformation.' This gives clear guidance for a common use case. However, it does not explicitly state when not to use or list alternatives.

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

bw_get_filter_valuesA

Look up valid characteristic values for use in query filters or variable inputs. Returns CHAVL_INT (internal key) — always use this value when setting filter selectValues or variable inputs; CHAVL_EXT and CHAVL_INT often differ for date-type characteristics. Supports wildcard search: use "" to return all values, "2022" for prefix match. Optionally scope results to a specific InfoProvider (recommended when values differ by provider).

ParametersJSON Schema
NameRequiredDescriptionDefault
max_rowsNoMaximum number of values to return (default 201).
info_providerNoOptional. Scopes the value list to a specific InfoProvider (ADSO, HCPR, etc.). Omit to read from master data directly.
search_stringYesWildcard search pattern. "*" returns all values up to max_rows. Prefix with text to filter (e.g. "2022*").
characteristic_nameYesInfoObject technical name to get values for (e.g. "IOBJ_NAME").

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It explains the return value (CHAVL_INT), notes differences between CHAVL_EXT and CHAVL_INT for date types, and describes wildcard behavior. It does not mention if it's read-only, but 'look up' implies a safe operation. Overall, good transparency.

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

Conciseness5/5

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

All four sentences are concise and informative. The purpose is front-loaded, and each sentence adds new, essential information without redundancy. No unnecessary words.

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

Completeness4/5

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

Given 4 parameters with complete schema descriptions, the description adds context on usage and return values. It could mention default for max_rows (201) but that is in schema. No output schema, but return value semantics are covered. Adequate for the tool's complexity.

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

Parameters5/5

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

Schema coverage is 100%, so baseline is 3. The description adds significant value: explains search_string wildcard usage with examples, recommends info_provider scoping, and clarifies that returned value is CHAVL_INT (internal key). This goes well beyond the schema's descriptions.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Look up valid characteristic values for use in query filters or variable inputs.' It specifies the resource (characteristic values) and action (look up), and mentions internal key usage. However, it does not explicitly differentiate from sibling tools like bw_search, but the purpose is distinct enough.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use the tool ('for use in query filters or variable inputs') and how to use it (wildcard search, scoping with info_provider). It lacks explicit when-not-to-use or alternative tools, 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.

bw_get_infoareaA

Read an InfoArea definition — name, label, parent area, object status.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInfoArea name (e.g. "NEXTJUICE").

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description must convey behavioral traits. It states 'Read', indicating a non-destructive operation. The description is clear about what it retrieves but does not disclose potential side effects, authorization requirements, or performance characteristics. However, for a simple read tool, this is adequate.

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

Conciseness5/5

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

The description is a single sentence that efficiently communicates the tool's action and output. It is front-loaded with the verb and resource, and every word adds value. No unnecessary information.

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

Completeness4/5

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

The tool has one required parameter and no output schema. The description compensates by listing the four fields returned (name, label, parent area, object status), which gives a clear idea of the response structure. This is sufficient for a simple read operation, though it does not specify data types or formats.

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

Parameters3/5

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

The input schema already provides a clear description of the single parameter (name with an example). Schema coverage is 100%. The description does not add further parameter semantics beyond stating the tool's output. Thus, it meets the baseline but does not enhance understanding.

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

Purpose5/5

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

The description uses the verb 'Read' and explicitly mentions the resource 'InfoArea definition', listing the specific fields returned (name, label, parent area, object status). This clearly identifies the tool's purpose and distinguishes it from sibling tools that operate on different SAP BW objects.

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

Usage Guidelines3/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. The purpose is implied (retrieve InfoArea details), but there is no mention of prerequisites, limitations, or when not to use it. Given the presence of many other 'get' tools for different objects, some differentiation would help.

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

bw_get_infoobjectA

Read an InfoObject definition (must already exist in the system). Returns the full XML including data type, length, conversion routine, and descriptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
infoobject_nameYesInfoObject name (e.g. "IOBJ_NAME").

TDQS

A4/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It clearly indicates a read operation with no side effects, lists return fields (data type, length, etc.), and is consistent with the tool name.

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

Conciseness5/5

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

The description is a single sentence of 16 words, front-loaded with the action and resource. Every word adds value, making it highly efficient.

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

Completeness4/5

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

For a simple read tool with one parameter and no output schema, the description covers the core functionality and return content. It could optionally mention authorization or error conditions, but the current level is adequate.

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

Parameters3/5

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

Schema coverage is 100% with a clear description. The tool description adds the constraint that the object must exist, which provides useful context beyond the schema, but does not add further detail about the parameter format or values.

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

Purpose5/5

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

The description clearly states the action ('Read'), the resource ('InfoObject definition'), and a constraint ('must already exist in the system'). It also specifies the return content, distinguishing it from creation tools like bw_create_infoobject.

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

Usage Guidelines3/5

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

The description implies usage for reading existing objects but does not provide explicit guidance on when to use this tool versus alternatives (e.g., bw_update_infoobject) or when not to use it.

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

bw_get_infosourceA

Read an InfoSource (TRCS) structure — fields, key fields, label, InfoArea, version status.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInfoSource name (e.g. "INFOSOURCE_NAME").

TDQS

A3.6/5.0
Behavior3/5

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

The description states 'Read,' implying a non-destructive, idempotent operation. No annotations are provided, so the description carries the burden of behavioral disclosure. It does not mention side effects, authentication requirements, or rate limits, but for a simple read operation, the transparency is adequate.

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

Conciseness5/5

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

The description is a single, well-structured sentence that immediately states the action and lists the key components. There is no extraneous information, and it is front-loaded with the purpose.

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

Completeness4/5

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

For a simple read tool with one parameter and no output schema, the description covers the essential elements: the resource type and what the structure contains. It could be improved by noting the return format or whether the entire structure is returned, but it is largely complete.

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

Parameters3/5

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

The input schema has 100% coverage, with the single parameter 'name' already described as 'InfoSource name'. The description adds no additional semantics beyond the schema, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly specifies the verb 'Read' and resource 'InfoSource (TRCS) structure', listing specific components like fields, key fields, label, InfoArea, version status. This distinguishes it from sibling tools such as bw_get_adso or bw_get_infoobject, which read different BW objects.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like bw_get_adso or bw_get_infoobject. Given the large number of sibling tools, providing context on when to choose this tool would be beneficial for agent decision-making.

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

bw_get_open_hubA

Read an Open Hub Destination (TLOGO DEST) definition — destination type, source, DB table, InfoArea, package, status, the complete output field list with type/length, InfoObject binding, conversion routine, compounding, and key flag, plus file properties when the destination type is FILE.

ParametersJSON Schema
NameRequiredDescriptionDefault
open_hub_nameYesTechnical name of the Open Hub Destination (e.g. "OBJECT_NAME").

TDQS

A4/5.0
Behavior4/5

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

The description clearly indicates that this is a read operation ('Read') and details the extensive output content. It discloses that only the definition is retrieved and includes specific behavior for FILE destination types. However, without any annotations, it does not explicitly state that no modifications are made or mention required permissions. It effectively conveys the scope and nature of the operation.

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

Conciseness4/5

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

The description is a single, well-structured sentence that begins with the core purpose ('Read an Open Hub Destination...'). It efficiently lists the key aspects of the definition without unnecessary words. While it is somewhat dense, it remains clear and front-loads the essential information.

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

Completeness5/5

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

Given the absence of an output schema, the description thoroughly enumerates the return values, including destination type, source, DB table, InfoArea, package, status, output field list (with type/length, InfoObject binding, conversion routine, compounding, key flag), and file properties conditionally for FILE type. This provides complete contextual information for an agent to understand the output without needing additional documentation.

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

Parameters3/5

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

Schema description coverage is 100%, with one parameter 'open_hub_name' described in the schema as 'Technical name of the Open Hub Destination (e.g. "OBJECT_NAME").' The tool description does not add further semantics about the parameter beyond what the schema already provides. The baseline of 3 is appropriate since the schema covers the parameter adequately.

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

Purpose5/5

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

The description begins with 'Read an Open Hub Destination (TLOGO DEST) definition', clearly stating the action (read) and the specific resource (Open Hub Destination). It lists detailed components such as destination type, source, DB table, InfoArea, package, status, output field list, InfoObject binding, conversion routine, compounding, key flag, and file properties for FILE type. This specificity distinguishes it from sibling get_* tools that target other BW objects (e.g., bw_get_adso, bw_get_infoobject).

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives, nor does it provide any exclusion criteria or context for selection. It implicitly suggests use when reading an Open Hub Destination definition, but lacks explicit guidance such as 'Use this when you need the full OHD definition with field details'. No mention of when not to use or alternative tools is made.

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

bw_get_planning_functionA

Read a Planning Function (TLOGO PLSE) definition — a planning operation (formula/FOX, copy, delete, repost, distribution, currency translation, custom exit, …) tied to an aggregation level for Integrated Planning / embedded BPC. Returns name, description, function type (planningServiceType), aggregation level, documentation, status, InfoArea, package, the characteristic usage list (role of each characteristic in the function), and the full parameter tree with nested structure and values. For FORMULA functions the FOX code surfaces as the value of the FLINE parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
planning_function_nameYesTechnical name of the Planning Function (e.g. "OBJECT_NAME").

TDQS

A3.9/5.0
Behavior3/5

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

The description states 'Read' which implies a read-only operation, but it does not explicitly declare this or mention any side effects, permissions, or restrictions. Since no annotations are provided, the description could be more explicit about the safe, non-destructive nature of the tool.

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

Conciseness4/5

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

The description is concise and informative, covering the purpose, return fields, and example types. It could be slightly more structured (e.g., breaking out the returned items), but it is efficient and free of extraneous information.

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

Completeness4/5

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

Given the lack of an output schema, the description lists the key returned elements (name, description, function type, aggregation level, etc.) and includes specific details like FOX code for formula functions. It adequately covers the tool's capabilities for a read operation, though it could mention prerequisites (e.g., existence of the planning function).

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

Parameters3/5

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

Schema coverage is 100% with a single parameter that has a clear description. The description adds context about what the tool retrieves (e.g., function types, FOX code) but does not add significant meaning beyond the schema for the parameter itself. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Read a Planning Function (TLOGO PLSE) definition' and specifies the types of planning operations. It distinguishes from sibling tools like 'bw_get_planning_properties' and 'bw_get_planning_sequence' by focusing on the full definition including characteristic usage and parameter tree.

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

Usage Guidelines4/5

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

The description provides clear context on what the tool does and what it returns, implying usage when a detailed definition of a planning function is needed. However, it lacks explicit guidance on when not to use it or alternatives among the many read tools.

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

bw_get_planning_propertiesA

Read the Planning Properties (TLOGO PLCR) of a plan-enabled InfoProvider (real-time aDSO or CompositeProvider). Returns the provider name, underlying provider resource and media type, InfoArea, package, status, and the general planning settings: key-date mode, maximum number of characteristic combinations, and the save strategy (planning sequence and delta-read flag). The PLCR shares its technical name with the InfoProvider it belongs to.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_provider_nameYesTechnical name of the plan-enabled InfoProvider (e.g. "OBJECT_NAME"). The PLCR object shares this name.

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It correctly identifies the tool as read-only ('Read') and lists returned data. However, it does not disclose error behavior (e.g., if provider is not plan-enabled or missing), nor any potential side effects or permissions needed.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and scope, no fluff. Every sentence adds meaningful context.

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

Completeness4/5

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

Given no output schema, the description thoroughly lists the returned fields. It covers provider identification, settings, and naming. Lacks mention of error handling but is generally complete for a read tool.

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

Parameters4/5

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

Schema coverage is 100% for the single parameter, which is well-described. The description adds value by clarifying the naming convention (PLCR shares name with provider) and reinforcing the 'plan-enabled' requirement, exceeding what the schema alone provides.

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

Purpose5/5

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

The description clearly states it reads Planning Properties of plan-enabled InfoProviders, specifies the provider types (real-time aDSO or CompositeProvider), and lists the returned fields. It distinguishes from siblings like bw_get_planning_function that read different planning objects.

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

Usage Guidelines3/5

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

The description implies when to use (to read planning settings of a provider) but does not explicitly state when not to use or suggest alternatives among siblings. Given the presence of bw_get_planning_function and bw_get_planning_sequence, clearer guidance would be beneficial.

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

bw_get_planning_sequenceA

Read a Planning Sequence (TLOGO PLSQ) definition — an ordered list of planning steps for Integrated Planning / embedded BPC. Returns name, description, InfoArea, package, status, and the ordered step list. Each step shows its type code, the aggregation level, the planning function (planning service), and the filter name.

ParametersJSON Schema
NameRequiredDescriptionDefault
planning_sequence_nameYesTechnical name of the Planning Sequence (e.g. "OBJECT_NAME").

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It correctly indicates a read operation and details the returned fields, but does not mention authorization needs, potential errors, or rate limits.

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

Conciseness5/5

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

The description is concise with two sentences. The first sentence states the purpose and main output, while the second details the step list content. No unnecessary words.

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

Completeness4/5

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

Given the tool has only one parameter and no output schema, the description is fairly complete. It explains the return value including step details. However, it does not mention what happens if the sequence does not exist, which is a minor gap.

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

Parameters3/5

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

The input schema has 100% description coverage with a clear parameter description. The tool description adds no additional semantic value beyond restating the parameter's purpose, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool reads a Planning Sequence definition, specifying the exact resource ('Planning Sequence') and what it returns (name, description, InfoArea, etc.). It also distinguishes from sibling tools like bw_get_planning_function by focusing on the sequence of steps.

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

Usage Guidelines3/5

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

The description implies usage by stating what the tool does (read a Planning Sequence definition), but does not explicitly specify when to use this tool over alternatives or provide any 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.

bw_get_process_chainA

Read a Process Chain (RSPC) definition — header metadata, scheduling and monitoring settings, all steps (nodes) with type, variant, and last execution status, step dependencies (edges) with branch conditions for DECISION nodes, and inline variant details. By default (include_variant_details=true), automatically fetches and embeds the full variant configuration for each step that has detail available. Steps without variant detail (DTP_LOAD, OR, AND, EXOR, CHAIN) are shown without extra detail — for DTP_LOAD use bw_get_dtp, for CHAIN use bw_get_process_chain recursively. Set include_variant_details=false for a faster structural overview without variant detail. Use bw_search with object_type=RSPC to find chain names first.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): compact human-readable summary. "raw": full parsed JSON.
chain_nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
include_variant_detailsNoIf true (default), fetches variant configuration detail for each step automatically and includes it inline. Set to false to skip variant detail fetching for faster response on large chains.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses default behavior of fetching variant details, steps without detail, and that include_variant_details=false provides faster structural overview. It does not mention potential timeouts or rate limits but is otherwise transparent.

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

Conciseness4/5

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

Description is front-loaded with a summary sentence, then details on default behavior and exceptions. Every sentence provides value, though slightly wordy. Well-structured and informative.

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

Completeness4/5

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

No output schema, but description lists all components: header, scheduling/monitoring, steps, edges, and variant details. It addresses missing detail for some step types and redirects to alternative tools. Complete enough for an AI agent to understand the return scope.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3). Description adds meaning beyond schema by explaining default behavior of include_variant_details, what happens for steps without variant detail, and providing context for format parameter (human-readable vs raw JSON). Adds significant value.

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

Purpose5/5

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

The description clearly states the tool reads a Process Chain definition and lists components. It uses a specific verb 'Read' and resource 'Process Chain definition', and distinguishes from siblings by mentioning alternatives for specific step types and suggesting bw_search for finding chain names.

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

Usage Guidelines5/5

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

Explicit guidance on when to use this tool (to get full definition) and when not (for DTP_LOAD steps use bw_get_dtp, for CHAIN steps use recursively). Also suggests bw_search to find chain names first and explains trade-off of include_variant_details parameter.

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

bw_get_process_chain_run_detailA

Read the execution detail of one process chain run — all process steps with type, variant, status, timestamps, and parent/child relationships (predecessor graph edges), plus the full message log. chain_id and log_id come from bw_list_process_chain_runs or bw_list_process_chain_last_status output. Use this to diagnose a failed run: the message log contains the actual error messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
log_idYesRun log ID from bw_list_process_chain_runs or bw_list_process_chain_last_status (logId field).
chain_idYesProcess chain technical name (e.g. "CHAIN_NAME").

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It explains the tool is read-only ('Read') and details the output structure. Does not disclose any limitations or restrictions beyond the data returned, but for a read operation this 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.

Conciseness5/5

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

Concise 4-sentence description with no filler. Purpose is stated first, followed by key details and prerequisites. Every sentence adds value.

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

Completeness4/5

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

Without output schema or annotations, the description adequately covers what is returned (steps, messages, relationships). Could include more detail on ordering or number of steps, but sufficient for agent understanding.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description reiterates the origin of parameters and adds a usage context, but does not provide new semantic meaning beyond the schema descriptions.

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

Purpose5/5

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

Description clearly states 'Read the execution detail of one process chain run' and enumerates exactly what is included: process steps with type, variant, status, timestamps, predecessor graph edges, and message log. It differentiates from sibling tools like bw_get_process_chain and bw_list_process_chain_runs.

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

Usage Guidelines4/5

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

Provides explicit use case: 'Use this to diagnose a failed run' and specifies where to obtain input parameters (from bw_list_process_chain_runs or bw_list_process_chain_last_status). Does not explicitly mention when not to use, 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.

bw_get_process_variantA

Read the detail configuration of a single Process Variant from a Process Chain step. Covers all process types: ABAP (report name + selection variant), ADSOACT (aDSO activation), ADSOREM (request cleanup), PLSWITCHL/PLSWITCHP (planning mode switch), DTP_LOAD, DECISION, and any other type — oDetail is returned as indented JSON for unknown types. Get process_type and variant_name from bw_get_process_chain output (sProcessType and sProcessVariant fields). Use format="raw" to see the full unformatted JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): readable summary with oDetail as indented JSON. "raw": full parsed JSON.
process_typeYesProcess type technical name from the chain step (e.g. "ABAP", "DTP_LOAD", "ADSOACT", "ADSOREM", "PLSWITCHL", "PLSWITCHP", "DECISION"). Case-insensitive.
variant_nameYesProcess variant technical name from the chain step (e.g. "ILV_...", "DTP_...", "DEL_..."). Case-insensitive.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries full responsibility. It clearly states the tool is read-only ('Read'), describes how unknown types are handled (oDetail as indented JSON), and explains the 'raw' format option. This provides sufficient behavioral insight.

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

Conciseness5/5

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

The description is a single paragraph with no redundancy. It front-loads the purpose, then lists process types, input sourcing, and format options—each sentence adds value.

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

Completeness4/5

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

Given three parameters and no output schema, the description covers input sourcing, return format variants, and behavior for unknown types. It lacks explicit output structure details for each process type, but the format options and example of indented JSON provide adequate guidance.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds critical context: it tells that process_type and variant_name come from specific fields in bw_get_process_chain output. For the format parameter, it clarifies the difference between 'text' and 'raw' beyond the enum values.

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

Purpose5/5

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

The description starts with a clear verb+resource: 'Read the detail configuration of a single Process Variant from a Process Chain step.' It lists specific process types and distinguishes from the sibling tool bw_get_process_chain by instructing where to obtain inputs.

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

Usage Guidelines4/5

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

The description explains when to use the tool: to read a process variant detail from a chain step. It explicitly ties inputs to the output of bw_get_process_chain. While it doesn't list negative conditions, the context is well-defined.

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

bw_get_push_schemaA

Fetch the JSON schema for an aDSO write interface. Returns field names, data types, and required fields. Use this before bw_push_data to know what fields to include in records.

ParametersJSON Schema
NameRequiredDescriptionDefault
adso_nameYesaDSO technical name (e.g. "ADSO_NAME").

TDQS

A4.9/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It describes the fetch operation as non-destructive and lists return values (field names, data types, required fields). No side effects or hidden behaviors left unexplained.

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

Conciseness5/5

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

Two sentences with zero waste. First sentence states action and result, second sentence gives usage direction. Information is front-loaded and every sentence earns its place.

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

Completeness5/5

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

For a simple getter with one required parameter and no output schema, the description adequately communicates what is returned (field names, data types, required fields). No missing or confusing details.

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

Parameters4/5

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

Schema coverage is 100% (single parameter adso_name fully described). Description adds usage context ('for an aDSO write interface') but doesn't enrich parameter semantics beyond what schema provides. Slight bonus for contextual framing.

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

Purpose5/5

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

Description clearly states 'Fetch the JSON schema for an aDSO write interface' with specific verb and resource. Distinguishes from sibling tools as it is unique for push schema, and explicitly mentions it returns field names, data types, and required fields.

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

Usage Guidelines5/5

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

Explicitly states 'Use this before bw_push_data to know what fields to include in records.' This provides clear when-to-use guidance and an alternative sibling tool reference (bw_push_data). No ambiguity.

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

bw_get_queryA

Read a BW Query definition — variables, filter, layout (rows/columns/free characteristics), calculated and restricted measures, exceptions, and cell definitions. Tries the active version first; falls back to the inactive version if not found. format="text" (default): compact human-readable output. format="raw": full parsed JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNo"text" (default): structured human-readable output. "raw": full parsed JSON.
query_nameYesTechnical name of the query (e.g. "QUERY_NAME").

TDQS

A3.6/5.0
Behavior3/5

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

Discloses fallback behavior for inactive versions and two format outputs. With no annotations, this provides moderate transparency, but lacks details on permissions or side effects.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose, no wasted words. Clear structure and efficient.

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

Completeness5/5

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

Without an output schema, the description sufficiently explains return values for both formats and the fallback behavior, making it complete for a two-parameter read tool.

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

Parameters4/5

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

Schema has 100% coverage, but description adds meaningful output descriptions for each format (human-readable vs JSON), enhancing understanding beyond schema.

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

Purpose4/5

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

The description clearly states the tool reads a BW Query definition and lists its components (variables, filter, layout, etc.). It is specific to queries but does not explicitly differentiate from sibling 'get' tools like bw_get_structure.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as bw_get_structure or bw_get_ckf. The description only explains format options without usage context.

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

bw_get_query_rolesA

Get all roles and folders where a specific BW query is currently published. Returns the role name, description, and folder for each assignment. If the query is not published anywhere, returns a clear message.

ParametersJSON Schema
NameRequiredDescriptionDefault
query_nameYesTechnical name of the BW query (case-insensitive).

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description is the sole source of behavioral info. It discloses that the tool retrieves assignments, returns specific fields, and provides a clear message when no results. However, it does not mention permissions, side effects (presumably read-only), or performance implications. The disclosure is adequate for a simple get operation.

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

Conciseness5/5

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

Two sentences, each essential. The first sentence states the action and what is returned; the second handles the edge case. No unnecessary words.

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

Completeness4/5

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

With no output schema, the description must explain return structure. It does so by listing fields (role name, description, folder) and implies a list via 'for each assignment.' It also covers the empty case. The tool is simple with one param, and the description provides sufficient context for an agent to use it correctly.

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

Parameters3/5

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

Schema coverage is 100% (one parameter with description). The schema already documents 'Technical name... (case-insensitive).' The tool description adds no additional parameter details beyond the schema, so baseline score applies.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'roles and folders where a specific BW query is published.' It specifies output fields (role name, description, folder) and handles the case of no results, distinguishing it from siblings like bw_get_role_queries which likely queries in reverse.

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

Usage Guidelines3/5

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

The description implies usage when needing to know where a query is published, but it does not explicitly state when not to use this tool versus alternatives like bw_get_role_queries or bw_get_roles. There is no mention of preconditions or exclusions.

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

bw_get_remodeling_requestA

Full status of one remodeling request: header, the five processing steps (CHECK, SAVE, CONVERT, ACTIVATE, CLEANUP) with their individual status, and the application log messages. Read-only. This is the tool to diagnose a failed remodeling — the log carries the reason. A "running" status is never reported on the monitor service alone: it is buffered and keeps reporting Running after a run has finished, so the status is cross-checked against the runtime tables and the batch job. A corrected status names its source; if the run is demonstrably over but the header still lags, the output warns about it. Poll this tool to wait for a run to finish.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): readable summary. "raw": full parsed JSON.
include_logNoInclude the application log messages (default true).
info_providerYesInfoProvider technical name the rule belongs to. Case-insensitive.
request_numberNoOptional request GUID from bw_list_remodeling_requests output. When omitted, the most recent request of the given InfoProvider and rule is resolved automatically.
remodeling_ruleYesRemodeling rule ID, from bw_list_remodeling_requests output.

TDQS

A4.4/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and it does so richly: it marks the operation read-only, explains the buffered 'Running' behavior, says the status is cross-checked against runtime tables and the batch job, notes that a corrected status names its source, and warns when the header lags. This goes well beyond a simple getter description and prepares the agent for a commonly confusing behavior.

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

Conciseness4/5

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

The description is concise for the behavioral complexity it has to convey, and the key facts are front-loaded: what is returned and read-only first. Each subsequent sentence adds new information about diagnosis, the buffered status pitfall, and polling, rather than repeating the schema. It is longer than a two-line description, but the length is justified by the non-obvious status behavior.

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

Completeness5/5

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

For a fairly complex diagnostic tool with no output schema, the description covers what an agent needs: returned fields, the log as diagnostic carrier, the meaning of the status edge cases, and the polling recommendation. The five-step list, corrected-source behavior, and lag-warning behavior provide context an agent would otherwise not infer from the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3: the schema already documents every parameter including the enum, defaults, case-insensitivity, and the auto-resolution of the request number. The description does not add much parameter-level semantics, though it does mention bw_list_remodeling_requests as the source for two of the identifiers, which is mildly useful.

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

Purpose5/5

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

The description names a specific verb ('get') and resource ('one remodeling request') and states exactly what is returned: header, per-step statuses for the five processing steps, and log messages. It distinguishes itself from the sibling bw_list_remodeling_requests by being the single-request status/diagnosis tool, so an agent can pick it apart from the list tool without opening the schema.

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

Usage Guidelines4/5

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

The description says this is 'the tool to diagnose a failed remodeling' and explicitly instructs to 'poll this tool to wait for a run to finish', which gives concrete when-to-use guidance. It does not name the alternative tools or explicitly say when not to use it, but the context makes the intended use clear enough.

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

bw_get_requestA

Full status analysis of one load request in a single call, bundling the request header, DTP information (including start, finish and duration), the process step chain and the message log. Read-only. The request TSN comes from bw_list_requests output.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): readable summary. "raw": full parsed JSON of all four payloads.
storageNoStorage area code (default "AQ"). Take it from the "Storage" line of the bw_list_requests output — the code differs by target type (e.g. AQ inbound, AT/AX active data aDSO, ATTE active text table InfoObject). A wrong code 404s the header/DTP/process sections, but the message log is still returned.
request_tsnYesInternal request TSN from bw_list_requests output.

TDQS

A4/5.0
Behavior4/5

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

The description explicitly states 'Read-only', which is a key behavioral trait. It also discloses what components are bundled (header, DTP info, process chain, message log). With no annotations provided, the description carries the full burden and adequately conveys the non-destructive, informational nature of the tool.

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

Conciseness5/5

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

The description is two sentences: the first states purpose and bundled components, the second adds read-only nature and prerequisite. No redundant information; every sentence serves a clear purpose.

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

Completeness4/5

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

Given no output schema and moderate complexity, the description adequately outlines the returned sections (header, DTP info, process chain, message log) and the source of the TSN. However, it does not mention error behavior (e.g., storage code causing partial results) or the output structure for raw vs text format, which is partially covered in parameter schema.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds marginal value by specifying that request_tsn comes from bw_list_requests output, but does not add new meaning for format or storage beyond what the schema already describes.

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

Purpose5/5

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

The description clearly states the verb 'get' and resource 'request', specifying that it provides 'full status analysis' bundling header, DTP info, process step chain, and message log. It distinguishes from siblings by emphasizing the comprehensive single-call bundling, which is not available in other get tools like bw_get_dtp or bw_get_process_chain.

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

Usage Guidelines3/5

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

The description mentions the prerequisite that the request TSN comes from bw_list_requests output, providing context. However, it does not explicitly state when to use this tool versus alternatives (e.g., bw_get_dtp for detailed DTP info) or when not to use it, leaving the agent to infer usage from the bundling description.

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

bw_get_rkfA

Read a global Restricted Key Figure (RKF) defined at CompositeProvider level. Returns technical name, description, base measure, characteristic filters, metadata, and the full dependency graph of referenced CKF/RKF sub-components.

ParametersJSON Schema
NameRequiredDescriptionDefault
component_nameYesTechnical name of the RKF (e.g. "RKF_NAME").

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided; description correctly indicates a read operation and lists return fields, but lacks information on error conditions, permissions, or side effects beyond the obvious.

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

Conciseness5/5

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

Single sentence that concisely states the action and outputs, with no unnecessary words.

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

Completeness3/5

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

For a simple read tool with one well-documented parameter, the description covers purpose and outputs; however, no output schema and limited behavioral context make it minimally adequate.

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

Parameters3/5

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

Single parameter has full 100% schema coverage including description; tool description adds no extra semantics beyond what is already in the schema.

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

Purpose5/5

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

The description clearly states the tool reads a global Restricted Key Figure (RKF) and lists the returned fields (technical name, description, etc.), differentiating it from other BW get tools like bw_get_ckf.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs. alternatives (e.g., bw_get_ckf), nor any preconditions or context for usage.

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

bw_get_role_queriesA

List all BW queries published in BW roles (via the "Publish to Role" mechanism). Returns each role with its assigned queries, including technical name, description, object type, and InfoProvider. Note: only SAP_BW_QUERY objects are returned; PFCG menu entries of other types (e.g. AFO workbooks added as transactions) are not included. Use role_name to filter to a specific role; omit it to see all roles with published queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_nameNoOptional. Technical name of the role to filter by (e.g. from bw_get_roles). Omit to return all roles.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the return structure and exclusions (only SAP_BW_QUERY objects, not other PFCG types). However, it does not mention read-only nature explicitly, potential errors, or performance characteristics.

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

Conciseness5/5

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

Three concise sentences: first defines purpose and return, second clarifies behavioral boundary, third gives usage guidance. No redundant or extraneous information.

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

Completeness4/5

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

Given no output schema and no annotations, the description covers the core functionality, parameter usage, and return structure reasonably well. Lacks details on error handling, sorting, or pagination, but these are minor given the tool's simplicity.

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

Parameters4/5

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

The schema with 100% description coverage already documents the role_name parameter. The description adds value by connecting role_name to bw_get_roles and reiterates the filtering logic, clarifying the behavior beyond the schema.

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

Purpose5/5

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

The description clearly states the tool lists BW queries published in roles via the 'Publish to Role' mechanism, and specifies the returned information (role, query technical name, description, object type, InfoProvider). It distinguishes itself from sibling tools by focusing on published queries only, not other PFCG entries.

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

Usage Guidelines3/5

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

The description provides explicit guidance on using the role_name parameter to filter or omitting it to get all roles. However, it lacks explicit direction on when to use this tool versus alternatives like bw_get_query_roles or bw_set_query_roles, relying on contextual understanding from sibling names.

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

bw_get_rolesA

Load the complete BW query role hierarchy as shown in the "Publish to Role" dialog. Returns all roles (ROLE nodes) and their folder structure (FOLDER nodes) with nodeids. Use this to discover role names and folder names needed for bw_set_query_roles. Optionally filter to roles whose name starts with a given prefix.

ParametersJSON Schema
NameRequiredDescriptionDefault
role_filterNoOptional prefix to filter results. Only ROLE nodes whose name starts with this prefix are included (e.g. "BW:").

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but the description indicates the tool loads hierarchy (read-only implied) and optionally filters. It does not mention any side effects or specific permissions needed, which would enhance transparency, but it is adequate given the operation nature.

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

Conciseness5/5

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

Two sentences, front-loaded with the main purpose, no wasted words. Highly concise and well-structured.

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

Completeness4/5

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

No output schema, but the description states the return values include roles, folders, and nodeids. It lacks detail on the exact structure of the return, but for a simple list tool, it is nearly complete. Could mention the format or hierarchy depth.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter, and the schema description already covers the parameter's meaning. The description adds minimal value by restating the optional prefix filter, but this is consistent. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool loads the BW query role hierarchy and returns roles and folder structure with nodeids. It distinguishes itself by mentioning it's for discovering names needed for a specific sibling tool (bw_set_query_roles).

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

Usage Guidelines4/5

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

The description explicitly says to use this tool for discovering role and folder names needed for bw_set_query_roles. It implies when to use it but does not provide explicit when-not-to-use or alternatives, though 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.

bw_get_source_systemA

Read the metadata of a single logical source system (LSYS) — type, description, connection details, and maintenance properties.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_systemYesLogical source system name (e.g. "LSYS_NAME"). Case-insensitive.

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It states the operation is a read, but does not disclose authentication needs, rate limits, or behavior on missing source systems. It is adequate but could be more transparent.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded with the verb 'Read' and the resource. No extraneous words; every part earns its place.

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

Completeness4/5

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

For a simple read tool with one parameter and no output schema, the description lists the returned fields, which is sufficient. It could mention error handling or required permissions, but overall it provides a complete picture.

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

Parameters4/5

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

The input schema already describes the parameter with 100% coverage. The description adds value by specifying what fields will be returned (type, description, etc.), helping the agent understand the tool's output beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Read'), the resource ('metadata of a single logical source system'), and specifies the fields (type, description, connection details, maintenance properties). It distinguishes itself from siblings like 'bw_list_source_systems' which lists all systems.

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

Usage Guidelines3/5

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

The description implies usage for retrieving details of a single LSYS, but does not explicitly state when to use it over alternatives like 'bw_list_source_systems'. 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.

bw_get_structureA

Read a global Structure defined at CompositeProvider level. Returns the ordered member list with type (Selection/Formula), referenced component or IOBJ name, characteristic filters, and the full dependency graph.

ParametersJSON Schema
NameRequiredDescriptionDefault
component_nameYesTechnical name of the Structure (e.g. "STR_NAME").

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It clearly indicates this is a read operation (non-destructive) and details the specific data returned, providing good behavioral insight. However, it omits any mention of authentication requirements, rate limits, or potential side effects, though as a read operation, those are less critical.

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

Conciseness5/5

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

Two concise, front-loaded sentences that convey the tool's purpose and return value without redundancy. Every sentence adds value.

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

Completeness4/5

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

Given the simplicity (1 parameter, no output schema, no annotations), the description is sufficiently complete. It explains what the tool does and what it returns. It could add more on output structure or dependencies, but overall adequate.

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

Parameters3/5

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

Schema coverage is 100% for a single parameter, so the baseline is 3. The description adds context ('global Structure at CompositeProvider level') but does not add significant meaning beyond the schema's description ('Technical name of the Structure'). The example 'STR_NAME' is helpful.

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

Purpose5/5

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

The description clearly states the action ('Read'), the resource ('global Structure'), and the scope ('at CompositeProvider level'), distinguishing it from sibling tools like bw_get_ckf or bw_get_rkf. It also lists what is returned (ordered member list, types, referenced components, filters, dependency graph).

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

Usage Guidelines3/5

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

The description implies usage when a structure needs to be read, but does not explicitly state when to use this tool over alternatives, nor does it mention prerequisites or when not to use it. Sibling tools exist for other get operations, but no guidance is provided.

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

bw_get_transformationA

Read a Transformation structure — source/target segments, mapping rules. Transformation names are UUID-like generated keys (e.g. "TRFN_UUID_KEY"). Use bw_xref on the aDSO to find the transformation name.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): compact human-readable summary. "raw": raw XML from BW.
transformation_nameYesTransformation name (UUID-like key, e.g. "TRFN_UUID_KEY").

TDQS

A4.2/5.0
Behavior3/5

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

Description indicates a read operation, but with no annotations, it doesn't disclose additional behavioral traits like permissions or rate limits. Adequate but minimal.

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

Conciseness5/5

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

Two concise sentences with no redundant information. Each sentence adds necessary context.

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

Completeness4/5

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

No output schema, but description explains returned structure (source/target, mapping rules) and output formats. Covers key aspects for a read tool.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value by explaining transformation names are UUID-like keys and suggesting how to find them. This enhances parameter understanding beyond the schema.

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

Purpose5/5

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

The description clearly states 'Read a Transformation structure' with specific content (source/target segments, mapping rules). It distinguishes from siblings like bw_xref by mentioning how to find the transformation name.

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

Usage Guidelines4/5

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

Provides explicit guidance to use bw_xref before calling this tool, aiding in selecting the correct tool. Lacks explicit when-not-to-use but gives clear context.

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

bw_list_changeable_transportsA

List transport requests and their tasks via the BW transport state (cto/check). Defaults to the caller's modifiable requests. Use this to find an open request to assign an object to.

ParametersJSON Schema
NameRequiredDescriptionDefault
own_onlyNoOnly the caller's own requests (default true). false widens to all users.
include_objectsNoInclude the objects contained in each task (default false).
modifiable_onlyNoOnly modifiable requests, i.e. status "D" (default true). false also returns released requests.

TDQS

A4.2/5.0
Behavior3/5

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

No annotations provided, so the description carries the full burden. It discloses the mechanism (cto/check), default filters (own_only, modifiable_only), and the output (list of requests and tasks). However, it does not describe the return format, error behavior, or any potential side effects. Adequate but not comprehensive.

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

Conciseness5/5

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

Two sentences: one stating the function and mechanism, another giving usage guidance. No redundant information. Front-loaded with key information. Highly efficient.

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

Completeness4/5

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

For a list tool with no output schema, the description adequately covers purpose, usage, defaults, and mechanism. It mentions that both requests and tasks are listed. Could hint at pagination or response structure, but overall sufficient for an agent to use effectively.

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

Parameters4/5

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

Schema coverage is 100%, so baseline 3. The description adds value by explaining the defaults for own_only and modifiable_only, and ties these to the usage context ('find an open request'). This goes beyond the schema descriptions, justifying a 4.

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

Purpose5/5

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

The description clearly specifies the action (list), resource (transport requests and tasks), context (via BW transport state), and distinguishes from siblings like bw_list_requests by focusing on changeable/modifiable requests. It states the default scope (caller's modifiable requests) and the purpose (find an open request to assign an object).

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

Usage Guidelines4/5

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

The description explicitly says 'Use this to find an open request to assign an object to', providing clear guidance on when to use this tool. It implies that other tools might be used for different purposes, but doesn't explicitly mention alternatives. However, given the sibling context, this is sufficient.

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

bw_list_contentsA

Read the direct children of any node in the BW repository tree. The path parameter maps to the navigation hierarchy: use "/" or "" for all InfoAreas, "area/{name}" for InfoArea contents (object type folders), "area/{name}/{folder}" for objects within a folder (e.g. "area/MYAREA/adso"), "{type}/{name}" to expand an object (e.g. "hcpr/CP_NAME" → sub-folders), "{type}/{name}/{subfolder}" for objects within a sub-folder (e.g. "adso/ADSO_NAME/trfn"). Returns name, description, object_type, object_subtype, status, has_children, self_url, fiori_only, and children_path (pass directly to bw_list_contents to drill down).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesRepository path to list. Use "/" or "" for all InfoAreas. Examples: "area/MYAREA", "area/MYAREA/hcpr", "hcpr/CP_NAME", "hcpr/CP_NAME/elem_ckf", "adso/ADSO_NAME/trfn".

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. Describes the behavior as read-only, lists return fields, and explains how path affects output. No contradictions, and behavior is fully disclosed.

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

Conciseness4/5

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

The description is a single paragraph that packs in purpose, path details, and return fields. It is efficient but could be better structured with bullet points or sections for improved readability.

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

Completeness5/5

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

No output schema, but description lists all relevant return fields. Covers navigation patterns, making the tool fully understandable for its browsing purpose. Complete for a list tool.

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

Parameters5/5

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

Schema coverage is 100% and description adds significant context by explaining the hierarchical path patterns with examples (e.g., 'area/{name}/{folder}', 'hcpr/CP_NAME'). This goes well beyond the schema's brief description.

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

Purpose5/5

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

The description clearly states the tool reads direct children of any node in the BW repository tree. It uses a specific verb ('Read') and resource ('direct children'), and distinguishes from sibling tools like getters and search.

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

Usage Guidelines4/5

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

Provides explicit examples of path patterns for navigation (e.g., '/', 'area/{name}', '{type}/{name}') and advises that 'children_path' can be passed directly to drill down. Lacks explicit when-not-to-use guidance but context is clear.

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

bw_list_datasourcesA

List all DataSources (RSDS) available under a logical source system. Recursively traverses the full application component (APCO) hierarchy — may take time for large systems. Returns each DataSource with name, source_system, description, status, self_url, and apco_path (ordered list of application component titles from root to the DataSource). Optional apco_path_filter restricts the result to a hierarchy subtree and also prunes traversal.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. "text" (default): compact plain-text table. "raw": raw XML feed bodies from BW.
source_systemYesLogical source system name (e.g. "LSYS_NAME"). Case-insensitive.
apco_path_filterNoOptional APCO hierarchy filter. A contiguous sequence of APCO names, "/"-style separated by ">". May start at any depth in the hierarchy (not root-anchored). Example: "LEVEL_1 > LEVEL_2" returns every DataSource that lives under a path containing LEVEL_1 directly followed by LEVEL_2. Each segment matches case-insensitively against the APCO display title OR the technical APCO name (trimmed). A single segment like "IS-U" returns all DataSources under any APCO subtree named "IS-U", at any depth.

TDQS

A4.5/5.0
Behavior4/5

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

Discloses recursive traversal and possible slowness. Describes the return fields and the filter behavior. With no annotations, this provides sufficient behavioral insight for a read-only list tool.

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

Conciseness5/5

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

Two sentences front-loading core purpose, then providing detail on traversal, output, and optional filter. No wasted words.

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

Completeness5/5

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

Covers all necessary aspects: resource type, scope, behavior (recursive, slow), output fields, filter syntax, and default format. Lacks only pagination/limits, but this is acceptable for such a tool.

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

Parameters4/5

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

Adds meaning beyond schema: explains apco_path_filter with example, notes case-insensitivity for source_system, and confirms default format. Schema covers all params, but description enriches usage.

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

Purpose5/5

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

Clearly states the verb 'List' and the resource 'DataSources (RSDS)' under a logical source system. Distinguishes itself from siblings like bw_get_datasource by listing all vs. single, and bw_search by focusing on hierarchy traversal.

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

Usage Guidelines4/5

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

Contextually clear when to use (listing all datasources under a system) and mentions potential performance impact for large systems. Does not explicitly exclude alternatives but the purpose implies distinct use from single-resource tools.

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

bw_list_process_chain_last_statusA

Read the latest execution status and scheduling state for every process chain in the system — one row per chain. Includes last run status, runtime deviation, scheduling status, next scheduled start, and the log_id of the most recent run (pass into bw_get_process_chain_run_detail to drill down). Chains that have never run appear here too. Optionally filter to chains whose last run has a specific status or whose last start date falls in a range.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoOptional maximum number of chains to return. Omit to return all.
statusNoOptional filter on last run status code. Returns only chains whose most recent run matches this status.
last_start_toNoOptional upper bound for last run start date (ISO format). Maps to lastStartDate le datetime filter.
last_start_fromNoOptional lower bound for last run start date (ISO format, e.g. "YYYY-MM-DD"). Maps to lastStartDate ge datetime filter.

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so the description must carry the burden. It explicitly states it is a read operation, includes chains that never ran, returns one row per chain, and allows filtering. It does not mention permissions or rate limits, but the described behavior is transparent enough for a read-only listing tool.

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

Conciseness5/5

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

Two sentences, front-loaded with the core purpose and output fields. The second sentence adds important edge cases (never-run chains) and filter options. No wasted words; every sentence is essential and clear.

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

Completeness5/5

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

For a listing tool with no output schema, the description covers the output content (fields listed), optional filters, and references a sibling for drill-down. It handles edge cases (chains that never ran) and mentions optional date range filtering. This is complete for its complexity.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by explaining that the log_id can be used to drill down with a sibling tool and provides format hints for date parameters (ISO format with example). This extra context helps the agent use the parameters correctly.

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

Purpose5/5

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

The description clearly states it reads the latest execution status and scheduling state for every process chain, one row per chain. It distinguishes from siblings by specifying it returns aggregate per-chain info and mentions using bw_get_process_chain_run_detail for drill-down, showing clear differentiation.

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

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: when you need an overview of all chains with their latest status, scheduling, and optional filtering by status or date. It also suggests an alternative (bw_get_process_chain_run_detail) for drilling into a specific run. However, it does not explicitly state when not to use it relative to other siblings like bw_get_process_chain, but the distinction is implicit.

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

bw_list_process_chain_runsA

List execution runs of one or all process chains from the process chain monitoring log. Each row represents one chain run with overall status, runtime deviation, start/end timestamps, and duration. Optionally filter by chain technical name, start date range, and status code. Returns the log_id of each run — pass chain_id + log_id into bw_get_process_chain_run_detail for step-level details. Ordered by start time descending. Default limit 20 runs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of runs to return (default 20).
statusNoOptional status code filter (e.g. as returned by the status field of previous runs). Resolves to eq filter on the status field.
date_toNoOptional upper bound for run start date (ISO format). Maps to startDate le datetime filter.
date_fromNoOptional lower bound for run start date (ISO format, e.g. "YYYY-MM-DD" or "YYYY-MM-DDTHH:MM:SS"). Maps to startDate ge datetime filter.
chain_nameNoOptional process chain technical name to restrict to runs of a single chain (e.g. "CHAIN_NAME"). Omit for system-wide results.

TDQS

A4.5/5.0
Behavior4/5

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

Discloses return fields (status, runtime deviation, timestamps, duration, log_id), ordering by start time descending, default limit 20. No annotations provided, so description carries full burden. Covers main behavioral traits but omits potential rate limits or data freshness.

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

Conciseness5/5

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

Four sentences, each with distinct purpose: purpose, row content, filtering and linking, ordering and limit. No unnecessary words, highly efficient.

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

Completeness5/5

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

Given no output schema, description sufficiently explains return values and how to use them. Parameter descriptions are complete. Tool is simple but description covers all necessary context for correct invocation.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. Description adds value by explaining ISO format for dates, optional nature of chain_name, and how status filter works (eq). Provides more meaning than schema alone.

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

Purpose5/5

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

Clearly states it lists execution runs from process chain monitoring log, with specific fields and filters. Distinguishes from sibling bw_get_process_chain_run_detail by mentioning it returns log_id to pass for step-level details.

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

Usage Guidelines4/5

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

Explains when to use (listing runs) and provides filtering options. Mentions linking to detail tool for step-level info. Implicitly distinguishes from bw_list_process_chain_last_status by offering full run data. Lacks explicit 'when not to use' but provides clear context.

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

bw_list_remodeling_requestsA

List remodeling requests from the remodeling monitor, with decoded status, last run and creator. Remodeling changes the structure of an existing InfoProvider (e.g. adding, deleting or reassigning a field of an aDSO) and converts the data it already holds. Read-only. Rules are not created by this tool family — BW creates one automatically when an aDSO holding data is activated after a change that cannot be applied to the existing data in place (changing the key definition, deleting a field, changing a data type). Merely appending a field does not trigger one: the column is added and old records keep the initial value. The activation reports "remodeling rule created instead of the activation"; that ID is the remodeling_rule of the resulting request.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoUpper cap on the number of requests to return (default 20). When the cap cuts the list short, the output says so and reports the total — do not read a truncated list as the complete set of open requests.
statusNoOptional comma-separated status codes to include: N not scheduled, S scheduled, R running, C completed, E error. Omit to list every request regardless of status.
info_providerNoOptional InfoProvider technical name (e.g. "OBJECT_NAME") to filter on. Case-insensitive. Omit to list requests of all InfoProviders.

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden of behavioral disclosure. It explicitly states 'Read-only,' explains how remodeling rules arise, and notes that this tool family does not create rules. This meaningfully clarifies side effects and interpretation of returned remodeling_rule IDs, though it does not cover behaviors like ordering, errors, or authentication.

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

Conciseness4/5

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

The description is front-loaded with the primary purpose and then adds a concise but detailed explanation of remodeling semantics. Each paragraph earns its place; the text is somewhat dense and long, but it avoids filler and is structured from the list action to the conceptual background that an agent needs to interpret results.

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

Completeness4/5

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

Combined with the high schema coverage, the description gives enough to call and interpret the tool: it names output fields, explains what a remodeling_rule is, and clarifies key edge cases like the 'empty column' scenario. There is no output schema, so a fuller example of the returned request object would improve completeness, but the current text is not materially incomplete.

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

Parameters3/5

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

The input schema covers 100% of the three parameters with clear descriptions (top cap, status codes, info_provider filter). The description adds useful context around what 'status' refers to conceptually and how remodeling_rule IDs are created, but it does not add new parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'List remodeling requests from the remodeling monitor.' It also names the meaningful output fields ('decoded status, last run and creator') and frames remodeling as a distinct operation from normal request listing, clearly distinguishing this sibling from bw_list_requests and bw_get_remodeling_request.

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

Usage Guidelines4/5

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

It gives clear context for when remodeling concepts matter, including when a remodeling rule is automatically created vs. when appending a field does not trigger one. It does not explicitly name alternative list-based siblings or state 'use this instead of bw_list_requests,' but the remodeling-monitor framing implies the intended use strongly enough.

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

bw_list_remote_entitiesA

List the remote entities (HANA views / virtual tables) a source system exposes as a DataSource basis — read-only discovery (the value help Eclipse shows on the DataSource proposal page). Each entity's technical_name is exactly what binds into bw_create_datasource as the HANA entity. Use this to find a valid hana_entity before creating a DataSource.

ParametersJSON Schema
NameRequiredDescriptionDefault
result_sizeNoMaximum number of rows to return (default 200). Check result_complete to see if truncated.
source_systemYesLogical source system name (e.g. "LSYS_NAME"). A HANA/SDA/SDI source system.
search_patternNoWildcard pattern filtering on technicalName (default "*" for all).

TDQS

A4.6/5.0
Behavior4/5

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

Description clearly labels the tool as read-only discovery, which is transparent. No annotations are provided, so the description carries the burden and does well. However, it could mention that it's a list operation without side effects, but the context 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.

Conciseness5/5

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

Description is concise with three sentences. It front-loads the purpose, then provides usage guidance. No unnecessary words; every sentence adds value.

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

Completeness4/5

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

No output schema is present, but the description gives enough context about the return (list of entities with technical_name). For a listing tool, it's adequately complete, though a mention of return structure would be slightly better.

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

Parameters4/5

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

Schema has 100% coverage with descriptions. The tool description adds value by explaining the result_size parameter's role in truncation and the search_pattern's filtering on technicalName. It also emphasizes that technical_name is key for the binding tool, enhancing schema meaning.

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

Purpose5/5

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

The description clearly states it lists remote entities (HANA views/virtual tables) exposed by a source system as DataSource basis. It specifies the read-only discovery nature and references the Eclipse value help, making the purpose unambiguous.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool: to find a valid hana_entity before creating a DataSource. It also links the technical_name to the bw_create_datasource tool, providing clear usage guidance.

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

bw_list_requestsA

List the recent load requests of an InfoProvider from the runtime request monitor, with decoded request status, record counts and timestamps. Returns one entry per request including the internal request TSN, which is the input for bw_get_request. Read-only. Use bw_search to find the target technical name first. Performance: listing cost scales with the number of returned rows because each row is enriched on the backend (a per-row cross-reference read). top bounds the result set; created_from and status only help by returning fewer rows, not by making a row cheaper. For providers with long load histories, use a narrow created_from window or a small top.

ParametersJSON Schema
NameRequiredDescriptionDefault
topNoUpper cap on the number of requests to return (default 3). Each returned row triggers an expensive per-row backend read, so keep this small; raise it only when needed.
statusNoComma-separated request status codes to include (default "N,GG,GR,YG,RR,YR,RG,U,Y,X").
targetYesTarget InfoProvider technical name (e.g. "OBJECT_NAME"). Case-insensitive.
storageNoComma-separated storage area codes (default "AQ,AX,AT").
target_typeNoTarget object type (default "ADSO").
created_fromNoOptional server-side lower time bound, ISO 8601 with milliseconds and Z (24 chars, e.g. "YYYY-MM-DDTHH:MM:SS.000Z"). Returns only requests created at or after this time (open upper bound = now). Narrows the result set, which reduces per-row backend enrichment cost. Recommended for providers with long load histories.

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: read-only, per-row backend enrichment cost, how top and created_from affect performance, and that default parameter values exist. This is highly transparent.

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

Conciseness4/5

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

The description is detailed but each sentence adds value. It could be slightly tighter, but it's well-structured and front-loaded with purpose and output details.

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

Completeness5/5

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

For a tool with no output schema, the description sufficiently explains return content (request status, record counts, timestamps, TSN) and connects to sibling bw_get_request. No critical gaps.

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

Parameters4/5

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

Despite 100% schema coverage, the description adds meaningful context beyond schema: explains top's performance impact, created_from as a cost-reducer, default status codes, and case-insensitivity of target. Adds value.

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

Purpose5/5

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

The description clearly states the tool lists recent load requests of an InfoProvider from the runtime request monitor. It specifies return details like request status, record counts, timestamps, and internal request TSN, distinguishing it from siblings like bw_get_request (which takes the TSN as input) and bw_search (used to find the target technical name).

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

Usage Guidelines4/5

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

The description advises using bw_search first to find the target technical name, and provides performance guidance on using a narrow created_from window or small top. It does not explicitly state when not to use, but the guidance is clear and helpful.

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

bw_list_source_systemsA

List logical source systems (LSYS) registered in the BW datasource structure. If source_system_type is provided, lists only source systems of that type (e.g. "ODP_SAP", "ODP_BW", "FILE"). If omitted, lists all source systems across all types. Returns each LSYS with name, description, source_system_type, status, self_url, and children_path (pass children_path directly to bw_list_datasources as the source_system argument).

ParametersJSON Schema
NameRequiredDescriptionDefault
source_system_typeNoOptional source system type filter. Known values: ODP_BW, ODP_SAP, ODP_CDS, ODP, FILE. Omit to list all source systems.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description fully carries the behavioral burden. It specifies return fields (name, description, source_system_type, status, self_url, children_path) and filtering behavior. It does not explicitly state read-only status, but the 'list' verb implies it. Overall, clear behavioral context.

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

Conciseness5/5

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

Three concise sentences: purpose, filtering, and output usage. No unnecessary words; each sentence contributes meaningful information. Excellent front-loading.

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

Completeness5/5

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

Given a simple list tool with one optional parameter and no output schema, the description covers the return structure, filtering, and how to chain with another tool. It is fully complete for the agent to select and invoke correctly.

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

Parameters3/5

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

Schema coverage is 100% with a detailed description of the one parameter. The description repeats the filtering info and adds examples but does not provide new semantic meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists logical source systems (LSYS) registered in the BW datasource structure. It uses a specific verb-resource combination and distinguishes from sibling tools like bw_get_source_system (single) and bw_list_datasources (drill-down) by mentioning how the returned children_path can be used.

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

Usage Guidelines4/5

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

The description explains when to use the optional filter and provides a clear chaining instruction: pass children_path to bw_list_datasources. However, it lacks explicit guidance on when not to use it (e.g., for retrieving a single LSYS) versus using bw_get_source_system.

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

bw_move_objectA

Move a BW object (aDSO, InfoObject, InfoArea, …) to a different InfoArea. Single POST operation — no lock/unlock needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesTechnical name of the object to move (e.g. "OBJECT_NAME").
object_typeYesBW object type URL segment (e.g. "adso", "iobj", "area").
target_info_areaYesTechnical name of the target InfoArea (e.g. "MCPBW").

TDQS

A3.7/5.0
Behavior3/5

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

Without annotations, the description reveals it is a single POST operation with no lock/unlock required. This gives mild behavioral insight, but missing details on reversibility, permissions, or error handling.

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

Conciseness5/5

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

The description is concise, consisting of two sentences with no fluff. Essential information is front-loaded, and every word serves a purpose.

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

Completeness3/5

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

For a move operation with three parameters and no output schema, the description covers the basic purpose. However, it lacks details on return values, error conditions, or idempotency, which would enhance completeness.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds little beyond schema descriptions. It reinforces the purpose but does not provide additional parameter-level detail that the schema lacks.

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

Purpose5/5

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

The description clearly states the action (move), the resource (BW object with examples), and the destination (different InfoArea). It effectively distinguishes from sibling tools like bw_delete or bw_create_adso.

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

Usage Guidelines3/5

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

The description mentions that no lock/unlock is needed, providing some usage context. However, it does not specify when to use this tool versus alternatives or when not to use it, leaving room for ambiguity.

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

bw_preview_datasourceA

Fetch a live data preview / sample rows from a DataSource (RSDS) — reads the first N rows directly from the source system and returns them as a formatted table with field names as column headers. Use this when the user wants to see, sample, preview, or inspect the actual data behind a DataSource (e.g. "show me data from DS_X", "preview 50 rows", "what does DS_X look like"). For data from an aDSO, CompositeProvider, or BEx query, use bw_query_data instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
recordsNoNumber of records to fetch (default: 20). SAP returns at most this many rows.
source_systemYesLogical source system name (e.g. "LSYS_NAME"). Case-insensitive.
datasource_nameYesDataSource name (e.g. "DS_NAME"). Case-insensitive.

TDQS

A4.7/5.0
Behavior4/5

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

No annotations provided, so description carries burden. It discloses it reads first N rows, returns formatted table, default 20 records, and SAP caps at that. However, it does not mention permissions or potential performance implications.

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

Conciseness5/5

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

Compact and efficient. Front-loads purpose, then usage guidance. Every sentence serves a purpose, no wasted words.

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

Completeness5/5

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

Given no output schema, description mentions return format. Covers purpose, usage, and parameter details adequately for a simple preview tool. No major gaps.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds context: case-insensitivity, source system naming, default for records, and SAP behavior. This adds value beyond the schema.

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

Purpose5/5

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

The description clearly states it fetches a live data preview from a DataSource, reads first N rows, returns formatted table. It distinguishes itself from bw_query_data for other data types.

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

Usage Guidelines5/5

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

Explicitly tells when to use (user wants to preview data from DataSource) and when not (use bw_query_data for aDSO, CompositeProvider, BEx query), providing an alternative.

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

bw_push_dataA

Push data records directly into an aDSO inbound table via the SAP BW/4HANA write interface. The aDSO must have write_interface enabled (pushMode="true"). Use bw_get_push_schema first to verify field names and types. Success = HTTP 204 (SAP returns empty body). DATS fields must be formatted as YYYYMMDD strings. INT4 fields as JSON integers.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoPush mode. "one_step" (default): implicit request per call. "messaging": uses ?request=MESSAGING param.
recordsYesArray of record objects. Field names must match aDSO field names exactly (uppercase).
adso_nameYesaDSO technical name (e.g. "ADSO_NAME").

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description discloses that success returns an empty body (HTTP 204) and specifies format requirements for DATS and INT4 fields. Could mention error cases or idempotency, but provides adequate behavioral context.

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

Conciseness5/5

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

Three sentences plus format notes. No wasted words. Prerequisites, success indicator, and constraints are front-loaded and concise.

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

Completeness4/5

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

Covers prerequisite tool, required interface setting, success response, and field formatting. Does not address error handling or record size limits, but for a data push operation it is fairly complete.

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

Parameters5/5

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

Schema covers all parameters, but description adds significant value: explains default mode, clarifies that DATS fields require YYYYMMDD strings and INT4 as JSON integers, and details the messaging mode. These are not in the schema.

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

Purpose5/5

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

Clearly states it pushes data records into an aDSO inbound table via the SAP BW/4HANA write interface, specifying the verb and resource. Distinguishes from sibling bw_get_push_schema by referencing it as a prerequisite.

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

Usage Guidelines4/5

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

Gives clear prerequisite (use bw_get_push_schema first) and success condition (HTTP 204). Does not explicitly mention when not to use or alternatives, but provides strong context for appropriate use.

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

bw_query_dataA

Execute a BW query or preview data from a provider (CompositeProvider, aDSO, etc.) via the BICS reporting endpoint. ALWAYS call the appropriate read tool first before querying data: bw_get_composite_provider for a CompositeProvider (is_provider=true), bw_get_adso for an aDSO (is_provider=true), bw_get_query for a BEx Query — this gives you the available fields, key figures, and the query structure before you attempt a data call. Then perform a GET (no state/variables) first to discover the current axis layout, characteristic ids, variables, and background filters before sending any POST. IMPORTANT — always call bw_get_filter_values before applying any filter or variable value. This is the only way to know the correct internal key format for a characteristic (e.g. date/time characteristics like 0CALMONTH, 0CALYEAR, 0CALDAY may use non-obvious formats). Never guess or assume filter value formats — always look them up first. If the GET response shows inputRequired="true", variables must be filled via POST before data is available. If unsure whether a BEx Query exists for the desired analysis, use bw_search or bw_list_contents first before falling back to a direct provider call (is_provider=true). Result is rendered as a formatted table with hierarchy indentation. KEY FIGURE STRUCTURE FILTER: to restrict which key figures appear in the result, apply filterValues directly on the structure dimension (isStructure=true) in state.infoObjects — use the technical name of the calculated or restricted key figure as the low value (e.g. "CKF_NAME" or "RKF_NAME"). Hierarchical children of the filtered member are included automatically. This is the correct approach because ad-hoc threshold filters on key figure values are not supported via the state mechanism; only structure-member selection is possible this way. CRITICAL: variable id and name values in the variablesContainer are session-specific and change between GET calls. Always extract variable id and name exactly from the variablesContainer in the GET response and use them immediately in the next POST — never reuse IDs from a previous GET call or from bw_get_query output. The variable name includes trailing spaces and a 4-digit suffix (e.g. "VARNAME 0004") that must be copied verbatim from the GET response. format="raw" returns XML.

ParametersJSON Schema
NameRequiredDescriptionDefault
stateNoAxis layout and optional per-characteristic filters. All InfoObjects from the query must be listed (even those staying on FREE axis). id values must come from the GET metadata response.
formatNo"text" (default): structured human-readable output. "raw": raw XML response body.
to_rowNoEnd row for pagination (default 1000).
comp_idYesBEx Query name or InfoProvider name (ADSO, HCPR, etc.) to query.
from_rowNoStart row for pagination (default 0).
variablesNoVariable values to fill. name must match exactly as returned by GET (may contain trailing spaces). id and other metadata fields come from the GET variablesContainer response.
is_providerNoSet to true when comp_id is an InfoProvider name (CompositeProvider, aDSO, etc.) rather than a BEx Query name. Adds the required "!" prefix to the compid URL parameter. If unsure whether a query exists for the desired analysis, use bw_search or bw_list_contents first to check before falling back to a direct provider call.
drill_operationsNoOptional. Expand or collapse hierarchy nodes or key figure structure nodes in the current result. Each operation targets one node by its 1-based tuple index. drill_state: 3 = expand, 2 = collapse. element_idx: which dimension within the tuple (1 = first, 2 = second, etc.) — use 2 when ROWS has multiple dimensions and the target node is on the second one. Requires the full state and variables to be sent again in the same POST (stateless endpoint). Use after an initial bw_query_data call to drill into a collapsed structure node or hierarchy node.

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses critical behaviors: session-specific variable IDs that change between calls, trailing spaces in variable names, the need for a GET to discover layout and variables, and the key figure structure filter mechanism. It also mentions result rendering and raw XML output.

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

Conciseness4/5

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

The description is lengthy but front-loaded with the core action and structured with clear steps. Some redundancy exists (e.g., mentioning bw_search twice), but every sentence delivers necessary information for correct usage. Slightly overlong but justified by complexity.

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

Completeness5/5

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

Despite no output schema, the description covers prerequisites, sequence, variable handling, hierarchies, filters, pagination, drill operations, and result format. It addresses all potential agent questions for a complex query tool.

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

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, yet the description adds substantial meaning: explains the workflow (GET before POST), variable ID reuse dangers, drill operations context, and how filterValues work on structure dimensions. This far exceeds the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool executes a BW query or previews data from providers. It distinguishes from sibling read tools by specifying that users should call them first to get metadata. The wording is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs when to use this tool versus alternatives: always call appropriate read tools first, perform GET before POST, call bw_get_filter_values before applying filters, and use bw_search or bw_list_contents when unsure. Provides step-by-step guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_read_metadata_tablesA

Read a BW object definition directly from its metadata tables (via the ADT DataPreview service). Read-only fallback for object types the connected system does not publish as a REST resource — on classic SAP BW (7.5) that is typically transformations and DTPs, and the classic providers, for which no release ships a REST resource. Use bw_system_profile to see which endpoints a system publishes. Supported object_type: TRFN (transformation incl. start/end/expert and field routine source code), DTPA (data transfer process), ODSO (classic DataStore Object), CUBE (InfoCube), MPRO (MultiProvider) and RSPC (process chain: steps with their variant parameters, in execution order — every step follows its predecessors, but branches that run in parallel have no order among themselves, so read the "After" line of each step for the actual dependency). Requires ADT authorization for the calling user. Prefer bw_get_transformation where the REST endpoint exists.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesTechnical name of the object (for TRFN the UUID-like transformation ID).
object_typeYesObject type to read. Supported: TRFN, DTPA, ODSO, CUBE, MPRO, RSPC.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description handles the behavioral disclosure: it states it read-only, requires ADT authorization, is backed by the ADT DataPreview service, and describes a subtle ordering trait for RSPC (parallel branches have no fixed order, so the agent must read an "After" line to get the actual dependency). It doesn't describe the entire return shape, but the per-type notes already hint at the returned content quite clearly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but every sentence carries load: fallback role, system-profile check, supported types, an important delimiter for RSPC, an official auth requirement, and the preferred alternative. It introduces the core read-only behavior first and then builds from that description without repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 2-param, no-output-schema tool, the description is almost complete: it covers target object types, when to use, the correct alternative, how to discover it, auth, and even an unusual ordering caveat for process chains. A small gap, it could explicitly comment on the raw format or content returned, but the object-type notes already imply at least the high-level response shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% description coverage for both parameters, so the baseline is 3. The description adds meaningful extra context by clarifying the object_name format (UUID-like for TRFN) and giving semantic details about each object_type, especially RSPC ordering and TRFN routine source quoting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

It has a specific verb and resource — “Read a BW object definition directly from its metadata tables (via AD object definition directly from its metadata tables (via ADT DataPreview service)” — and lists every supported object type. It also distinguishes itself from sibling REST-based readers by calling out “Read-only fallback for object types the connected system does not publish as a REST resource.”

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent when to prefer an alternative (“Prefer bw_get_transformation where the REST endpoint exists”), when the tool is meant to be used (fallback when no REST resource is published), and how to verify that (“Use bw_system_profile to see which endpoints a system publishes”). This covers both the when and the when-not condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_remove_process_chain_edgeA

Remove the dependency (edge) between two existing steps of a Process Chain (RSPC), via the BW/4HANA Cockpit REST API. In-place edit: reads the current model, drops the matching edge(s), and PUTs it back. By default every edge between the two steps is removed, which is what an "always continue" dependency needs (it is stored as an on-success plus an on-error edge); pass status to remove just one of them. Use this together with bw_add_process_chain_edge to re-route a mis-wired chain. Removing an edge can leave a step unreachable from the start — the chain will not activate until every step has a path from the trigger. Reports a skip when no matching edge exists. A 412 on the PUT means the ETag was stale (chain modified between read and write); the error reports this explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesTarget step. Same reference forms as "from".
fromYesSource step. Node reference forms: a DTP or process-variant name; an aDSO held by an ADSOACT/ADSOREM node; the program of an ABAP step, or "PROGRAM/VARIANT"; "TRIGGER" or a collector type ("AND"/"OR"); or "#<index>" using the step numbers printed by bw_get_process_chain.
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
statusNoRemove only edges with this condition. Omit to remove every edge between the two steps.
activateNoIf true, activate the chain immediately after the edit. Default false.
sub_statusNoRemove only edges with this branch condition (a DECISION branch EVENTNO, e.g. "01"). Omit to ignore the branch condition.
transport_requestNoOptional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even with no annotations provided, the description fully discloses behavioral traits: it performs an in-place read-modify-write via the REST API, removes all matching edges by default due to the two-edge representation of 'always continue', reports a skip if no edge exists, and surfaces ETag/412 stale-write behavior. This is unusually transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Six dense sentences, every one carrying operational information. The core operation is front-loaded; behavior details, warnings, and error handling follow logically. No filler or restatement of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers the critical context an agent needs: what the tool does, how it mutates the model, the edge model behind 'always continue', skip behavior, stale-ETag failure, and the inability to activate until the chain is reachable. This is unusually complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds meaningful interpretation, especially explaining why omitting 'status' removes both the on-success and on-error edges, and clarifying that 'sub_status' selects a DECISION branch. It builds on the schema without replacing it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with 'Remove the dependency (edge) between two existing steps of a Process Chain (RSPC)', a specific verb and resource. It clearly distinguishes this from related tools like bw_remove_process_chain_step and pairs it with bw_add_process_chain_edge, making the tool's scope obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: together with bw_add_process_chain_edge to re-route a mis-wired chain. It also provides situational guidance about edge semantics, activation-preventing unreachable steps, and the behavior when no matching edge exists, giving an agent enough context to choose and invoke it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_remove_process_chain_stepA

Remove one step (node) from a Process Chain (RSPC), via the BW/4HANA Cockpit REST API. In-place edit: reads the current model, drops the node together with every edge touching it and its inline process variant, and PUTs it back. By default the gap is bridged — every predecessor of the removed step takes over every successor, keeping the condition of the edge that ran into the removed step — so the strand stays connected. Pass reconnect=false to leave the successors disconnected. Use this to roll back a step that was inserted in the wrong place. The TRIGGER (Start) step cannot be removed. A 412 on the PUT means the ETag was stale (chain modified between read and write); the error reports this explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
stepYesStep to remove. Node reference forms: a DTP or process-variant name; an aDSO held by an ADSOACT/ADSOREM node; the program of an ABAP step, or "PROGRAM/VARIANT"; a collector type ("AND"/"OR"); or "#<index>" using the step numbers printed by bw_get_process_chain. An ambiguous name is rejected with the candidates listed — use "#<index>" then.
activateNoIf true, activate the chain immediately after the edit. Default false.
reconnectNotrue (default): bridge the gap so each predecessor of the removed step links to each of its successors. false: drop the edges without bridging, which leaves the successors as a strand nothing leads to (the chain then will not activate until they are re-wired with bw_add_process_chain_edge).
transport_requestNoOptional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden of explaining behavior, and it does so exceptionally. It discloses that this is an in-place read-modify-write operation, that edges and inline process variants are removed, that reconnection will bridge predecessors to successors, and it explicitly calls out the 412 ETag staleness condition.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact yet information-dense. Every sentence contributes meaningful operational guidance: purpose, in-place behavior, reconnection semantics, intended use, restriction, and error handling. No filler or redundant restatement exists.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 5 parameters and no annotations, the description is remarkably complete: it explains the full mutation lifecycle, the side effects on edges and process variants, how accurate reconnection behaves, the important TRIGGER restriction, invalid name behavior, and ETag failure handling. Even without an output schema, an agent has enough context to invoke the tool correctly and interpret the most likely error condition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents all five parameters with meaningful descriptions, including the subtle semantics of step references. The tool description does not add much parameter-level meaning beyond that, so a baseline score of 3 is appropriate since the schema fully carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action: removing one step/node from a Process Chain, and immediately distinguishes it from related tools like bw_remove_process_chain_edge by explicitly saying 'step (node)'. It also names the relevant API context and gives concrete behavioral detail, so an agent can tell this tool apart from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use it: to roll back a step inserted in the wrong place. It also gives exclusion guidance (the TRIGGER/Start step cannot be removed) and explains the consequence of reconnect=false, including how to recover by rewiring with bw_add_process_chain_edge. This gives clear decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_run_dtpA

Start (execute) a run of an existing, active DTP. Triggers the load with a single request and returns the new run request id. The returned request_id is the RSPM request TSN: pass it straight into bw_get_request (as request_tsn) to monitor load status — no bw_list_requests lookup needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtp_nameYesTechnical name of the DTP to run (e.g. "DTP_...").

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It explains that it triggers a load and returns a request_id, but does not disclose whether it is synchronous or asynchronous, or potential side effects like concurrent run restrictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no redundancy, efficient. Every sentence adds value: first states action, second explains output usage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers the essential context: prerequisite (existing active DTP), action, and follow-up step. Lacks error scenario details but is sufficient for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds a usage example ('e.g. "DTP..."'). This provides slight additional clarity but does not significantly exceed what the schema already conveys.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool starts an existing active DTP run. It differentiates from siblings by explaining that the returned request_id can be passed directly to bw_get_request, avoiding bw_list_requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states to use on an existing active DTP and guides how to monitor the load using the returned request_id with bw_get_request. Lacks explicit 'when not to use' or alternative tool mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_run_remodelingA

Start, restart or reset a remodeling request. WRITE OPERATION WITH DATA IMPACT: executing a remodeling rule restructures the InfoProvider and converts its existing data — it is not a plain reload and cannot simply be undone. Asynchronous: the call schedules the run; monitor completion with bw_get_remodeling_request. Actions: "execute" starts a request that has not run, "restart" resumes a failed one, "reset" resets the whole request, "reset_step" resets only the current step.

ParametersJSON Schema
NameRequiredDescriptionDefault
startNoStart time for "execute" and "restart": "immediate" (default) or an ISO 8601 timestamp to schedule the background job for a later point in time. Ignored by the reset actions.
actionNoAction to perform (default "execute").
info_providerYesInfoProvider technical name the rule belongs to. Case-insensitive.
request_numberNoOptional request GUID from bw_list_remodeling_requests output. When omitted, the most recent request of the given InfoProvider and rule is resolved automatically.
remodeling_ruleYesRemodeling rule ID, from bw_list_remodeling_requests output.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the safety burden. It clearly warns that this is a WRITE OPERATION WITH DATA IMPACT, that data is restructured/converted, and that it cannot simply be undone. It also explains that the call is asynchronous, which prevents the agent from wrongly expecting immediate completion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the most critical information, the destructive/asynchronous nature, before defining the actions. Each sentence contributes distinct information with no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex write operation with no output schema, the description covers the essential points: what the actions are, why the operation is dangerous, and how to check completion. It is complete enough for an agent to invoke the tool correctly and safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already has 100% description coverage, so the baseline is 3. The description adds real value by explaining what each action value does: execute starts, restart resumes, reset resets whole, reset_step resets the current step. This goes beyond what the schema alone provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: 'Start, restart or reset a remodeling request', and it goes beyond the name by enumerating the four actions. It immediately signals that this is not read-only, distinguishing it from monitoring tools like bw_get_remodeling_request.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context on when to invoke it — for a new request, a failed one, or to reset whole/current step — and tells the agent to monitor completion via bw_get_remodeling_request. It does not explicitly spell out 'do not use this for plain reloads' but it says 'not a plain reload', which effectively excludes that alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_set_datasource_fieldsA

Set the transfer flag of one or more DataSource fields (fieldProperties@transfer) and/or the segment language field designation. Full read-modify-write; only the field transfer flags and/or the segment languageField change. Fields marked transferNotAllowed are skipped when enabling transfer. At least one of fields / language_field must be given. Leaves the DataSource inactive — activate separately with bw_activate (object_type "rsds"). Pass transport for a transportable DataSource so the change is recorded on that request.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoFields to change and their target transfer flag.
transportNoTransport request (e.g. DEVK900123). Required for a transportable DataSource; omit for local ($TMP).
source_systemYesSource system of the DataSource (compound key), e.g. "SOURCE_SYSTEM".
language_fieldNoSet to a field name (e.g. "FIELD_NAME") to designate the segment language field, set to "" to clear the designation. Clearing it fixes ODP text loads that abort with "Filter condition cannot be interpreted by DataSource" (RODPS_SAPI004). After the change, activate the DataSource with bw_activate (object_type "rsds").
datasource_nameYesTechnical name of the DataSource (e.g. "DATASOURCE_NAME").

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behavioral traits: full read-modify-write, only changes specified fields, skips transferNotAllowed fields, leaves DataSource inactive, and requires separate activation. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise paragraph with no wasted sentences. Front-loaded main action, includes necessary details in logical order. Every sentence adds essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complex domain (SAP BW), the description covers all essential aspects: parameters fully described in schema, behavioral details (read-modify-write, activation requirement), error scenario, and transport handling. No output schema exists, but the description adequately informs what the tool does and its side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter descriptions, but the tool description adds meaningful context beyond schema: explains the language_field clearing fixes a specific error, clarifies transport requirement for transportable DataSources, and notes that fields with transferNotAllowed are skipped. Adds value without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sets transfer flags of DataSource fields and/or the segment language field designation, specifying it is a full read-modify-write operation. It distinguishes from sibling tools like bw_change_datasource_delta or bw_get_datasource by focusing on transfer and language field settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly provides when to use: to change field transfer flags or the segment language field. Includes critical guidance: 'At least one of fields / language_field must be given', 'Fields marked transferNotAllowed are skipped', 'Leaves the DataSource inactive', and explains transport requirement. Also gives a concrete error-fix use case for clearing language_field.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_set_dtp_filter_routineA

Set an ABAP filter routine on a DTP filter field. Use this only when custom ABAP code is needed for the filter logic; for value sets, ranges and patterns use the filter parameters of bw_update_dtp. Repeatable on the same field: the routine replaces the previous one, existing value selections on the field are kept, and a failed attempt leaves neither a routine nor a generated report behind.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtp_nameYesDTP name (e.g. "DTP_...").
field_nameYesFilter field name as it appears in the DTP XML fields element.
global_codeNoOptional global declarations for the routine.
routine_codeYesABAP routine code (plain text, without FORM/ENDFORM wrapper).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and it delivers meaningful details: repeated calls replace the previous routine, existing value selections are preserved, and a failed attempt leaves no routine or generated report. This reveals side effects and failure atomicity well beyond the basic schema, though it does not discuss permissions or return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences pack purpose, usage boundaries, and important behavioral caveats with zero filler. The most important distinction (when to use versus bw_update_dtp) comes in the second sentence, and the entire description remains efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description gives essential context about placement, conditions, and edge behavior. It could go slightly further by mentioning expected side effects on activation or what 'generated report' refers to, but the description is strong enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents each parameter, including that routine_code must not contain a FORM/ENDFORM wrapper. The description reinforces the domain of the code but does not add additional parameter-specific meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Set an ABAP filter routine on a DTP filter field'), making the tool's function unmistakable. It also differentiates itself from the value-based filtering path in bw_update_dtp, so an agent can distinguish the two at a glance.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is present: use only when custom ABAP code is needed, and use bw_update_dtp for value sets, ranges, and patterns. The repeatability caveat further clarifies when it is safe to invoke on the same field again.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_set_query_rolesA

Publish or unpublish a BW query in a role or folder. action "add": assigns the query to the given role or folder. action "remove": removes the query from the given role or folder. Use bw_get_roles to discover role/folder names and bw_get_query_roles to see current assignments.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYes"add" to publish, "remove" to unpublish.
query_nameYesTechnical name of the BW query (case-insensitive).
target_nameYesFor target_type "role": the name attribute of the ROLE node (e.g. from bw_get_roles). For target_type "folder": the txt (display name) of the FOLDER node.
target_typeYes"role" to assign at role level, "folder" to assign into a specific subfolder.
parent_role_nameNoRequired when target_type is "folder". The name attribute of the parent ROLE node that contains the target folder.

TDQS

A4.2/5.0
Behavior3/5

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 two actions (add/remove) and their effects, but does not disclose side effects, permissions, or error handling. It implies a state change but lacks details on idempotency or concurrency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, starting with the main purpose, then detailing actions, then providing cross-references. No wasted words, well-organized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters and no output schema, the description covers parameter usage and prerequisite tools. It lacks details on return values or success/failure indicators, but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the 'action' enum, clarifying that target_name depends on target_type, and specifying that parent_role_name is required for folders. This goes beyond the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool publishes or unpublishes a BW query in a role or folder. It distinguishes from siblings by naming specific actions and referencing related discovery tools (bw_get_roles, bw_get_query_roles).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It instructs users to use bw_get_roles for discovering names and bw_get_query_roles for current assignments, providing clear context for when to use this tool. However, it does not explicitly mention when not to use it or list alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_set_transformation_expert_routineA

Write the CODE of an existing Start/End/Expert routine into the Transformation MASTER so it survives TLOGO regeneration — a full bw_activate(trfn) AND a transport import — then activate. Use this instead of abap-adt WriteSource on the generated /BIC/_M class: WriteSource updates only the generated class body, which BW re-generates from the old master on the next trfn activation or transport import (symptom: "return type mismatch … OUTTAB[…]"). This tool replicates the Eclipse editor: it writes the class, then re-saves the transformation master and runs a TLOGO activation via the BW modeling endpoints. The routine must already exist (create it first with bw_set_transformation_routine). Activates automatically — no separate bw_activate needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceNoThe complete routine method block: "METHOD <NAME> BY DATABASE PROCEDURE … ENDMETHOD." for AMDP (HANA) routines, or "METHOD <NAME> … ENDMETHOD." for ABAP routines — the same block shape abap-adt WriteSource(method=…) expects. AMDP SQLSCRIPT must be 7-bit ASCII (no umlauts / no <=). If omitted, the generated class is left untouched and only the master re-save + activation runs (to commit code already edited on the class).
transportNoTransport request number (e.g. DEVK900123). Required if the BW system requires transport assignment.
class_nameNoOptional override for the generated class name (e.g. "/BIC/<uuid>_M"). Defaults to the class derived from the transformation. Use for non-standard/field routines.
method_nameNoOptional override for the routine method name (e.g. a field-routine method). Defaults to GLOBAL_<ROUTINE_TYPE>. When set, the routine-exists guard is skipped.
routine_typeNo"expert" → GLOBAL_EXPERT (default), "start" → GLOBAL_START, "end" → GLOBAL_END. Selects the generated method name.
transformation_nameYesTransformation name (UUID-like key).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It details the internal mechanism (writes to master, re-saves, activates), constraints (AMDP 7-bit ASCII), and behavior when source is omitted. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Despite being a single paragraph, every sentence adds unique information. No fluff, highly efficient use of words covering purpose, method, and constraints.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Thoroughly explains the problem, solution, prerequisites, steps, and activation behavior. All 6 parameters are addressed directly or indirectly. No output schema needed given the descriptive detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear parameter descriptions. The tool description adds value by explaining defaults (routine_type, method_name) and clarifying the source block shape. Adds context beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool writes code into the transformation master to persist through regeneration. Distinguishes from sibling bw_set_transformation_routine by specifying that the routine must already exist.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises to use this instead of abap-adt WriteSource, explains why WriteSource fails, and notes that the routine must be created first. Provides clear when-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_set_transformation_routineA

Add a Start, End, or Expert routine to a Transformation. Creates the global routine group (group id="0") and ABAP/AMDP method stub. Returns lock_handle for bw_activate.

ParametersJSON Schema
NameRequiredDescriptionDefault
transportNoTransport request number (e.g. DEVK900123). Only required if the BW system requires transport assignment.
routine_typeYes"start" → GLOBAL_START, "end" → GLOBAL_END, "expert" → GLOBAL_EXPERT.
transformation_nameYesTransformation name (UUID-like key).

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries the full burden. It explains the creation of routine group and method stub, and the return value (lock_handle), but does not disclose side effects, idempotency, or how conflicts are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the action, the second provides the outcome and return value. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description explains the return value. It covers the main behavior and the optional transport parameter. Lacks mention of prerequisites (e.g., transformation must exist), but overall adequate for a simple creation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds value by stating the return value (lock_handle) but does not provide additional parameter-level details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Add') and resources ('routine to a Transformation'), and distinguishes from sibling tools like bw_delete_transformation_routine by specifying the creation of global routine group and method stub.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the purpose implies when to use it (when adding a routine), there is no explicit guidance on when not to use it or alternatives. No prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_set_transformation_routine_fieldsA

Edit the list of target fields the global END routine writes ("Felder setzen" in SAP GUI). Requires an existing END routine — use bw_set_transformation_routine to create one first. Provide exactly one of: fields (explicit complete set of target fields the END routine should write) or exclude_fields (all target fields minus these). Rejected if neither or both are given, if any field name does not exist in the target segment, or if the resolved field set is empty. Does not activate. Returns lock_handle for bw_activate.

ParametersJSON Schema
NameRequiredDescriptionDefault
fieldsNoExplicit complete set of target field names the END routine should write (e.g. ["FIELD_A", "FIELD_B"]). Case-insensitive. Mutually exclusive with exclude_fields.
transportNoTransport request number (e.g. DEVK900123). Only required if the BW system requires transport assignment.
exclude_fieldsNoTarget fields to exclude from the END routine — all other target fields are written. Case-insensitive. Mutually exclusive with fields.
transformation_nameYesTransformation name (UUID-like key).

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose all behavioral traits. It states that the tool does not activate but returns a lock_handle, and describes rejection conditions. However, it does not mention potential side effects like locking, permission requirements, or whether the change is reversible. Adds sufficient but not exhaustive context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph. It front-loads the main purpose, then covers prerequisites, constraints, and return value concisely. Every sentence adds necessary information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there is no output schema, the description covers the return value (lock_handle) and references related tools (bw_set_transformation_routine, bw_activate). The description is sufficient for an agent to understand the tool's role and constraints, though it could briefly mention that transformation_name is required (already in schema).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter described. The tool description adds critical semantics: mutual exclusivity of fields and exclude_fields, case-insensitivity, and the condition that field names must exist in the target segment. This goes beyond the schema's basic descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Edit' and the resource 'list of target fields' for the global END routine. It differentiates from siblings such as bw_set_transformation_routine (which creates the routine) and bw_activate (which activates after editing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit prerequisites (requires existing END routine), specifies mutually exclusive parameters (fields or exclude_fields), and lists rejection conditions. It indirectly suggests a workflow by returning a lock_handle for bw_activate. However, it does not explicitly state when not to use this tool (e.g., if the routine does not exist).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_set_transformation_runtimeA

Switch a Transformation between HANA and ABAP runtime. Only changes the HANARuntime attribute — no rule changes. The current runtime is read from the active version; if it already matches, returns early. Activates automatically and verifies the change landed in the active version — no separate bw_activate needed. Returns an error (not success) if the switch does not persist, e.g. when the server refuses HANA runtime for this transformation.

ParametersJSON Schema
NameRequiredDescriptionDefault
runtimeYes"hana" sets HANARuntime="true", "abap" sets HANARuntime="false".
transportNoTransport request number (e.g. DEVK900123). Only required if the BW system requires transport assignment.
transformation_nameYesTransformation name (UUID-like key).

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It does so by stating the tool only changes HANARuntime, reads from active version, activates automatically, verifies the change, and returns an error if the switch does not persist. It also notes no separate bw_activate is needed. Missing details on permissions or rate limits, but good overall.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph. It front-loads the purpose and then provides behavioral details. It is concise with no wasted words, though slightly dense.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 3 parameters, no output schema, and no annotations, the description covers purpose, behavior, and conditional error return. However, it does not specify the success output format (e.g., what is returned on success), leaving a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all three parameters. The description adds minimal value beyond the schema; it mostly reiterates what is already in the schema descriptions (e.g., runtime enum meanings, transport requirement condition). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool switches a transformation between HANA and ABAP runtime, modifying only the HANARuntime attribute. It distinguishes this from other transformation tools like bw_update_transformation which handle other changes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use the tool (to switch runtime) and notes early return if already matches. However, it does not explicitly state when not to use it or mention alternatives (e.g., bw_update_transformation for other changes).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_swap_process_chain_dtpA

Swap one DTP load variant for another in an existing Process Chain (RSPC), via the BW/4HANA Cockpit REST API. In-place edit: reads the current model, replaces the matching DTP_LOAD node's variant, and PUTs it back — edges and all other nodes are preserved unchanged. Prefer this over bw_update_process_chain for a single-variant swap, since it does not require re-specifying the whole chain. Optionally activates afterwards. A 412 on the PUT means the ETag was stale (chain modified between read and write); the error reports this explicitly.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
new_dtpYesDTP variant name to set instead (e.g. "DTP_NAME_NEW").
old_dtpYesDTP variant name currently in the chain (e.g. "DTP_NAME_OLD").
activateNoIf true, activate the chain immediately after the edit. Default false.
transport_requestNoOptional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.
refresh_descriptionNoIf true (default), pull the new variant's step description from its metadata. Cosmetic; the existing description is kept if metadata is unavailable.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Thoroughly describes the read-PUT-write mechanism, that edges and other nodes are preserved, and the ETag stale error (412). With no annotations, this fully covers behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Five sentences, each serving a clear purpose: purpose, mechanism, usage guidance, activation, error handling. Front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 6 parameters, the description covers the tool's behavior, error cases, parameter guidance, and relationship to siblings. Complete for an API tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds value: explains case-insensitivity for name, default values for activate and refresh_description, and the usage of transport_request for disambiguation. One point off because it's already well-covered in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Swap one DTP load variant for another in an existing Process Chain'. Uses specific verb+resource and explicitly distinguishes from sibling bw_update_process_chain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly recommends this tool over bw_update_process_chain for single-variant swaps, explains the in-place edit advantage, and describes when to use optional parameters like activate and transport_request.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_system_profileA

Find out what the connected BW system is and which of this server's tools will work on it. Distinguishes SAP BW/4HANA from classic SAP BW (7.5) via the system's own b4hanamode flag, lists which REST endpoint groups the system publishes, and verifies three preconditions: Accept-header handling (a broken one makes almost every call fail with HTTP 406 on BW 7.5), access to the ADT DataPreview service, and whether the BICS reporting resource is implemented. Call it before planning work on a system whose release you do not already know: the answer says which tool groups are available and which route to take where they are not — on classic BW, for instance, transformations, DTPs and the classic providers have no REST resource and are read with bw_read_metadata_tables instead. One call beats inferring the release from failed ones.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden, and it largely succeeds: it reveals that the tool checks three preconditions, explains the Accept-header failure mode (HTTP 406 on BW 7.5), and states what the response effectively exposes. It does not explicitly say whether the call is read-only or whether any side effects exist, but the described behavior strongly implies discovery and inspection.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and then expands into concrete behavioral details. It is longer than strictly necessary, with 'One call beats inferring the release from failed ones' being a slightly rhetorical closer, but nearly every sentence carries useful operational meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter profiling tool, the description is complete: it covers the release distinction, endpoint-group discovery, precondition checks, failure modes, and the alternate tool path when REST resources do not exist. An agent can decide when to invoke it and what the answer will actually mean.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so there is no semantic gap for the description to fill. The baseline of 4 applies, and the description correctly focuses on behavior rather than inventing parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Find out what the connected BW system is and which of this server's tools will work on it.' It clearly identifies the tool as a system-introspection/profiling capability and distinguishes it from the many sibling tools that perform CRUD or execution operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to call it 'before planning work on a system whose release you do not already know.' It also notes the alternative route on classic BW systems — reading transformations, DTPs, and classic providers with bw_read_metadata_tables instead of REST tools — giving an agent concrete routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_unlockA

Release a lock on a BW object without activating it. Use this to discard changes and free the lock, e.g. after an aborted create or update. For DTPs (dtpa) this releases the DTP framework enqueue lock (SM12: RSBKDTP) that can otherwise linger and block the next run or edit of the same DTP.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesObject name (e.g. "OBJECT_NAME").
object_typeYesObject type: adso, trfn, trcs, iobj, area (InfoArea), dtpa (DTP), hcpr (CompositeProvider) or alvl (Aggregation Level).

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It discloses that changes are discarded, the lock is freed without activation, and for DTPs the framework enqueue lock is released. It does not cover error conditions or authorization, but is transparent about core side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, no filler, and each sentence earns its place: the core action, the concrete use case, and the important DTP-specific caveat. Front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter, no-output-schema tool, the description is nearly complete. It covers behavior, use case, and a critical edge case. Minor gaps like idempotency or failure responses keep it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining the special meaning of dtpa (DTP framework enqueue lock) and how the object type/name combine in the unlock operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: 'Release a lock on a BW object without activating it.' It also differentiates from sibling actions like bw_activate by explicitly noting the operation does not activate the object.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit use context: 'Use this to discard changes and free the lock, e.g., after an aborted create or update.' It does not explicitly list alternatives or when-not-to-use cases, but the usage guidance is concrete and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_adsoA

Add/remove fields, change aDSO type/settings, manage key fields, or update individual field properties. action "add_field" (default): add one or more InfoObject-backed fields — infoobject_name required. action "remove_field": removes the field from the aDSO (and from the key if it was a key field). action "add_pure_field": add one or more pure (non-InfoObject) fields — pass fields array with name, label, data_type, optional length/precision/scale/aggregation_behavior/is_key. action "update_settings": change aDSO type preset and/or individual boolean flags — no infoobject_name needed. action "manage_keys": replace the complete key field list — pass key_fields array (empty = no key fields). action "update_field_properties": modify sidDeterminationMode, aggregationBehavior, fixedCurrency/Unit, a unit/currency field reference (unit_currency_field), the field group (dimension), or descriptions of a single field — pass field_name and properties. Field groups: pass "dimension" on add_field/add_pure_field to place new fields in the right group straight away — a field added without it lands in the catch-all group and moving it afterwards costs a second activation. Returns a lock_handle that must be passed to bw_activate to complete the operation. Sequence: bw_update_adso → bw_activate (adso) → bw_activate (trfn) → bw_activate (each dtpa).

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNo"add_field" (default), "remove_field", "add_pure_field", "update_settings", "manage_keys", or "update_field_properties".
fieldsNoPure field definitions for action "add_pure_field".
settingsNoSettings to apply (only for action "update_settings").
adso_nameYesaDSO name (e.g. "ADSO_NAME").
dimensionNoField group ("Feldgruppe") to place the field in, given as the bare group name — e.g. "__KEYFIGURES" for the key figure group or "ALL" for the catch-all. Must be a group the aDSO declares; an unknown name is rejected with the declared groups listed rather than silently falling back. Read the current assignment from the DIM column of bw_get_adso. Applies to every field added by this call (action "add_field").
transportNoTransport request number (e.g. DEVK900123). Only required if the BW system requires transport assignment.
field_nameNoField name to modify (only for action "update_field_properties"), e.g. "FIELD_NAME" or "AMOUNT_P".
key_fieldsNoList of field names that should be key fields (only for action "manage_keys"). Empty array removes all key fields.
propertiesNoField properties to update (only for action "update_field_properties").
infoobject_nameNoInfoObject name or comma-separated list to add or remove (e.g. "IOBJ_NAME" or "IOBJ_A,IOBJ_B"). Required for add_field and remove_field.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it honors that obligation: it states that remove_field also removes the field from the key if applicable, manage_keys replaces the complete list and allows an empty array, update_settings needs no infoobject_name, and adding a field without dimension falls into the catch-all group requiring an extra activation to move later. It also exposes the two-step lock+activate contract, which is a material behavioral side effect not evident from the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The text is front-loaded with a clear action list and each of the six actions is described in 1–2 focused lines. However, the description is verbose and recreates a lot of action detail as prose; it also interleaves related logical consequences (like dimension and activation cost) in a way that requires careful rereading. The length is justifiable for a 6-action tool with nested objects, but it could be tighter by moving purely recursive details such as field-group examples entirely into the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having no output schema, this definition is not only lists the lock_handle result but also gives the exact sequence of lock_handle return and success. It documents prerequisites (info_objects for add_field, the need for DIM from bw_get_adso, transport requirement conditionality), and all nested parameter structures. For a n-ten-parameter tool with complex nested objects, there are no decision-critical blank spots left.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema already covers 100% of the parameter names, the description adds non-mechanical meaning that is not in the schema: action-specific parameter dependencies, that an infoobject_name can be a comma-separated list, that key_fields=[] clears all keys, that unit_currency_field should be a field reference to a UNIT/CUKY field, and that a missing transport should only be supplied when the BW system requires it. It also explains subtle type behavior such as fixed-length/scale constraints for pure fields, so the agent can correctly compose calls without trying every combination.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a precise operation (updating an aDSO) and immediately breaks it into six specific, mutually exclusive actions, from adding/removing fields to updating settings and key management. This differentiates the tool from the sibling bw_get_adso and bw_create_adso by being the update/alter tool for aDSO resources. No ambiguity remains about what resource the tool operates on or what kinds of changes it can perform.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Every action is given its own clear condition and prerequisite: infoobject_name is required for add_field/remove_field, fields array only for add_pure_field, settings only for update_settings, field_name/properties for update_field_properties, and key_fields for manage_keys. The description also explicitly warns about the cost of forgetting dimension (a second activation) and tells the caller to read the current group assignment from bw_get_adso. This gives an agent concrete when-to-use and when-to-omit guidance, plus the required follow-up activation sequence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_aggregation_levelA

Add fields to or remove fields from an existing Aggregation Level (TLOGO ALVL). action "add_fields" exposes further characteristics or key figures of the underlying InfoProvider; action "remove_fields" drops them from the Aggregation Level. Fields already exposed (add) or not exposed at all (remove) are reported as skipped, not treated as errors. The Aggregation Level becomes inactive — activate it with bw_activate using object_type "alvl" and lock_handle "". A removal that would leave no characteristic or no key figure is refused before writing. On a CompositeProvider both the prefixed field name and the bare name are accepted.

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoDefaults to "add_fields".
fieldsYesFields to add or remove (e.g. ["FIELD_NAME", "IOBJ_NAME"]). Names are resolved against the underlying InfoProvider.
transportNoTransport request number. Required on systems with transport obligation.
aggregation_level_nameYesTechnical name of the Aggregation Level (e.g. "OBJECT_NAME").

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden–and it does well, disclosing that the object becomes inactive, that skips are not errors, that invalid removals are refused, and that CompositeProvider accepts both prefixed and bare names. It does not mention potential failure modes like authentication or transport-level permissions, but it covers the most decision-relevant behavioral side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but never verbose. It front-loads the core purpose and action names, then adds procedural, edge-case, and compatibility details in a logical order with almost no waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core operation, action-specific nuances, skipped-field behavior, post-update activation requirement, all fields the guard condition for removals, and special CompositeProvider handling. An agent has enough behavioral context to call this tool correctly even without annotations or an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already covers all 4 parameters well, giving a strong baseline. The description still adds meaningful semantics by explaining what add_fields and remove_fields actually do to the Aggregation Level, who field resolution works, and how CompositeProvider naming behaves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing Aggregation Level by adding or removing fields, with explicit action names. It distinguishes itself from related siblings like bw_create_aggregation_level and bw_get_aggregation_level by emphasizing modification of existing objects rather than creation or retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool: when fields need to be added to or removed from an existing Aggregation Level. It also explains the expected follow-up activation step with bw_activate, but it does not explicitly state when not to use it or name alternative update/create paths.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_composite_providerA

Change a CompositeProvider (HCPR): its fields, its source providers, their field mappings, the join condition, or root settings. Every action returns a lock_handle that must be passed to bw_activate (object type hcpr) — an HCPR cannot be activated without it. Fields: "add_field" (default) adds an element plus a mapping in every part provider supplying it, taking the field metadata from there; "remove_field" removes the element and all mappings referencing it. Sources: "add_input" attaches a source provider, creates the target elements it needs and returns the generated alias; "remove_input" strips one by alias, leaving its elements and any join reference behind. Mappings: "update_mapping" replaces the complete mapping list of one input; pass no mappings to map every field of its source one to one. This is also how an input attached at creation time gets its mappings. Joins: "update_join" sets the condition between one pair of inputs — call it once per pair to build an N-way join — and "remove_join" drops one pair. Note that both sides of a join key must be mapped onto the SAME target field, otherwise activation fails with "join fields need at least one common target field"; auto-mapping does not do this, so map the second side's key fields explicitly. Settings: "update_settings" edits label, stackable, default node and aggregation behaviour.

ParametersJSON Schema
NameRequiredDescriptionDefault
labelNoupdate_settings: new description.
actionNoDefaults to "add_field".
mappingsNoadd_input / update_mapping. Omit or pass an empty list to map every field of the source one to one.
join_typeNoupdate_join: "inner" (default), "leftOuter", etc. — lowercase first letter.
key_pairsNoupdate_join: the join key field pairs, named as they appear on each side's own source.
stackableNoupdate_settings.
transportNoOptional transport request (e.g. DEVK900123). Omit for local objects.
left_aliasNoupdate_join / remove_join: alias of the left input.
cardinalityNoupdate_join: defaults to "CN_N".
input_aliasNoremove_input / update_mapping: alias of the input (e.g. "U1.ADSO.1").
right_aliasNoupdate_join / remove_join: alias of the right input.
default_nodeNoupdate_settings: path reference to the default view node (e.g. "#///U1").
provider_nameNoadd_input: technical name of the source InfoProvider to attach.
provider_typeNoadd_input: TLOGO-style suffix used in the generated alias (e.g. "ADSO"). Defaults to "ADSO".
info_object_nameNoadd_field / remove_field: field name or comma-separated list (e.g. "IOBJ_NAME" or "IOBJ_A,IOBJ_B").
source_providersNoadd_field only. Comma-separated part provider names or aliases (e.g. "PROVIDER_NAME" or "U1.ADSO.1") to restrict which inputs get a mapping. Omit to map the field in every part provider that contains it.
aggregation_behaviourNoupdate_settings.
composite_provider_nameYesTechnical name of the CompositeProvider (e.g. "HCPR_NAME").

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden and succeeds admirably. It discloses side effects ('removes the element and all mappings referencing it', 'leaving its elements and any join reference behind'), the mandatory lock_handle return, replacement semantics of update_mapping, and the failure condition 'join fields need at least one common target field' plus the pitfall that 'auto-mapping does not do this'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long by necessity but front-loaded: the critical lock_handle activation requirement appears in the first two sentences. The body is organized under clearly labeled action groups ('Fields:', 'Sources:', 'Mappings:', 'Joins:', 'Settings:'), which aids scanning, though the dense semicolon-separated style makes some clauses hard to parse at a glance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of 18 parameters, an 8-action enum, and the absence of any output schema or annotations, the description covers every important behavior: each action's effect, defaults, return lock_handle, the join-failure edge case, and the four settings sub-values. Nothing critical for an agent to invoke this tool correctly remains unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, giving baseline 3, and the description adds meaningful semantics on top: which parameters apply to which of the eight actions, defaults (action 'add_field' is default, provider_type defaults to 'ADSO'), the empty-list-means-one-to-one mapping rule, and examples like 'U1.ADSO.1' and 'DEVK900123'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence names the operation verb ('Change'), the resource ('CompositeProvider (HCPR)'), and enumerates what can be changed: 'its fields, its source providers, their field mappings, the join condition, or root settings'. This clearly distinguishes it from siblings like bw_create_composite_provider, bw_get_composite_provider, and bw_activate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states the activation workflow: 'Every action returns a lock_handle that must be passed to bw_activate (object type hcpr) — an HCPR cannot be activated without it', naming the alternative tool directly. It also guides usage per action (e.g., 'This is also how an input attached at creation time gets its mappings'), though it never explicitly states 'use bw_create_composite_provider for creation instead'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_dtpA

Update DTP properties: description, the value selection of one filter field, extraction mode (Full vs Delta), and/or the semantic group. Use this for setting filter values on existing filter fields. A filter is written per field as a complete selection — a second call on the same field replaces the first, it does not add to it, so pass the whole value set at once. Note: switching extraction mode between Delta and Full (and back) has BW delta-init implications — a later delta load may require re-initialization of the delta on the source.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtp_nameYesDTP name to update (e.g. "DTP_...").
transportNoTransport request number. Required on systems with transport obligation.
descriptionNoNew description text for the DTP.
filter_fieldNoFilter field to set. Use the exact field name from bw_get_dtp; a name that does not exist is rejected. Requires filter_value or filter_selections.
filter_valueNoOne or more values for an Equal selection, comma-separated (e.g. "VAL1,VAL2,VAL3"). REPLACE semantics: the list is the complete selection of that field, so pass all values in one call. An empty string selects the BW initial value (not the literal "#"). For ranges, patterns, exclusions or values containing a comma, use filter_selections. Look values up with bw_get_filter_values first — a wrong value activates cleanly and filters everything away.
extraction_modeNoSwitch the DTP extraction mode. "full" sets extractionMode="F"; "delta" sets extractionMode="D" (only valid for delta-capable sources). Switching modes has delta-init implications — see the tool note.
filter_excludingNoIf true, all values of filter_value are excluded instead of included. Default false. Applies to filter_value only; filter_selections carries a sign per entry.
filter_selectionsNoFull selection vocabulary for one filter field, equivalent to an ABAP RANGE table. REPLACE semantics like filter_value, and mutually exclusive with it. Each entry is validated against the operators the field itself publishes, so an unsupported operator is an error instead of a silently ignored setting.
filter_clear_fieldsNoComma-separated list of field names whose value selections are removed. The field is deselected as well unless it carries a filter routine, which then stays the active filter.
semantic_group_fieldsNoComma-separated list of field names that form the semantic group (e.g. "FIELD_NAME,/BIC/FIELD_NAME"). Replaces the current selection completely: the listed fields become the semantic group, all others are deselected. Pass an empty string to clear the semantic group. Use bw_get_dtp to read the available group field names — they must match exactly, including any /BIC/ prefix.
transport_lock_holderNoTransport lock holder. The transport request that currently owns the object lock. Required on some systems when updating an existing object.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and does so exceptionally: it discloses REPLACE semantics ('a second call on the same field replaces the first, it does not add to it'), the delta-init re-initialization hazard when switching extraction modes, and the failure mode of a wrong filter value ('activates cleanly and filters everything away'). This goes far beyond what a terse 'Update DTP' would provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact for its payload: the first sentence, what? it's a large DTP with 11 params; all four sentences earn place. The behavior: REPLACE semantics is front-loaded rather than buried. No cleaned-up repetition between the description and the parameter schemas.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation tool with no annotations and no output schema, the description plus param schemata cover virually every prerequisite call the agent needs: exact field naming, value lookup, transport control site, delta-init side effects, and the clear the semantic-optional rules. The missing piece is the return outcome confirmation — whether the successful call returns an ack, a status object, or the updated DTP — which an agent cannot know in advance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter already has a rich description, so the baseline is 3. The tool description adds meaningful interaction-level semantics: the whole-selection contract, mutual exclusivity between filter_value and filter_selections, and the cross-tool reading order (bw_get_dtp' then bw_get_filter_values) — raising it to a 4 but not 5 since the schema itself does most parameter-legible work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a precise verb + resource statement: 'Update DTP properties' and enumerates the exact updateable aspects — description, value selection of one filter field, extraction mode, and semantic group. The phrase 'Use this for setting filter values on existing filter fields' differentiates it from the many bw_get_*/bw_create_*/bw_set_* siblings, especially bw_create_dtp and bw_set_dtp_filter_routine.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the intended use case clearly ('Use this for setting filter values on existing filter fields') and names prerequisite tools — bw_get_dtp for exact field names and bw_get_filter_values for valid values — giving an actionable call order. It does not explicitly state when NOT to use this tool or name the alternative for filter routines (bw_set_dtp_filter_routine), so the 'when-not/alternatives' bar is not fully met.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_infoobjectA

Update a Characteristic InfoObject: change description and/or replace the attribute list. Replaces all existing attributes with the supplied list (pass an empty array to remove all). Also supports Key Figure (KYF) updates: set fixed_unit or fixed_currency. Sequence: lock → GET → PUT → activate → unlock — all in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInfoObject name (e.g. "IOBJ_NAME").
transportNoWorkbench transport order number (e.g. "DEVK900000"). Required when object is in a non-local package.
attributesNoNew attribute list. Omit or pass [] to remove all attributes.
fixed_unitNoKYF only. Fixed unit of measure (e.g. "KWH", "M3"). Sets fixedUnit on a QUAN key figure.
descriptionNoNew short and long description text. Omit to keep existing.
fixed_currencyNoKYF only. Fixed currency (e.g. "EUR"). Sets fixedCurrency on a CURR key figure.

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description fully disclose side effects: replaces all attributes, internal sequence (lock, GET, PUT, activate, unlock), and supports both Characteristic and KYF updates. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences. First sentence states purpose, second provides essential behavioral details. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers core behaviors for both InfoObject types and internal sequence. Lacks error conditions or prerequisite notes, but sufficient given no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% coverage, but description adds significant context: explains that ommitting description keeps existing, attributes replaces list, transport required for non-local packages, and groups parameters by InfoObject type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool updates a Characteristic InfoObject, with specifics on changing description, replacing attributes, and handling Key Figure updates. It distinguishes from siblings like bw_create_infoobject and bw_get_infoobject.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance, but the purpose is clear. Implied usage for updating existing InfoObjects, but no comparison with alternatives like bw_delete or bw_move_object.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_infosourceA

Update an InfoSource — change description, add/remove fields, and update labels. Provide fields as an array of the fields to add, and remove_fields as an array of field names to delete; other existing fields are always preserved verbatim. Each field can reference an InfoObject (set infoobject_name) or be a local field (omit infoobject_name). Returns a lock_handle for bw_activate.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesInfoSource name (e.g. "INFOSOURCE_NAME").
fieldsNoFields to add (or whose label to update). Existing fields are preserved; omit to leave fields unchanged.
transportNoTransport request number (e.g. DEVK900123). Only required if the BW system requires transport assignment.
descriptionNoNew description text (optional — omit to leave unchanged).
remove_fieldsNoField names to remove from the InfoSource (e.g. FIELD_NAME). Other existing fields are preserved.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that existing fields are preserved, fields can reference InfoObjects or be local, and it returns a lock_handle. It lacks discussion of authorization or side effects but is sufficient for safe usage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured paragraph with three clear sentences. It is front-loaded with the main purpose and efficiently covers key behaviors and parameters without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 parameters and no output schema, the description provides a good overview, including the return value. It could be improved by mentioning error handling or prerequisites, but it is adequately complete given the schema richness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the preservation behavior, the distinction between InfoObject fields and local fields, and the lock_handle return. This goes beyond the schema's descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and the resource 'InfoSource', and specifies the modifiable aspects (description, fields, labels). It distinguishes itself from sibling tools like 'bw_create_infosource' and 'bw_get_infosource'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it (when updating an InfoSource) but does not explicitly differentiate from other update tools for different objects or provide when-not-to-use guidelines. No alternatives are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_process_chainA

Replace the step model (nodes and edges) of an existing Process Chain (RSPC) via the BW/4HANA Cockpit REST API. Reads the current chain to obtain the ETag and preserve the existing trigger node (with its scheduling configuration) and the current header. Replaces only the steps and edges; the trigger is always preserved as-is. Optionally overrides description and infoarea in the header. Optionally activates after the update. A 412 on the PUT means the ETag was stale (chain modified between read and write); the error reports this explicitly. Use bw_create_process_chain to create a new chain; use this tool to update an existing one. This tool REPLACES the whole step model, so every step that should survive must be listed — a step left out is deleted. For a small change to a big chain prefer the targeted tools (bw_append_process_chain_dtp, bw_add_process_chain_program, bw_add_process_chain_edge, bw_remove_process_chain_edge, bw_remove_process_chain_step), which edit the server's own model in place and cannot drop a step they do not model. Supported step types: DTP_LOAD (DTP load), ADSOACT (DSO data activation), ADSOREM (DSO request cleanup), ABAP (execute an ABAP program, optionally with an SE38 selection variant), CHAIN (start a local sub-chain, verified), DECISION (branch on a decision variant, requires the variant field), and collectors AND / OR / XOR; the start trigger is implicit. A generic referenced-step path (any process type string plus an object name, bIsReference=true) is available and verified for DTP_LOAD and CHAIN; for other types it may work but is untested. Other inline-configuration process types (for example OS command, attribute change run) are not supported in this version — a chain containing one cannot be rewritten with this tool without losing that step. Edges support on-success (positive) and unconditional (neutral) links; on-error (negative) links are accepted in the schema but not emitted by default. DECISION branch edges: set sub_status to the branch EVENTNO ("01"/"02"); such edges are always positive. The trigger is preserved as-is unless trigger_event is passed (which sets an event start-condition); an existing event start-condition is preserved across updates.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProcess chain technical name (e.g. "CHAIN_NAME"). Case-insensitive.
edgesYesComplete replacement edge list. Use the step id or the literal "TRIGGER" for the start node. Status defaults: "neutral" when the source is "TRIGGER" or a collector (AND/OR/XOR); "positive" otherwise. For a branch edge out of a DECISION node, set sub_status to the branch EVENTNO ("01"/"02"); such edges are forced to "positive".
stepsYesComplete replacement step list. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Same shape as in bw_create_process_chain.
activateNoIf true, activate the chain immediately after the update. Default false.
infoareaNoOptional new InfoArea. If omitted, the existing InfoArea is kept.
descriptionNoOptional new description. If omitted, the existing chain description is kept.
trigger_eventNoOptional event start-condition for the trigger (start type "E"). When omitted, an existing event start-condition is preserved and a non-event trigger stays immediate.
transport_requestNoOptional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full disclosure burden and meets it thoroughly: the destructive replacement semantics ('a step left out is deleted'), the stale-ETag 412 behavior with explicit error reporting, preservation of the trigger node and existing event start-condition, the fact that on-error negative links are accepted but not emitted by default, and the support boundary for untested/unsupported step types. No annotation contradicts the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long (~700 words), but the structure is exemplary: purpose first, then the core behavioral contract (read → preserve → replace), the safety-critical warning, named alternatives, then step types and edge semantics. Every sentence carries context-dependent information and there is no tautology or filler; it merely approaches the upper limit of what a single description should hold and would benefit from pushing some step-type detail into the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description carries the entire burden of agent-safe invocation. It covers the destructive edge (dropped steps), transport state ($TMP vs transportable), trigger semantics (implicit vs explicit event start), verified vs. unverified generic types, the ETag conflict path, and the full step-type catalog with required fields. Nothing a calling agent needs to decide whether to call, or what to pass, is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is 100%, the description adds crucial semantics the schema cannot express: the TRIGGER node is implicit and must be omitted from the step list, default edge statuses derive from source node type ('neutral' for TRIGGER/collector, 'positive' otherwise), re-specifying every existing ABAP step is required or it is dropped, 'program_variant' is an SE38 report variant distinct from the DECISION variant field, and transport_request auto-selection rules when exactly one request is available. These details turn a syntactically correct call into a semantically correct one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the operation concretely: 'Replace the step model (nodes and edges) of an existing Process Chain (RSPC)'. The verb 'Replace' plus the resource make the action unmistakable, and the description immediately contrasts with the create flow ('Use bw_create_process_chain to create a new chain; use this tool to update an existing one') and with targeted editing tools, so an agent cannot confuse it with any sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to and when-not-to guidance. It names the alternative tools for small edits (bw_append_process_chain_dtp, bw_add_process_chain_program, bw_add_process_chain_edge, bw_remove_process_chain_edge, bw_remove_process_chain_step) and explains the deciding factor — those tools 'edit the server's own model in place and cannot drop a step they do not model.' This is textbook usage routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_query_characteristicA

Set the display and access properties of the characteristics in an existing BW Query - the per-characteristic settings of the rows, columns, and free-characteristics areas: display of result rows, display as key/text, access type for result values (read mode), sorting, cumulation, display level, and the hierarchy assignment with its display options. Pass "*" as infoobject to apply one set of properties to every characteristic in the layout. Every property also accepts "default", which drops the explicit value and falls back to the InfoObject/query default. All specs are applied in a single save. Characteristics must already be in the layout - add them with bw_update_query_layout first. All names must be technical names (e.g. "QUERY_NAME", "CHAR_NAME").

ParametersJSON Schema
NameRequiredDescriptionDefault
transportNoTransport request number (e.g. DEVK900123). Only needed when the query lives on a transportable package; omit for $TMP queries.
query_nameYesTechnical name of the query to modify (e.g. "QUERY_NAME").
characteristicsYesOne entry per characteristic, or a single entry with infoobject "*" for all of them.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reasonably discloses the important behavioral traits: applying to every characteristic with '*', accepting 'default' to fall back, applying all specs in a single save, and requiring the characteristic to already exist in the layout. It does not describe output/response or rollback behavior, which prevents a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core action and product, then packs the key variants of the trait into a long but informative list. It contains no real filler, although the run-on enumeration and the slight overgeneralization about 'default' keep it from being a model of discretion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The definition is complete enough for a complicated tool with a rich input schema: it explains the wildcard infoobject, the meaning of 'default', the single-save behavior, the necessity of a prior layout, and the need for technical names. It is less complete about the return contract or what happens after a failed save, but the operation itself is clearly described.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full descriptions for all parameters, so the description did not need to compensate heavily. It does add useful shorthand about 'default' and '*' semantics, but the statement that 'Every property also accepts default' is overbroad because the schema excludes 'default' from several enums items such as text_type and sorting.direction. Because schema coverage is 100%, the baseline is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a concrete verb-resource pairing: 'Set the display and access properties of the characteristics in an existing BW Query.' It enumerates the exact property groups affected (result rows, display as key/text, access type, sorting, etc.), which distinguishes it from related update tools like bw_update_query_layout, bw_update_query_key_figures, and bw_update_query_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states an explicit precondition: characteristics must already exist in the layout, and routes the agent to bw_update_query_layout if they need to be added first. It could be stronger by naming the alternative tools it should not be used for, but the very-specific scope ('characteristics' in a query layout) provides enough usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_query_filterA

Modify an existing BW Query filter. Supported restrictions: fixed values — single values, intervals (via "high"), and exclusions (via "exclude") — and reusable variable references (via "set_variable"). All operations are applied in a single save. Key figure members are not yet supported. All names must be technical names (e.g. "IOBJ_NAME", "QUERY_NAME", "VAR_NAME").

ParametersJSON Schema
NameRequiredDescriptionDefault
transportNoTransport request number (e.g. DEVK900123). Only needed when the query lives on a transportable package; omit for $TMP queries.
operationsYesFilter changes to apply in one save cycle.
query_nameYesTechnical name of the query to modify (e.g. "QUERY_NAME").

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Lacking annotations, the description carries the burden. It discloses that operations are applied in a single save and that key figure members are unsupported, but does not address side effects, permissions, reversibility, or failure behavior. Adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise: three sentences covering purpose, supported operations, naming rules, and a limitation. Front-loaded with the core action, no extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should clarify return behavior (e.g., success indication), which it omits. It does cover the main use case, operations, and limitations, but lacks completeness on what the tool returns after modification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context about technical naming conventions and unsupported key figure members, though much of this information is already in the schema descriptions. No significant new semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the verb 'Modify', the resource 'BW Query filter', and the supported restriction types. It distinguishes from siblings like bw_update_query_layout or bw_update_query_key_figures by focusing specifically on filters.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by listing supported operations and limitations (no key figure members), but does not explicitly state when to use this tool versus alternatives (e.g., update_layout, update_key_figures). No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_query_key_figuresA

Manage the key figure structure of an existing BW Query: add basic key figures, add references to reusable CKFs/RKFs (with optional local restrictions), add local formula members (recursive operator/operand tree), set member display properties (decimals, hidden, sign inversion) and exception aggregation, and remove members. All operations are applied in a single save. Member operations also apply to a reusable key figure structure referenced via bw_update_query_layout add_structure. All names must be technical names (e.g. "IOBJ_NAME", "CKF_NAME", "QUERY_NAME").

ParametersJSON Schema
NameRequiredDescriptionDefault
transportNoTransport request number (e.g. DEVK900123). Only needed when the query lives on a transportable package; omit for $TMP queries.
operationsYesKey figure changes to apply in one save cycle.
query_nameYesTechnical name of the query to modify (e.g. "QUERY_NAME").
structure_targetNoContainer for the key figure structure when it is created by the first add operation (default "columns"). Ignored once a structure already exists.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It thoroughly describes the tool's behavior: all operations are applied in a single save, it handles local restrictions, formula trees, and member properties. However, it does not explicitly state whether mutations are permanent or if write permissions are required, which would enhance transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the main purpose but is quite lengthy (about 20 lines) due to extensive formula details and edge cases. While these details are valuable, the description could be more concise by moving some technical specifics to the schema or a separate note. As is, it is adequately structured but not optimally succinct.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (multiple operation types, recursive formula structures, optional restrictions), the description is comprehensive. It provides necessary context for operations, formula encoding, and interaction with reusable structures. The lack of an output schema means no return value explanation is needed. However, it omits error conditions and behavior for non-existent queries, which keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description adds significant value by explaining the formula tree in detail (recursive node types, operator codes, infix/prefix handling), which goes beyond schema descriptions. It also clarifies the 'structure_target' behavior and the interaction with reusable structures. This justifies a score above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Manage the key figure structure of an existing BW Query' and lists specific operations (add key figures, references, formulas, set properties, remove members). It distinguishes itself from sibling tools by specifying it targets key figure structures, and mentions a related tool 'bw_update_query_layout add_structure' for reusable structures, providing differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (modifying key figure structures, single save operation) but does not explicitly state when to use this tool versus alternatives. It mentions that operations also apply to a reusable structure referenced via another tool, but lacks guidance on prerequisites, when not to use, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_query_layoutA

Modify an existing BW Query layout: add or remove characteristics in the rows, columns, or free-characteristics area, and add or remove references to reusable structures (a structure is a layout container). All operations are applied in a single save. All names must be technical names (e.g. "IOBJ_NAME", "STRUCTURE_NAME", "QUERY_NAME").

ParametersJSON Schema
NameRequiredDescriptionDefault
transportNoTransport request number (e.g. DEVK900123). Only needed when the query lives on a transportable package; omit for $TMP queries.
operationsYesLayout changes to apply in one save cycle.
query_nameYesTechnical name of the query to modify (e.g. "QUERY_NAME").

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description is the sole source. It discloses single-save behavior and technical naming requirement but lacks details on failure modes, authorization needs, or what happens if layout doesn't exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three clear sentences, front-loaded with purpose, then transactional behavior and naming convention. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description covers operation types, target containers, and naming. Missing details on error handling or what happens with invalid operations, but adequate for typical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context like 'structure is a layout container' and emphasizes technical names, but the schema already describes each parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Modify an existing BW Query layout' which clearly states the verb and resource. It enumerates specific actions (add/remove characteristics, add/remove structure references) that distinguish this from sibling query tools like bw_update_query_filter or bw_update_query_settings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'All operations are applied in a single save,' implying bundling. While the purpose is clear, there is no explicit guidance on when to use vs alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_query_settingsA

Change query-level display and behaviour settings of an existing BW Query (description, zero suppression, result position, sign presentation, zero presentation, universal display hierarchy, document links, and related flags). Only the provided settings are applied in a single save. The InfoProvider, technical name, and package cannot be changed. All names must be technical names (e.g. "QUERY_NAME").

ParametersJSON Schema
NameRequiredDescriptionDefault
transportNoTransport request number (e.g. DEVK900123). Only needed when the query lives on a transportable package; omit for $TMP queries.
query_nameYesTechnical name of the query to modify (e.g. "QUERY_NAME").
descriptionNoQuery description text.
document_linksNoDocument link visibility.
adjust_formattingNoAdjust formatting.
sign_presentationNoSign presentation (e.g. "inFrontOf", "after").
result_position_topNoPlace the result row on top.
show_scaling_factorNoShow the scaling factor.
result_position_leftNoPlace the result column on the left.
zero_suppression_rowsNoSuppress zero-value rows.
hierarchy_display_rowsNoUniversal display hierarchy for rows.
zero_presentation_kindNoZero presentation kind (e.g. "withCurrency").
zero_suppression_columnsNoSuppress zero-value columns.
hierarchy_display_columnsNoUniversal display hierarchy for columns.
suppress_repeated_key_valuesNoSuppress repeated key values.
zero_presentation_custom_valueNoCustom value shown for zeros.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states the tool modifies an existing query, applies only provided settings in one save, and lists immutable fields. It does not mention side effects, authorization needs, or concurrency considerations, but it covers basic behavioral traits adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences long, each with a clear role: first states what the tool does, second clarifies partial updates, third lists what cannot be changed and naming convention. No redundant words; efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (16 parameters, nested objects) and no output schema, the description provides a solid overview. It covers the tool's effect, scope, and constraints. It could mention prerequisites like the query must exist, but the description is largely complete for an update tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already describes each parameter. The description adds context by listing the categories of settings and noting that names must be technical names, but does not provide additional semantics beyond what the schema offers.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses 'change' as the verb and specifies 'query-level display and behaviour settings', distinguishing it from sibling tools like bw_update_query_layout which handle layout. It lists specific settings (zero suppression, result position, sign presentation, etc.), making the purpose 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Only the provided settings are applied in a single save', indicating partial updates. It also says which properties cannot be changed (InfoProvider, technical name, package). However, it does not explicitly mention when to use this tool versus siblings like bw_update_query_filter, though the context makes it clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_update_transformationA

Map a source field to a target InfoObject in a Transformation, or convert an existing rule to a field routine (StepRoutine) or formula rule (StepFormula). rule_type="direct" (default): changes a StepNoUpdate/StepInitial rule to StepDirect. rule_type="routine": converts an existing StepDirect, StepInitial, or StepNoUpdate rule to StepRoutine (AMDP field routine). rule_type="formula": converts an existing rule to StepFormula — no ABAP class generated, BW evaluates the formula natively. rule_type="constant": sets a fixed constant value on the target field — no source field needed. For routine/formula on StepNoUpdate rules, source_field is required. For routine/formula on StepDirect/StepInitial rules, source_field is ignored (field is already mapped). source_field is always ignored for rule_type="constant". rule_type="direct" with unit_source_field set: creates a COMBINED key-figure + unit/currency direct rule (multi-source/target) — maps a quantity together with its unit (or an amount with its currency) in one rule, as the Eclipse rule editor shows it. Returns a lock_handle for bw_activate.

ParametersJSON Schema
NameRequiredDescriptionDefault
formulaNoFormula expression for rule_type="formula" (required). Source fields are referenced by their technical field name: use /BIC/FIELDNAME for custom InfoObjects (e.g. "/BIC/FIELD_NAME + 10"), or the direct field name for standard InfoObjects. Operators: +, -, *, /. Functions: IF, ABS, CONCATENATE, DATE_YEAR, etc. Comparison operators < > <= >= <> are supported (will be XML-escaped automatically).
rule_typeNoRule type to assign. "direct" (default): maps source field directly (StepDirect). "routine": converts the rule to an AMDP field routine (StepRoutine) — the server generates the ABAP class automatically. "formula": converts the rule to a formula rule (StepFormula) — requires the formula parameter. "constant": sets a fixed constant value (StepConstant) — requires the constant_value parameter, source_field is ignored. "lookup": converts the rule to a StepRead (Lookup) rule — requires lookup_object and lookup_object_type. "no_update": reverts any existing mapping back to StepNoUpdate (no mapping, field stays empty). IMPORTANT: AMDP SQLSCRIPT methods only allow ASCII 7-bit characters — no German umlauts or special symbols in code or comments.
transportNoTransport request number (e.g. DEVK900123). Only required if the BW system requires transport assignment.
source_fieldNoSource field name in the source segment (e.g. "FIELD_NAME"). Required for rule_type="direct" if the existing rule has no source mapping. Also required for routine/formula when the target has no source mapping yet (StepNoUpdate). Required for rule_type="lookup".
lookup_objectNoName of the InfoObject or aDSO to read from (Nachlese-Objekt). Required for rule_type="lookup".
constant_valueNoConstant value for rule_type="constant" (required). The value is written as-is into the target field during data loading. Example: "X" for a flag field, "USD" for a currency field.
target_infoobjectYesTarget InfoObject name in the target segment (e.g. "IOBJ_NAME").
unit_source_fieldNoSource unit/currency field for a COMBINED key-figure + unit/currency direct rule (rule_type="direct"). When set, target_infoobject is the key figure and this is the source field that fills its unit or currency. The target unit/currency field is derived automatically from the key figure's unit reference in the aDSO (the target key figure must reference a unit/currency field). The standalone unit/currency rule is folded into the combined rule and the transformation's currency/unit handling is switched on. Example: target_infoobject="QUANTITY", unit_source_field="QUANTITYUNIT".
lookup_object_typeNoType of the lookup object. "IOBJ" for InfoObject, "ADSO" for aDSO. Required for rule_type="lookup".
transformation_nameYesTransformation name (UUID-like key).
additional_source_fieldsNoAdditional source fields for rule_type="formula" when the formula references more than one source field. Combined with source_field, all listed fields are registered as inputs on the StepFormula rule. Example: ["QUANTITY_SOLD", "COST_PER_UNIT"].

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully discloses behaviors: how rule_type affects transformation, handling of combined rules, parameter dependencies, and return value (lock_handle). No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is informative and well-structured, though slightly lengthy. Every sentence adds value, but could be trimmed slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (11 params, no output schema), the description covers all rule types, parameter dependencies, and return values. It could mention error cases or prerequisites but is otherwise complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds value with examples (e.g., formula syntax, unit_source_field usage) beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: mapping a source field to a target InfoObject or converting an existing rule to a routine or formula. It distinguishes from sibling tools by focusing on updates to transformation rules.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides detailed guidance on when to use each rule_type, with conditions and examples. It lacks explicit comparison to alternative tools but covers usage context well.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bw_xrefA

Find where-used / dependencies for a BW object. Returns all objects that reference the given object. Use this to find the Transformation and DTPs that reference an aDSO, or to find which DTPs depend on a Transformation. Use object_type=DTPA to find the process chain(s) a DTP belongs to — this is preferred over bw_get_dtp when only the process chain is needed.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_nameYesObject name (e.g. "ADSO_NAME" or "TRFN_UUID_KEY").
object_typeYesObject type: ADSO, TRFN, DTPA, IOBJ, etc.
source_systemNoRequired for object_type "RSDS". Logical source system name (e.g. "LSYS_NAME"). The correct padded objectName is built automatically.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so description carries full burden. It discloses that source_system is required for RSDS and that the padded objectName is built automatically, but does not mention return format or side effects; however, as a read-only lookup, this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, each adding distinct value: purpose, examples, special case, and comparison with sibling. No redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers when and how to use, but lacks description of the return value (a list of references) since no output schema is provided. Minor gap given the tool's simplicity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description enriches semantics by specifying that object_type=DTPA finds process chains and that source_system triggers auto-construction of objectName for RSDS.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Find where-used / dependencies') and resource ('BW object'), and clearly distinguishes from sibling tools like bw_get_dtp by mentioning it is preferred when only the process chain is needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (find dependencies) with concrete examples (Transformations, DTPs referencing aDSO) and provides an alternative (preferred over bw_get_dtp for process chain lookup).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 22 tool updatesv1.4.0
    • Changedbw_activate3 fields changed
      • changedInput schema / properties / lock_handle / description
        Previous value: -"Lock handle from bw_update_adso or bw_update_transformation. Use empty string \"\" for DTP and DataSource (rsds) activation."New value: +"Lock handle from bw_update_adso or bw_update_transformation. Use empty string \"\" for DTP and DataSource (rsds) activation, and for an Aggregation Level (alvl) created with bw_create_aggregation_level."
      • changedInput schema / properties / object_type / description
        Previous value: -"Object type: adso, trfn, dtpa, iobj, trcs, rsds (DataSource), or hcpr (CompositeProvider)."New value: +"Object type: adso, trfn, dtpa, iobj, trcs, rsds (DataSource), hcpr (CompositeProvider), or alvl (Aggregation Level)."
      • changedInput schema / properties / object_type / enum
        Previous value: -[
        -  "adso",
        -  "trfn",
        -  "dtpa",
        -  "iobj",
        -  "trcs",
        -  "rsds",
        -  "hcpr"
        -]New value: +[
        +  "adso",
        +  "trfn",
        +  "dtpa",
        +  "iobj",
        +  "trcs",
        +  "rsds",
        +  "hcpr",
        +  "alvl"
        +]
    • Addedbw_add_process_chain_edge
    • Changedbw_append_process_chain_dtp5 fields changed
      • changedInput schema / properties / adsoact / description
        Previous value: -"Optional aDSO name (e.g. \"ADSO_NAME\"). When given, an ADSOACT step activating this aDSO is added right after the DTP (per-DTP activation)."New value: +"Optional aDSO name (e.g. \"ADSO_NAME\"). When given, an ADSOACT step activating this aDSO is added right after the DTP (per-DTP activation) and the two form one block that is placed together."
      • addedInput schema / properties / after
        Added value: +{
        +  "description": "Insert the block IN SERIES AFTER this node — it runs between the target and its former successors. Mutually exclusive with \"before\".",
        +  "type": "string"
        +}
      • addedInput schema / properties / before
        Added value: +{
        +  "description": "Insert the block IN SERIES BEFORE this node: the target's incoming edges are rerouted into the block, then the block links to the target. Node reference — see the note below. Mutually exclusive with \"after\".",
        +  "type": "string"
        +}
      • changedInput schema / properties / edge_mode / description
        Previous value: -"\"both\" (default): add an on-success and an on-error edge per link. \"success_only\": add only the on-success edge."New value: +"\"both\" (default): add an on-success AND an on-error edge per link, so the successor runs even after a failed load (\"always continue\"). \"success_only\": add only the on-success edge. Match whatever the chain's existing steps use — the default adds an error edge that a success-only chain does not have."
      • changedInput schema / properties / predecessor / description
        Previous value: -"Node to append behind: a DTP variant name, an aDSO whose ADSOACT node holds it, or the literal \"strand_end_auto\" (default). For \"strand_end_auto\" the terminal node closest to the trigger is chosen (ties → first)."New value: +"Used only when neither before nor after is given. Node to APPEND behind, or the literal \"strand_end_auto\" (default = terminal node closest to the trigger, ties → first). An append leaves the target's existing successors untouched, so the new block runs in parallel to them — pass before/after instead when it must run in sequence. Node reference forms (same for before / after / predecessor): a DTP or process-variant name; an aDSO held by an ADSOACT/ADSOREM node; the program of an ABAP step, or \"PROGRAM/VARIANT\"; \"TRIGGER\" or a collector type (\"AND\"/\"OR\"); or \"#<index>\" using the step numbers printed by bw_get_process_chain. An ambiguous name is rejected with the candidates listed — use \"#<index>\" then."
    • Addedbw_create_aggregation_level
    • Addedbw_create_composite_provider
    • Changedbw_create_dtp5 fields changed
      • removedInput schema / properties / filter_dta_name
        Removed value: -{
        -  "description": "Internal dtaName for the filter field.",
        -  "type": "string"
        -}
      • addedInput schema / properties / filter_excluding
        Added value: +{
        +  "description": "If true, all values of filter_value are excluded instead of included. Default false. Applies to filter_value only; filter_selections carries a sign per entry.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / filter_field / description
        Previous value: -"Field name to filter on. Requires filter_dta_name and filter_value."New value: +"Filter field to set. Use the exact field name from bw_get_dtp; a name that does not exist is rejected. Requires filter_value or filter_selections."
      • addedInput schema / properties / filter_selections
        Added value: +{
        +  "description": "Full selection vocabulary for one filter field, equivalent to an ABAP RANGE table. REPLACE semantics like filter_value, and mutually exclusive with it. Each entry is validated against the operators the field itself publishes, so an unsupported operator is an error instead of a silently ignored setting.",
        +  "items": {
        +    "properties": {
        +      "high": {
        +        "description": "Upper bound. Only for operator \"Between\", where it is mandatory.",
        +        "type": "string"
        +      },
        +      "low": {
        +        "description": "Value, lower bound (Between) or pattern (ContainsPattern). Empty string = BW initial value.",
        +        "type": "string"
        +      },
        +      "operator": {
        +        "description": "Selection operator (default \"Equal\"). RANGE equivalents: EQ = Equal, NE = NotEqual, BT = Between, CP = ContainsPattern (use \"*\" as the wildcard), GT/GE/LT/LE = the comparison operators. The comparison operators are include-only on the fields seen so far; the field metadata decides.",
        +        "enum": [
        +          "Equal",
        +          "NotEqual",
        +          "Between",
        +          "ContainsPattern",
        +          "GreaterThan",
        +          "GreaterEqual",
        +          "LessThan",
        +          "LessEqual"
        +        ],
        +        "type": "string"
        +      },
        +      "sign": {
        +        "description": "I = include (default), E = exclude. Includes and excludes may be mixed on one field.",
        +        "enum": [
        +          "I",
        +          "E"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "low"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / filter_value / description
        Previous value: -"Filter value for the Equal selection (e.g. \"PL_001\")."New value: +"One or more values for an Equal selection, comma-separated (e.g. \"VAL1,VAL2,VAL3\"). REPLACE semantics: the list is the complete selection of that field, so pass all values in one call. An empty string selects the BW initial value (not the literal \"#\"). For ranges, patterns, exclusions or values containing a comma, use filter_selections. Look values up with bw_get_filter_values first — a wrong value activates cleanly and filters everything away."
    • Changedbw_create_process_chain10 fields changed
      • changedInput schema / properties / steps / description
        Previous value: -"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."New value: +"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), ABAP (requires program field, optional program_variant), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."
      • addedInput schema / properties / steps / items / properties / local
        Added value: +{
        +  "description": "ABAP only. Call location. true (default) runs the program on this system (X_LOCAL). Only the default is verified.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / steps / items / properties / object / description
        Previous value: -"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, ADSOREM, AND, OR, XOR)."New value: +"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, ADSOREM, ABAP, AND, OR, XOR)."
      • addedInput schema / properties / steps / items / properties / program
        Added value: +{
        +  "description": "ABAP program / report to execute (e.g. \"REPORT_NAME\"). Required when type is \"ABAP\". The call is stored as an inline variant in the chain — no separate variant object is created.",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / program_description
        Added value: +{
        +  "description": "ABAP only. Optional report description (cosmetic).",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / program_package
        Added value: +{
        +  "description": "ABAP only. Optional package of the report (cosmetic value-help enrichment; the server re-derives it when omitted).",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / program_variant
        Added value: +{
        +  "description": "ABAP only. Optional ABAP report (SE38) selection variant name (e.g. \"VARIANT_NAME\"). Note this is a report variant, not the DECISION variant field above.",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / synchronous
        Added value: +{
        +  "description": "ABAP only. Call mode. true (default) runs the program synchronously (X_SYNCHRON). Only the default is verified.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / steps / items / properties / type / description
        Previous value: -"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."New value: +"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"ABAP\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."
      • addedInput schema / properties / steps / items / properties / variant_description
        Added value: +{
        +  "description": "ABAP only. Optional report-variant description (cosmetic).",
        +  "type": "string"
        +}
    • Addedbw_create_variable
    • Addedbw_get_remodeling_request
    • Addedbw_list_remodeling_requests
    • Addedbw_read_metadata_tables
    • Addedbw_remove_process_chain_edge
    • Addedbw_remove_process_chain_step
    • Addedbw_run_remodeling
    • Addedbw_system_profile
    • Changedbw_unlock2 fields changed
      • changedInput schema / properties / object_type / description
        Previous value: -"Object type: adso, trfn, trcs, iobj, area (InfoArea), or dtpa (DTP)."New value: +"Object type: adso, trfn, trcs, iobj, area (InfoArea), dtpa (DTP), hcpr (CompositeProvider) or alvl (Aggregation Level)."
      • changedInput schema / properties / object_type / enum
        Previous value: -[
        -  "adso",
        -  "trfn",
        -  "trcs",
        -  "iobj",
        -  "area",
        -  "dtpa"
        -]New value: +[
        +  "adso",
        +  "trfn",
        +  "trcs",
        +  "iobj",
        +  "area",
        +  "dtpa",
        +  "hcpr",
        +  "alvl"
        +]
    • Changedbw_update_adso3 fields changed
      • addedInput schema / properties / dimension
        Added value: +{
        +  "description": "Field group (\"Feldgruppe\") to place the field in, given as the bare group name — e.g. \"__KEYFIGURES\" for the key figure group or \"ALL\" for the catch-all. Must be a group the aDSO declares; an unknown name is rejected with the declared groups listed rather than silently falling back. Read the current assignment from the DIM column of bw_get_adso. Applies to every field added by this call (action \"add_field\").",
        +  "type": "string"
        +}
      • addedInput schema / properties / fields / items / properties / dimension
        Added value: +{
        +  "description": "Field group (\"Feldgruppe\") to place the field in, given as the bare group name — e.g. \"__KEYFIGURES\" for the key figure group or \"ALL\" for the catch-all. Must be a group the aDSO declares; an unknown name is rejected with the declared groups listed rather than silently falling back. Read the current assignment from the DIM column of bw_get_adso.",
        +  "type": "string"
        +}
      • addedInput schema / properties / properties / properties / dimension
        Added value: +{
        +  "description": "Field group (\"Feldgruppe\") to place the field in, given as the bare group name — e.g. \"__KEYFIGURES\" for the key figure group or \"ALL\" for the catch-all. Must be a group the aDSO declares; an unknown name is rejected with the declared groups listed rather than silently falling back. Read the current assignment from the DIM column of bw_get_adso. Moves the field between groups without touching any other property.",
        +  "type": "string"
        +}
    • Addedbw_update_aggregation_level
    • Addedbw_update_composite_provider
    • Changedbw_update_dtp7 fields changed
      • changedInput schema / properties / filter_clear_fields / description
        Previous value: -"Comma-separated list of field names whose filter selections should be removed entirely."New value: +"Comma-separated list of field names whose value selections are removed. The field is deselected as well unless it carries a filter routine, which then stays the active filter."
      • removedInput schema / properties / filter_dta_name
        Removed value: -{
        -  "description": "Internal dtaName for the filter field. Reserved for future use.",
        -  "type": "string"
        -}
      • changedInput schema / properties / filter_excluding / description
        Previous value: -"If true, the filter excludes the given values (excluding=\"true\"). Default false (inclusive)."New value: +"If true, all values of filter_value are excluded instead of included. Default false. Applies to filter_value only; filter_selections carries a sign per entry."
      • changedInput schema / properties / filter_field / description
        Previous value: -"Field name to filter on. Requires filter_value."New value: +"Filter field to set. Use the exact field name from bw_get_dtp; a name that does not exist is rejected. Requires filter_value or filter_selections."
      • addedInput schema / properties / filter_selections
        Added value: +{
        +  "description": "Full selection vocabulary for one filter field, equivalent to an ABAP RANGE table. REPLACE semantics like filter_value, and mutually exclusive with it. Each entry is validated against the operators the field itself publishes, so an unsupported operator is an error instead of a silently ignored setting.",
        +  "items": {
        +    "properties": {
        +      "high": {
        +        "description": "Upper bound. Only for operator \"Between\", where it is mandatory.",
        +        "type": "string"
        +      },
        +      "low": {
        +        "description": "Value, lower bound (Between) or pattern (ContainsPattern). Empty string = BW initial value.",
        +        "type": "string"
        +      },
        +      "operator": {
        +        "description": "Selection operator (default \"Equal\"). RANGE equivalents: EQ = Equal, NE = NotEqual, BT = Between, CP = ContainsPattern (use \"*\" as the wildcard), GT/GE/LT/LE = the comparison operators. The comparison operators are include-only on the fields seen so far; the field metadata decides.",
        +        "enum": [
        +          "Equal",
        +          "NotEqual",
        +          "Between",
        +          "ContainsPattern",
        +          "GreaterThan",
        +          "GreaterEqual",
        +          "LessThan",
        +          "LessEqual"
        +        ],
        +        "type": "string"
        +      },
        +      "sign": {
        +        "description": "I = include (default), E = exclude. Includes and excludes may be mixed on one field.",
        +        "enum": [
        +          "I",
        +          "E"
        +        ],
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "low"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / filter_value / description
        Previous value: -"Filter value(s) for the selection. Comma-separated for multiple values (e.g. \"VAL1,VAL2\")."New value: +"One or more values for an Equal selection, comma-separated (e.g. \"VAL1,VAL2,VAL3\"). REPLACE semantics: the list is the complete selection of that field, so pass all values in one call. An empty string selects the BW initial value (not the literal \"#\"). For ranges, patterns, exclusions or values containing a comma, use filter_selections. Look values up with bw_get_filter_values first — a wrong value activates cleanly and filters everything away."
      • addedInput schema / properties / semantic_group_fields
        Added value: +{
        +  "description": "Comma-separated list of field names that form the semantic group (e.g. \"FIELD_NAME,/BIC/FIELD_NAME\"). Replaces the current selection completely: the listed fields become the semantic group, all others are deselected. Pass an empty string to clear the semantic group. Use bw_get_dtp to read the available group field names — they must match exactly, including any /BIC/ prefix.",
        +  "type": "string"
        +}
    • Changedbw_update_process_chain8 fields changed
      • addedInput schema / properties / steps / items / properties / local
        Added value: +{
        +  "description": "ABAP only. Call location. true (default) runs the program on this system (X_LOCAL). Only the default is verified.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / steps / items / properties / program
        Added value: +{
        +  "description": "ABAP program / report to execute (e.g. \"REPORT_NAME\"). Required when type is \"ABAP\". The call is stored as an inline variant in the chain — no separate variant object is created. Re-specify every existing ABAP step here, otherwise the replacement drops it; read the current program and report variant from bw_get_process_chain.",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / program_description
        Added value: +{
        +  "description": "ABAP only. Optional report description (cosmetic).",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / program_package
        Added value: +{
        +  "description": "ABAP only. Optional package of the report (cosmetic value-help enrichment; the server re-derives it when omitted).",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / program_variant
        Added value: +{
        +  "description": "ABAP only. Optional ABAP report (SE38) selection variant name (e.g. \"VARIANT_NAME\"). Note this is a report variant, not the DECISION variant field above. Omitting it on an existing step silently drops the step's selection variant.",
        +  "type": "string"
        +}
      • addedInput schema / properties / steps / items / properties / synchronous
        Added value: +{
        +  "description": "ABAP only. Call mode. true (default) runs the program synchronously (X_SYNCHRON). Only the default is verified.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / steps / items / properties / type / description
        Previous value: -"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."New value: +"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"ABAP\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."
      • addedInput schema / properties / steps / items / properties / variant_description
        Added value: +{
        +  "description": "ABAP only. Optional report-variant description (cosmetic).",
        +  "type": "string"
        +}
    • Addedbw_update_query_characteristic
  2. 25 tool updatesv1.2.0
    • Addedbw_add_process_chain_error_links
    • Addedbw_add_process_chain_program
    • Addedbw_append_process_chain_dtp
    • Addedbw_change_datasource_delta
    • Addedbw_create_decision_variant
    • Changedbw_create_dtp2 fields changed
      • addedInput schema / properties / target_object_subtype
        Added value: +{
        +  "description": "InfoObject sub-object to load into. Only applies when target_type is \"IOBJ\". ATTR (default) = attributes/master data (IOBJA), TEXT = texts (IOBJT), HIER = hierarchies (IOBJH). Must match the sub-object the transformation chain targets.",
        +  "enum": [
        +    "ATTR",
        +    "TEXT",
        +    "HIER"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / target_type / description
        Previous value: -"Target object type (e.g. \"ADSO\"). Use \"IOBJ\" to load into an InfoObject's attributes (encoded server-side as IOBJA). InfoObject text/hierarchy targets (IOBJT/IOBJH) are not yet supported."New value: +"Target object type (e.g. \"ADSO\"). Use \"IOBJ\" to load into an InfoObject; the loaded sub-object (attributes / texts / hierarchies) is selected with target_object_subtype."
    • Changedbw_create_process_chain9 fields changed
      • changedInput schema / properties / edges / description
        Previous value: -"Directed edges connecting steps. Use the step id or the literal \"TRIGGER\" for the start node. Status defaults: \"neutral\" when the source is \"TRIGGER\" or a collector (AND/OR/XOR); \"positive\" otherwise."New value: +"Directed edges connecting steps. Use the step id or the literal \"TRIGGER\" for the start node. Status defaults: \"neutral\" when the source is \"TRIGGER\" or a collector (AND/OR/XOR); \"positive\" otherwise. For a branch edge out of a DECISION node, set sub_status to the branch EVENTNO (\"01\"/\"02\"); such edges are forced to \"positive\"."
      • addedInput schema / properties / edges / items / properties / sub_status
        Added value: +{
        +  "description": "Branch condition (DECISION out-edges only): the branch EVENTNO, e.g. \"01\" (THEN/JA) or \"02\" (ELSE/NEIN). Defaults to \"00\" (normal edge).",
        +  "type": "string"
        +}
      • changedInput schema / properties / steps / description
        Previous value: -"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), CHAIN (requires object = sub-chain name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."New value: +"Ordered list of steps. The TRIGGER (Start) node is implicit at index 0 — do not include it here. Each step has a caller-chosen id used for edge wiring. Step types: DTP_LOAD (requires dtp field), ADSOACT (requires datastores array), ADSOREM (requires remDatastores array), CHAIN (requires object = sub-chain name), DECISION (requires variant = decision variant name), AND / OR / XOR (collector, no extra fields), or any other BW process type (requires object field)."
      • changedInput schema / properties / steps / items / properties / description / description
        Previous value: -"Step display description (used for DTP_LOAD, CHAIN, and generic referenced steps)."New value: +"Step display description (used for DTP_LOAD, CHAIN, DECISION, and generic referenced steps)."
      • changedInput schema / properties / steps / items / properties / object / description
        Previous value: -"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, AND, OR, XOR)."New value: +"Technical name of the referenced BW object. Required for CHAIN (sub-chain name) and other generic referenced step types (any type other than DTP_LOAD, ADSOACT, ADSOREM, AND, OR, XOR)."
      • addedInput schema / properties / steps / items / properties / remDatastores
        Added value: +{
        +  "description": "Required when type is \"ADSOREM\" (DSO request cleanup). One entry per aDSO whose requests to clean up, each with its own cleanup action and request selection.",
        +  "items": {
        +    "properties": {
        +      "action": {
        +        "description": "Cleanup action code from the cockpit \"Bereinigungsaktion\" dropdown (single character). Observed: \"A\" = activate requests, \"C\" = remove old requests from the change log. The valid action depends on the aDSO type; an unsuitable action is rejected at activation.",
        +        "type": "string"
        +      },
        +      "allRequests": {
        +        "description": "Clean up all requests (ALL_REQUESTS). When true, the count/age selectors are ignored. Default false.",
        +        "type": "boolean"
        +      },
        +      "datastore": {
        +        "description": "aDSO technical name (e.g. \"ADSO_NAME\").",
        +        "type": "string"
        +      },
        +      "numberDays": {
        +        "description": "Remove requests older than N days (NUMBER_DAYS). Default 0.",
        +        "type": "number"
        +      },
        +      "numberRequests": {
        +        "description": "Keep the last N requests (NUMBER_REQUESTS); older ones are removed. Default 0.",
        +        "type": "number"
        +      },
        +      "packageSize": {
        +        "description": "Processing package size (PACKAGE_SIZE); 0 = server default.",
        +        "type": "number"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / steps / items / properties / type / description
        Previous value: -"Process type: \"DTP_LOAD\", \"ADSOACT\", \"CHAIN\", \"AND\", \"OR\", \"XOR\", or any BW process type string."New value: +"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."
      • addedInput schema / properties / steps / items / properties / variant
        Added value: +{
        +  "description": "Decision variant technical name to reference. Required when type is \"DECISION\". Create it first with bw_create_decision_variant.",
        +  "type": "string"
        +}
      • addedInput schema / properties / trigger_event
        Added value: +{
        +  "description": "Optional event start-condition for the trigger (start type \"E\"). Omit for the default immediate start (start type \"I\").",
        +  "properties": {
        +    "event_id": {
        +      "description": "Event id, e.g. \"SAP_TEST\".",
        +      "type": "string"
        +    },
        +    "event_parameter": {
        +      "description": "Event parameter. Defaults to the chain name when omitted.",
        +      "type": "string"
        +    },
        +    "event_type": {
        +      "description": "Event type. Defaults to \"OtherEvent\".",
        +      "type": "string"
        +    },
        +    "only_once": {
        +      "description": "Start only once. Default false.",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "event_id"
        +  ],
        +  "type": "object"
        +}
    • Addedbw_create_query
    • Addedbw_create_rkf
    • Addedbw_create_transport_task
    • Changedbw_delete1 field changed
      • changedInput schema / properties / object_type / description
        Previous value: -"BW object type: adso, iobj, trfn, dtpa, etc."New value: +"BW object type: adso, iobj, trfn, dtpa, query (alias elem), etc."
    • Changedbw_get_request1 field changed
      • changedInput schema / properties / storage / description
        Previous value: -"Storage area code (default \"AQ\")."New value: +"Storage area code (default \"AQ\"). Take it from the \"Storage\" line of the bw_list_requests output — the code differs by target type (e.g. AQ inbound, AT/AX active data aDSO, ATTE active text table InfoObject). A wrong code 404s the header/DTP/process sections, but the message log is still returned."
    • Addedbw_list_changeable_transports
    • Addedbw_set_datasource_fields
    • Addedbw_set_transformation_expert_routine
    • Addedbw_swap_process_chain_dtp
    • Changedbw_unlock2 fields changed
      • changedInput schema / properties / object_type / description
        Previous value: -"Object type: adso, trfn, trcs, iobj, or area (InfoArea)."New value: +"Object type: adso, trfn, trcs, iobj, area (InfoArea), or dtpa (DTP)."
      • changedInput schema / properties / object_type / enum
        Previous value: -[
        -  "adso",
        -  "trfn",
        -  "trcs",
        -  "iobj",
        -  "area"
        -]New value: +[
        +  "adso",
        +  "trfn",
        +  "trcs",
        +  "iobj",
        +  "area",
        +  "dtpa"
        +]
    • Changedbw_update_adso3 fields changed
      • changedInput schema / properties / fields / items / properties / precision / description
        Previous value: -"Precision (total digits) for DEC. For CURR/QUAN use scale instead."New value: +"Total digits. For DEC (required) and, optionally, for CURR/QUAN (total length, default 17 when only scale is given)."
      • changedInput schema / properties / fields / items / properties / scale / description
        Previous value: -"Decimal places for CURR, QUAN, DEC (maps to XML precision attribute for CURR/QUAN)."New value: +"Decimal places. Required for CURR/QUAN (> 0 — BW rejects scale 0) and used for DEC. Emitted as the XML scale attribute."
      • addedInput schema / properties / properties / properties / unit_currency_field
        Added value: +{
        +  "description": "Unit/currency FIELD reference for a pure QUAN/CURR field: the name of another field in the same aDSO that supplies the unit or currency (sets <unitCurrencyElement>#///FIELD</unitCurrencyElement>). Use this instead of fixed_unit/fixed_currency to fill the unit/currency dynamically from a field (the referenced field must be a UNIT or CUKY field). Any fixed_unit/fixed_currency is removed. null removes the reference. Example: on \"QUANTITY\" set unit_currency_field=\"QUANTITYUNIT\"."
        +}
    • Changedbw_update_infosource2 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"Complete list of fields. Replaces all existing fields. Omit to leave fields unchanged."New value: +"Fields to add (or whose label to update). Existing fields are preserved; omit to leave fields unchanged."
      • addedInput schema / properties / remove_fields
        Added value: +{
        +  "description": "Field names to remove from the InfoSource (e.g. FIELD_NAME). Other existing fields are preserved.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
    • Changedbw_update_process_chain8 fields changed
      • changedInput schema / properties / edges / description
        Previous value: -"Complete replacement edge list. Use the step id or the literal \"TRIGGER\" for the start node. Status defaults: \"neutral\" when the source is \"TRIGGER\" or a collector (AND/OR/XOR); \"positive\" otherwise."New value: +"Complete replacement edge list. Use the step id or the literal \"TRIGGER\" for the start node. Status defaults: \"neutral\" when the source is \"TRIGGER\" or a collector (AND/OR/XOR); \"positive\" otherwise. For a branch edge out of a DECISION node, set sub_status to the branch EVENTNO (\"01\"/\"02\"); such edges are forced to \"positive\"."
      • addedInput schema / properties / edges / items / properties / sub_status
        Added value: +{
        +  "description": "Branch condition (DECISION out-edges only): the branch EVENTNO, e.g. \"01\" (THEN/JA) or \"02\" (ELSE/NEIN). Defaults to \"00\" (normal edge).",
        +  "type": "string"
        +}
      • changedInput schema / properties / steps / items / properties / description / description
        Previous value: -"Step display description (DTP_LOAD, CHAIN, and generic referenced steps)."New value: +"Step display description (DTP_LOAD, CHAIN, DECISION, and generic referenced steps)."
      • addedInput schema / properties / steps / items / properties / remDatastores
        Added value: +{
        +  "description": "Required when type is \"ADSOREM\" (DSO request cleanup). One entry per aDSO whose requests to clean up, each with its own cleanup action and request selection.",
        +  "items": {
        +    "properties": {
        +      "action": {
        +        "description": "Cleanup action code from the cockpit \"Bereinigungsaktion\" dropdown (single character). Observed: \"A\" = activate requests, \"C\" = remove old requests from the change log. The valid action depends on the aDSO type; an unsuitable action is rejected at activation.",
        +        "type": "string"
        +      },
        +      "allRequests": {
        +        "description": "Clean up all requests (ALL_REQUESTS). When true, the count/age selectors are ignored. Default false.",
        +        "type": "boolean"
        +      },
        +      "datastore": {
        +        "description": "aDSO technical name (e.g. \"ADSO_NAME\").",
        +        "type": "string"
        +      },
        +      "numberDays": {
        +        "description": "Remove requests older than N days (NUMBER_DAYS). Default 0.",
        +        "type": "number"
        +      },
        +      "numberRequests": {
        +        "description": "Keep the last N requests (NUMBER_REQUESTS); older ones are removed. Default 0.",
        +        "type": "number"
        +      },
        +      "packageSize": {
        +        "description": "Processing package size (PACKAGE_SIZE); 0 = server default.",
        +        "type": "number"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedInput schema / properties / steps / items / properties / type / description
        Previous value: -"Process type: \"DTP_LOAD\", \"ADSOACT\", \"CHAIN\", \"AND\", \"OR\", \"XOR\", or any BW process type string."New value: +"Process type: \"DTP_LOAD\", \"ADSOACT\", \"ADSOREM\", \"CHAIN\", \"DECISION\", \"AND\", \"OR\", \"XOR\", or any BW process type string."
      • addedInput schema / properties / steps / items / properties / variant
        Added value: +{
        +  "description": "Decision variant technical name to reference. Required when type is \"DECISION\".",
        +  "type": "string"
        +}
      • addedInput schema / properties / transport_request
        Added value: +{
        +  "description": "Optional transport request to record the change into. Only relevant when the chain is in a transportable package (not $TMP). If the chain is transportable and exactly one request is available, it is chosen automatically; pass this to disambiguate when several are available. Ignored for $TMP (local) chains.",
        +  "type": "string"
        +}
      • addedInput schema / properties / trigger_event
        Added value: +{
        +  "description": "Optional event start-condition for the trigger (start type \"E\"). When omitted, an existing event start-condition is preserved and a non-event trigger stays immediate.",
        +  "properties": {
        +    "event_id": {
        +      "description": "Event id, e.g. \"SAP_TEST\".",
        +      "type": "string"
        +    },
        +    "event_parameter": {
        +      "description": "Event parameter. Defaults to the chain name when omitted.",
        +      "type": "string"
        +    },
        +    "event_type": {
        +      "description": "Event type. Defaults to \"OtherEvent\".",
        +      "type": "string"
        +    },
        +    "only_once": {
        +      "description": "Start only once. Default false.",
        +      "type": "boolean"
        +    }
        +  },
        +  "required": [
        +    "event_id"
        +  ],
        +  "type": "object"
        +}
    • Addedbw_update_query_filter
    • Addedbw_update_query_key_figures
    • Addedbw_update_query_layout
    • Addedbw_update_query_settings
    • Changedbw_update_transformation1 field changed
      • addedInput schema / properties / unit_source_field
        Added value: +{
        +  "description": "Source unit/currency field for a COMBINED key-figure + unit/currency direct rule (rule_type=\"direct\"). When set, target_infoobject is the key figure and this is the source field that fills its unit or currency. The target unit/currency field is derived automatically from the key figure's unit reference in the aDSO (the target key figure must reference a unit/currency field). The standalone unit/currency rule is folded into the combined rule and the transformation's currency/unit handling is switched on. Example: target_infoobject=\"QUANTITY\", unit_source_field=\"QUANTITYUNIT\".",
        +  "type": "string"
        +}
  3. 2 tool updatesv0.9.2
    • Addedbw_change_package
    • Changedbw_create_transformation2 fields changed
      • addedInput schema / properties / source_object_subtype
        Added value: +{
        +  "description": "InfoObject sub-type of the source. Only applies when source_object_type is IOBJ. Valid values: TEXT (text table), ATTR (attributes / master data), HIER (hierarchy).",
        +  "type": "string"
        +}
      • addedInput schema / properties / target_object_subtype
        Added value: +{
        +  "description": "InfoObject sub-type of the target. Only applies when target_object_type is IOBJ. Valid values: TEXT (text table), ATTR (attributes / master data), HIER (hierarchy).",
        +  "type": "string"
        +}
  4. 23 tool updatesv0.9.1
    • Changedbw_activate5 fields changed
      • changedInput schema / properties / lock_handle / description
        Previous value: -"Lock handle from bw_update_adso or bw_update_transformation. Use empty string \"\" for DTP activation."New value: +"Lock handle from bw_update_adso or bw_update_transformation. Use empty string \"\" for DTP and DataSource (rsds) activation."
      • changedInput schema / properties / object_name / description
        Previous value: -"Object name (e.g. \"OBJECT_NAME\" or \"DTP_...\")."New value: +"Object name (e.g. \"OBJECT_NAME\" or \"DTP_...\"). For rsds, the DataSource name."
      • changedInput schema / properties / object_type / description
        Previous value: -"Object type: adso, trfn, dtpa, iobj, or trcs."New value: +"Object type: adso, trfn, dtpa, iobj, trcs, rsds (DataSource), or hcpr (CompositeProvider)."
      • changedInput schema / properties / object_type / enum
        Previous value: -[
        -  "adso",
        -  "trfn",
        -  "dtpa",
        -  "iobj",
        -  "trcs"
        -]New value: +[
        +  "adso",
        +  "trfn",
        +  "dtpa",
        +  "iobj",
        +  "trcs",
        +  "rsds",
        +  "hcpr"
        +]
      • addedInput schema / properties / source_system
        Added value: +{
        +  "description": "Source system name. Required when object_type is \"rsds\" (e.g. \"LSYS_NAME\").",
        +  "type": "string"
        +}
    • Addedbw_activate_process_chain
    • Addedbw_activate_request
    • Changedbw_create_adso3 fields changed
      • addedInput schema / properties / source_system
        Added value: +{
        +  "description": "Source system name of the DataSource. Required when template_type is \"RSDS\".",
        +  "type": "string"
        +}
      • changedInput schema / properties / template_name / description
        Previous value: -"Existing aDSO to copy from (action \"from_template\" only)."New value: +"Template object to propose fields from (action \"from_template\" only). An aDSO name when template_type is \"ADSO\", or a DataSource name when template_type is \"RSDS\"."
      • addedInput schema / properties / template_type
        Added value: +{
        +  "description": "Type of the template object for action \"from_template\": \"ADSO\" (default) to copy from an existing aDSO, or \"RSDS\" to propose fields from a DataSource. When \"RSDS\", source_system is required.",
        +  "enum": [
        +    "ADSO",
        +    "RSDS"
        +  ],
        +  "type": "string"
        +}
    • Addedbw_create_datasource
    • Changedbw_create_dtp3 fields changed
      • addedInput schema / properties / source_system
        Added value: +{
        +  "description": "Source system name of the DataSource. Required when source_type is \"RSDS\".",
        +  "type": "string"
        +}
      • changedInput schema / properties / source_type / description
        Previous value: -"Source object type (e.g. \"ADSO\", \"TRCS\", \"RSDS\")."New value: +"Source object type (e.g. \"ADSO\", \"TRCS\", \"RSDS\"). Use \"RSDS\" for a DataSource source — source_system is then required."
      • changedInput schema / properties / target_type / description
        Previous value: -"Target object type (e.g. \"ADSO\")."New value: +"Target object type (e.g. \"ADSO\"). Use \"IOBJ\" to load into an InfoObject's attributes (encoded server-side as IOBJA). InfoObject text/hierarchy targets (IOBJT/IOBJH) are not yet supported."
    • Addedbw_create_process_chain
    • Addedbw_get_aggregation_level
    • Addedbw_get_open_hub
    • Addedbw_get_planning_function
    • Addedbw_get_planning_properties
    • Addedbw_get_planning_sequence
    • Addedbw_get_process_chain_run_detail
    • Addedbw_get_request
    • Addedbw_list_process_chain_last_status
    • Addedbw_list_process_chain_runs
    • Addedbw_list_remote_entities
    • Addedbw_list_requests
    • Addedbw_run_dtp
    • Changedbw_search1 field changed
      • changedInput schema / properties / object_type / description
        Previous value: -"Optional TLOGO filter to restrict results to one object type. Common values: ADSO (aDSO), ELEM (BEx/BW query), TRFN (transformation), DTPA (DTP), IOBJ (InfoObject), ISFS (InfoSource), HCPR (CompositeProvider), RSDS (DataSource), AREA (InfoArea), PRCH (process chain). Leave empty to search all types."New value: +"Optional TLOGO filter to restrict results to one object type. Common values: ADSO (aDSO), ELEM (BEx/BW query), TRFN (transformation), DTPA (DTP), IOBJ (InfoObject), TRCS (InfoSource), HCPR (CompositeProvider), RSDS (DataSource), AREA (InfoArea), RSPC (process chain). Leave empty to search all types."
    • Addedbw_set_transformation_routine_fields
    • Changedbw_update_dtp1 field changed
      • addedInput schema / properties / extraction_mode
        Added value: +{
        +  "description": "Switch the DTP extraction mode. \"full\" sets extractionMode=\"F\"; \"delta\" sets extractionMode=\"D\" (only valid for delta-capable sources). Switching modes has delta-init implications — see the tool note.",
        +  "enum": [
        +    "full",
        +    "delta"
        +  ],
        +  "type": "string"
        +}
    • Addedbw_update_process_chain
  5. 50 tool updatesv0.7.0
    • First observedbw_activate
    • First observedbw_create_adso
    • First observedbw_create_dtp
    • First observedbw_create_infoarea
    • First observedbw_create_infoobject
    • First observedbw_create_infosource
    • First observedbw_create_transformation
    • First observedbw_delete
    • First observedbw_delete_transformation_routine
    • First observedbw_get_adso
    • First observedbw_get_ckf
    • First observedbw_get_composite_provider
    • First observedbw_get_dataflow
    • First observedbw_get_datasource
    • First observedbw_get_dtp
    • First observedbw_get_dtps
    • First observedbw_get_filter_values
    • First observedbw_get_infoarea
    • First observedbw_get_infoobject
    • First observedbw_get_infosource
    • First observedbw_get_process_chain
    • First observedbw_get_process_variant
    • First observedbw_get_push_schema
    • First observedbw_get_query
    • First observedbw_get_query_roles
    • First observedbw_get_rkf
    • First observedbw_get_role_queries
    • First observedbw_get_roles
    • First observedbw_get_source_system
    • First observedbw_get_structure
    • First observedbw_get_transformation
    • First observedbw_list_contents
    • First observedbw_list_datasources
    • First observedbw_list_source_systems
    • First observedbw_move_object
    • First observedbw_preview_datasource
    • First observedbw_push_data
    • First observedbw_query_data
    • First observedbw_search
    • First observedbw_set_dtp_filter_routine
    • First observedbw_set_query_roles
    • First observedbw_set_transformation_routine
    • First observedbw_set_transformation_runtime
    • First observedbw_unlock
    • First observedbw_update_adso
    • First observedbw_update_dtp
    • First observedbw_update_infoobject
    • First observedbw_update_infosource
    • First observedbw_update_transformation
    • First observedbw_xref

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have clearly distinct purposes and the descriptions explicitly resolve near-overlaps (e.g., bw_search vs bw_get_*, bw_preview vs bw_query_data). Some overlap remains: bw_get_dtps is essentially a filtered bw_xref, and multiple process-chain editing tools have very similar boundaries, but the detailed descriptions keep confusion low.

Naming Consistency5/5

All tool names follow the bw_verb_noun pattern consistently (bw_get_adso, bw_create_dtp, bw_add_process_chain_edge). The only outliers are bw_xref and bw_search, but they are short idiomatic verbs rather than convention breaking. No camelCase or mixed styles.

Tool Count1/5

With 99 tools, the surface is far larger than what an agent can handle precisely in one decision loop, even for a modeling domain. Many tools are related to four or five object types and could be grouped into sub toolsets. The extreme count fits the '50+ tools' boundary described as an extreme mismatch.

Completeness4/5

The set provides broad CRUD/lifecycle coverage across aDSOs, InfoObjects, Transformations, DTPs, DataSources, Queries, CompositeProviders, Process Chains, and planning artifacts. Major gaps include lack of variable update/delete, rout access but not creation of global CKFs/Structures, and only limited planning modification, but core workflows are complete.

Maintenance

ActivityActive
ResponsivenessWithin a week

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read, write, activate, and transport ABAP code in SAP systems via ABAP ADT REST API, without needing SAP GUI.
    4
    24
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    A Model Context Protocol (MCP) server that enables AI assistants like Claude to work directly inside SAP BW/4HANA systems — reading, creating and modifying BW modeling objects via the internal REST API used by Eclipse BWMT.
    63
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to perform ABAP Development Tools operations on SAP ERP (ECC and S/4HANA) systems, including source code editing, object activation, syntax checks, and ABAP unit tests.
    2
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dnic-dev/bw-modeling-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server