Skip to main content
Glama
dnic-dev

bw-modeling-mcp

by dnic-dev

bw_update_adso

Update an SAP BW aDSO: add or remove fields, change type and settings, manage key fields, or modify individual field properties. Returns a lock handle for activation.

Instructions

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).

Input Schema

TableJSON 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.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed3 schema fields changedv1.4.0
    • 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"
      +}
  2. Changed3 schema fields changedv1.2.0
    • 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\"."
      +}
  3. First observedv0.7.0

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.

Install Server

Other Tools

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