Skip to main content
Glama
dnic-dev

bw-modeling-mcp

by dnic-dev

bw_update_dtp

Update an SAP BW DTP's filter selections, extraction mode, description, or semantic group. Set complete filter values per field, replace or clear selections, or switch between full/delta extraction.

Instructions

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.

Input Schema

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

Schema Changelog

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

  1. Changed7 schema fields changedv1.4.0
    • 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"
      +}
  2. Changed1 schema field changedv0.9.1
    • 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"
      +}
  3. First observedv0.7.0

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.

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