Skip to main content
Glama

SAPRead

Read-only

Read SAP ABAP source, metadata, table data, and syntax-check results to inspect programs, classes, CDS views, and DDIC objects before making changes.

Instructions

Read SAP ABAP source, metadata or syntax-check results. For purpose, explanations, specs, reviews or pre-change context, prefer SAPContext first. DDIC metadata: omit format (default text); structured is CLAS-only for ordinary reads. Types: PROG, CLAS, INTF, FUNC, FUGR (expand_includes=true for all include sources), INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD/KTD (KTD aliases SKTD), TABL (covers both transparent tables AND DDIC structures — no separate STRU type), TTYP, VIEW, DOMA, DTEL, TRAN, TABLE_CONTENTS (single-column filter), TABLE_QUERY (multi-column WHERE via the freestyle endpoint; gated by allowDataPreview; CDS views need SAP_BASIS 752+), DEVC, SOBJ (BOR — method param reads one method), SYSTEM, COMPONENTS, MSAG, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE (contract states C0-C4; objectType for non-class), INACTIVE_OBJECTS (no name; pending-activation list), AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. AUTH/FEATURE_TOGGLE/ENHO/VERSIONS/VERSION_SOURCE are on-prem only. SYNTAX: read-only SAP check (objectType+name, optional source for unsaved text). CLAS: method="*" for signatures, method="NAME" for one body, or grep. Global class declaration/implementation: MAIN (omit include). definitions/implementations contain local helpers. grep: case-insensitive regex; returns matching lines, context and line numbers, with owning class/method for CLAS.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoaction="diff" NEW side (default "inactive" = pending unactivated changes). Same values as from.
fromNoaction="diff" OLD side: "active" (default), "inactive", a revision id from SAPRead(type="VERSIONS"), or a /sap/bc/adt/ revision URI.
grepNoRegex pattern (case-insensitive) to search within the object source. Returns only matching lines with 1-based line numbers and ±3 context lines, instead of the full source — token-efficient. For CLAS, matches are annotated with the owning class/method; combine with include= to scope a section, but do NOT combine with method= (use grep to find, then method= to read). Works for source-bearing types (CLAS, INTF, DDLS, DCLS, BDEF, SRVD, SRVB, SKTD/KTD, DDLX, TABL, PROG, FUNC, FUGR, INCL, VIEW). Falls back to a literal search when the pattern is not valid regex.
nameNoObject name (e.g., ZTEST_PROGRAM, ZCL_ORDER, MARA)
typeYesObject or metadata type. TABL includes DDIC structures; KTD aliases SKTD (Knowledge Transfer Documents). SYNTAX checks objectType+name. Server-driven objects use discovery-gated XML metadata and AFF JSON source (DTSC/DSFD/DTDC/DRTY use DDL text). DESD logical external schema; EVTB event binding; EVTO event object; CSNM CSN model; COTA communication target; DTSC static cache; DTDC dynamic cache; DSFD scalar function; UIAD launchpad descriptor; DRTY CDS type; APLO log object; SAJC/SAJT job catalog/template. Deprecated: MESSAGES→MSAG. FTG2→FEATURE_TOGGLE. ENQU lock object as JSON.
groupNoFor FUNC/VERSIONS type. The function group containing the function module. Optional for FUNC — auto-resolved via SAPSearch if omitted. Required for VERSIONS when querying a function module revision feed.
whereNoFor TABLE_QUERY: structured WHERE conditions, ANDed together. Each item: {field, op, value?}. Ops: =, <>, <, <=, >, >=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL; use <> because 758 rejects !=. For IN/NOT IN: use bare comma-separated values; do NOT quote them. ARC-1 quotes and escapes values, e.g. "261,262". No subqueries. Example: [{"field":"MATNR","op":"=","value":"300006888"},{"field":"BUDAT_MKPF","op":">=","value":"20250101"}].
actionNoSet to "diff" for a unified diff between two source versions (uses from/to) — cheaper than fetching both sources. Source types only: PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, BDEF, SRVD, DDLX, TABL.
formatNoDefault text. editable: fresh {source, sourceHash} for guarded SAPWrite; omit version/method/grep, select CLAS include. structured: CLAS metadata+includes, DEVC {objects,listing}, or action=diff JSON. DEVC text returns the array then listing metadata; diff text returns a patch.
methodNoFor CLAS: read a method (e.g., "get_name", "zif_order~process", "lhc_travel~accept") or use "*" to list methods. Without include=, lhc_*/lcl_* use implementations, ltc_* uses testclasses, and others use MAIN; explicit include= wins. For SOBJ: BOR method name to read. If omitted, returns the full BOR method catalog. Not used with other types.
sourceNoSYNTAX only: proposed source to check without saving. Omit to check stored version (default active; inactive checks draft). Object must exist; version=auto is unsupported.
columnsNoFor TABLE_QUERY: columns to SELECT (default: all). Example: ["MATNR","BWART","BUDAT","MENGE"].
includeNoCLAS: omit include or use main for the global declaration + implementation; definitions/implementations select local helper classes, macros/testclasses their own sections. Explicit include wins over method auto-routing. For DDLS: use include="elements" for the CDS field catalog (key fields, aliases, associations, expression types) instead of raw DDL. For VERSIONS (CLAS): include selects the class include history to query (main, definitions, implementations, macros, testclasses). BSP: case-sensitive path; name may also be APP/path. TEXT_ELEMENTS: symbols|selections|headings; omit for pool (CLAS: symbols).
maxRowsNoRow cap for TABLE_CONTENTS/TABLE_QUERY (default 100, max 10,000; byte limit may apply sooner). On 758, TABLE_CONTENTS returns N+1; use TABLE_QUERY for exact caps.
toLabelNoaction="diff" optional display label for the NEW side in the summary and patch header, e.g. "active" or "inactive draft". Does not affect source resolution.
versionNoSource defaults active; inactive requests a draft (SAP may return active if none); auto selects developer view. DTEL/ENQU/server-driven types default to developer view. Server-driven types return an error if SAP cannot confirm an explicit version (e.g. no draft).
fromLabelNoaction="diff" optional display label for the OLD side in the summary and patch header, e.g. "DNT-6-6: Validate discounts (DS7K900123)". Does not affect source resolution.
sqlFilterNoTABLE_CONTENTS condition expression only (no WHERE, no SELECT); broken on 758 (SAP expects SELECT). Use TABLE_QUERY where.
maxResultsNoDEVC object limit (default 200, clamped to [1, 1000]). Listing metadata reports the effective limit and possible truncation. Total and full repository completeness remain unknown.
objectTypeNoSYNTAX: required repository type (e.g. CLAS, PROG, DDLS). API_STATE: inferred if omitted. VERSIONS: type selects the endpoint (FUNC needs group); inferred from CL_/IF_/CX_, else PROG. TEXT_ELEMENTS: PROG (default), CLAS or FUGR.
versionUriNoVERSION_SOURCE: canonical source/revision URI from VERSIONS .revisions[].uri; rejects unrelated ADT endpoints, absolute URLs, traversal, queries, and fragments.
force_refreshNoFor source reads: bypass cached source and inactive-list state before reading. Use when you know the object changed outside ARC-1.
expand_includesNoFor FUGR type only. When true, recursively expands the function group include tree — the main source plus all nested INCLUDEs (the FUNCTION...ENDFUNCTION bodies live in nested LZ<grp>U01/U02 includes, so a flat one-level walk misses them). Each block is prefixed with a "=== name ===" marker; depth/count-capped. Dynpros and GUI status are not included (ADT does not expose them over REST).
includeSignatureNoFor FUNC type only. When true, response is JSON: {source, signature: {importing[], exporting[], changing[], tables[], exceptions[], raising[]}, processingType?, updateTaskKind?} — each parameter parsed into {kind, name, type, byValue?, default?, optional?}; processingType reports rfc/update/normal. Default false (returns plain source body).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv1.5.0
    • changedInput schema / properties / format / description
      Previous value: -"Default \"text\" (TABL/TTYP/DTEL/DOMA/INTF metadata included). DEVC: array in first text block + listing metadata in second; \"structured\" returns {objects, listing}. CLAS \"structured\": metadata + all includes; prefer method/grep for targeted reads. action=\"diff\": \"structured\" returns JSON {hasDifferences, identical, added, removed, diff, version labels}; default is a patch."New value: +"Default text. editable: fresh {source, sourceHash} for guarded SAPWrite; omit version/method/grep, select CLAS include. structured: CLAS metadata+includes, DEVC {objects,listing}, or action=diff JSON. DEVC text returns the array then listing metadata; diff text returns a patch."
    • changedInput schema / properties / format / enum
      Previous value: -[
      -  "text",
      -  "structured"
      -]New value: +[
      +  "text",
      +  "structured",
      +  "editable"
      +]
    • changedInput schema / properties / objectType / description
      Previous value: -"For API_STATE and VERSIONS: SAP object type (CLAS, INTF, PROG, FUNC, INCL, DDLS, DCLS, BDEF, SRVD, etc.). For API_STATE: auto-detected from name if omitted. For VERSIONS: required to pick the correct revisions endpoint (e.g., \"FUNC\" + group for function modules); inferred from CL_/IF_/CX_ name prefixes when possible, defaults to PROG. TEXT_ELEMENTS: PROG (default), CLAS or FUGR."New value: +"SYNTAX: required repository type (e.g. CLAS, PROG, DDLS). API_STATE: inferred if omitted. VERSIONS: type selects the endpoint (FUNC needs group); inferred from CL_/IF_/CX_, else PROG. TEXT_ELEMENTS: PROG (default), CLAS or FUGR."
    • addedInput schema / properties / source
      Added value: +{
      +  "description": "SYNTAX only: proposed source to check without saving. Omit to check stored version (default active; inactive checks draft). Object must exist; version=auto is unsupported.",
      +  "type": "string"
      +}
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD or KTD (Knowledge Transfer Documents), TABL (transparent tables and DDIC structures), TTYP, VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (discovery-gated; XML metadata; source is AFF JSON, or DDL text for DTSC/DSFD/DTDC/DRTY): DESD (Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (Static Cache), CSNM (CSN Model), COTA (Communication Target), DSFD (Scalar Function Def), DTDC (Dynamic Cache), UIAD (Launchpad App Descriptor Item), DRTY (CDS Type). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."New value: +"Object or metadata type. TABL includes DDIC structures; KTD aliases SKTD (Knowledge Transfer Documents). SYNTAX checks objectType+name. Server-driven objects use discovery-gated XML metadata and AFF JSON source (DTSC/DSFD/DTDC/DRTY use DDL text). DESD logical external schema; EVTB event binding; EVTO event object; CSNM CSN model; COTA communication target; DTSC static cache; DTDC dynamic cache; DSFD scalar function; UIAD launchpad descriptor; DRTY CDS type; APLO log object; SAJC/SAJT job catalog/template. Deprecated: MESSAGES→MSAG. FTG2→FEATURE_TOGGLE. ENQU lock object as JSON."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "KTD",
      -  "TABL",
      -  "VIEW",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TTYP",
      -  "TABLE_CONTENTS",
      -  "TABLE_QUERY",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MSAG",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FEATURE_TOGGLE",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE",
      -  "DESD",
      -  "DTSC",
      -  "CSNM",
      -  "EVTB",
      -  "EVTO",
      -  "COTA",
      -  "DSFD",
      -  "DTDC",
      -  "UIAD",
      -  "DRTY"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "KTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TTYP",
      +  "ENQU",
      +  "TABLE_CONTENTS",
      +  "TABLE_QUERY",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "SYNTAX",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE",
      +  "DESD",
      +  "DTSC",
      +  "CSNM",
      +  "EVTB",
      +  "EVTO",
      +  "COTA",
      +  "DSFD",
      +  "DTDC",
      +  "UIAD",
      +  "DRTY",
      +  "APLO",
      +  "SAJC",
      +  "SAJT"
      +]
    • changedInput schema / properties / version / description
      Previous value: -"Version to read. Source: \"active\" (default); \"inactive\" requests the draft (SAP may return active if none); \"auto\" uses the developer view. DTEL: omitted/\"auto\" uses its developer view; explicit values pass through."New value: +"Source defaults active; inactive requests a draft (SAP may return active if none); auto selects developer view. DTEL/ENQU/server-driven types default to developer view. Server-driven types return an error if SAP cannot confirm an explicit version (e.g. no draft)."
  2. Changed2 schema fields changedv1.4.0
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD or KTD (Knowledge Transfer Documents), TABL (transparent tables and DDIC structures), TTYP, VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (discovery-gated; XML metadata; source is AFF JSON, or DDL text for DTSC/DSFD/DTDC): DESD (Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (Static Cache), CSNM (CSN Model), COTA (Communication Target), DSFD (Scalar Function Def), DTDC (Dynamic Cache), UIAD (Launchpad App Descriptor Item). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."New value: +"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD or KTD (Knowledge Transfer Documents), TABL (transparent tables and DDIC structures), TTYP, VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (discovery-gated; XML metadata; source is AFF JSON, or DDL text for DTSC/DSFD/DTDC/DRTY): DESD (Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (Static Cache), CSNM (CSN Model), COTA (Communication Target), DSFD (Scalar Function Def), DTDC (Dynamic Cache), UIAD (Launchpad App Descriptor Item), DRTY (CDS Type). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "KTD",
      -  "TABL",
      -  "VIEW",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TTYP",
      -  "TABLE_CONTENTS",
      -  "TABLE_QUERY",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MSAG",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FEATURE_TOGGLE",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE",
      -  "DESD",
      -  "DTSC",
      -  "CSNM",
      -  "EVTB",
      -  "EVTO",
      -  "COTA",
      -  "DSFD",
      -  "DTDC",
      -  "UIAD"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "KTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TTYP",
      +  "TABLE_CONTENTS",
      +  "TABLE_QUERY",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE",
      +  "DESD",
      +  "DTSC",
      +  "CSNM",
      +  "EVTB",
      +  "EVTO",
      +  "COTA",
      +  "DSFD",
      +  "DTDC",
      +  "UIAD",
      +  "DRTY"
      +]
  3. Changed7 schema fields changedv1.3.0
    • changedInput schema / properties / format / description
      Previous value: -"Output format. For action=\"diff\", \"structured\" returns JSON {hasDifferences, identical, added, removed, diff, version labels}; default remains the human-readable patch. For ordinary reads, \"text\" (default) is raw source; \"structured\" (CLAS only) returns JSON metadata + EVERY class include — a superset of \"text\", so it always costs MORE (measured +10% to +1685%). Use only to split test from production code; otherwise method=\"*\" / method=\"name\" / grep=."New value: +"Default \"text\" (TABL/TTYP/DTEL/DOMA/INTF metadata included). DEVC: array in first text block + listing metadata in second; \"structured\" returns {objects, listing}. CLAS \"structured\": metadata + all includes; prefer method/grep for targeted reads. action=\"diff\": \"structured\" returns JSON {hasDifferences, identical, added, removed, diff, version labels}; default is a patch."
    • changedInput schema / properties / include / description
      Previous value: -"For CLAS: DO NOT use this to read the main class — omit include entirely to get the full class source (CLASS DEFINITION + CLASS IMPLEMENTATION). This parameter reads class-LOCAL auxiliary files only: definitions (local type definitions, NOT the main class definition), implementations (local helper class implementations), macros, testclasses (ABAP Unit). Comma-separated. For DDLS: use include=\"elements\" for the CDS field catalog (key fields, aliases, associations, expression types) instead of raw DDL. For VERSIONS (CLAS): include selects the class include history to query (main, definitions, implementations, macros, testclasses)."New value: +"CLAS: omit include or use main for the global declaration + implementation; definitions/implementations select local helper classes, macros/testclasses their own sections. Explicit include wins over method auto-routing. For DDLS: use include=\"elements\" for the CDS field catalog (key fields, aliases, associations, expression types) instead of raw DDL. For VERSIONS (CLAS): include selects the class include history to query (main, definitions, implementations, macros, testclasses). BSP: case-sensitive path; name may also be APP/path. TEXT_ELEMENTS: symbols|selections|headings; omit for pool (CLAS: symbols)."
    • changedInput schema / properties / maxResults / description
      Previous value: -"For DEVC: max number of objects to list (default 200, clamped to [1, 1000]). Larger packages may be silently truncated by SAP at this limit; raise it if needed."New value: +"DEVC object limit (default 200, clamped to [1, 1000]). Listing metadata reports the effective limit and possible truncation. Total and full repository completeness remain unknown."
    • changedInput schema / properties / maxRows / description
      Previous value: -"Row cap (default 100). On 758, TABLE_CONTENTS returns N+1; use TABLE_QUERY or cap client-side."New value: +"Row cap for TABLE_CONTENTS/TABLE_QUERY (default 100, max 10,000; byte limit may apply sooner). On 758, TABLE_CONTENTS returns N+1; use TABLE_QUERY for exact caps."
    • changedInput schema / properties / method / description
      Previous value: -"For CLAS: method name to read a single method implementation (e.g., \"get_name\", \"zif_order~process\"). Use \"*\" to list all methods with signatures and visibility. For SOBJ: BOR method name to read. If omitted, returns the full BOR method catalog. Not used with other types."New value: +"For CLAS: read a method (e.g., \"get_name\", \"zif_order~process\", \"lhc_travel~accept\") or use \"*\" to list methods. Without include=, lhc_*/lcl_* use implementations, ltc_* uses testclasses, and others use MAIN; explicit include= wins. For SOBJ: BOR method name to read. If omitted, returns the full BOR method catalog. Not used with other types."
    • changedInput schema / properties / objectType / description
      Previous value: -"For API_STATE and VERSIONS: SAP object type (CLAS, INTF, PROG, FUNC, INCL, DDLS, DCLS, BDEF, SRVD, etc.). For API_STATE: auto-detected from name if omitted. For VERSIONS: required to pick the correct revisions endpoint (e.g., \"FUNC\" + group for function modules); inferred from CL_/IF_/CX_ name prefixes when possible, defaults to PROG."New value: +"For API_STATE and VERSIONS: SAP object type (CLAS, INTF, PROG, FUNC, INCL, DDLS, DCLS, BDEF, SRVD, etc.). For API_STATE: auto-detected from name if omitted. For VERSIONS: required to pick the correct revisions endpoint (e.g., \"FUNC\" + group for function modules); inferred from CL_/IF_/CX_ name prefixes when possible, defaults to PROG. TEXT_ELEMENTS: PROG (default), CLAS or FUGR."
    • changedInput schema / properties / version / description
      Previous value: -"Source version to read. \"active\" (default) returns the last activated version. \"inactive\" returns the user's unactivated draft or active if no draft exists. \"auto\" returns the draft if one exists, else active."New value: +"Version to read. Source: \"active\" (default); \"inactive\" requests the draft (SAP may return active if none); \"auto\" uses the developer view. DTEL: omitted/\"auto\" uses its developer view; explicit values pass through."
  4. Changed5 schema fields changedv1.1.0
    • changedInput schema / properties / format / description
      Previous value: -"Output format. \"text\" (default): raw source. \"structured\" (CLAS only): JSON metadata + EVERY class include (main, testclasses, definitions, implementations, macros) — a superset of \"text\", so it always costs MORE (measured +10% to +1685%). Use only to split test from production code; otherwise method=\"*\" / method=\"name\" / grep=."New value: +"Output format. For action=\"diff\", \"structured\" returns JSON {hasDifferences, identical, added, removed, diff, version labels}; default remains the human-readable patch. For ordinary reads, \"text\" (default) is raw source; \"structured\" (CLAS only) returns JSON metadata + EVERY class include — a superset of \"text\", so it always costs MORE (measured +10% to +1685%). Use only to split test from production code; otherwise method=\"*\" / method=\"name\" / grep=."
    • changedInput schema / properties / maxRows / description
      Previous value: -"For TABLE_CONTENTS and TABLE_QUERY: max rows to return (default 100)"New value: +"Row cap (default 100). On 758, TABLE_CONTENTS returns N+1; use TABLE_QUERY or cap client-side."
    • changedInput schema / properties / sqlFilter / description
      Previous value: -"For TABLE_CONTENTS: condition expression only (no WHERE, no SELECT), e.g. \"MANDT = '100'\" or \"MATNR LIKE 'Z%'\"."New value: +"TABLE_CONTENTS condition expression only (no WHERE, no SELECT); broken on 758 (SAP expects SELECT). Use TABLE_QUERY where."
    • changedInput schema / properties / versionUri / description
      Previous value: -"For VERSION_SOURCE: URI of a specific revision from SAPRead(type=\"VERSIONS\") response (.revisions[].uri). Must start with /sap/bc/adt/."New value: +"VERSION_SOURCE: canonical source/revision URI from VERSIONS .revisions[].uri; rejects unrelated ADT endpoints, absolute URLs, traversal, queries, and fragments."
    • changedInput schema / properties / where / description
      Previous value: -"For TABLE_QUERY: structured WHERE conditions, ANDed together. Each item: {field, op, value?}. Allowed ops: =, !=, <>, <, <=, >, >=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL. For IN/NOT IN: value must be a comma-separated list of single-quoted literals, e.g. \"'261','262'\". Subqueries are not allowed. Example: [{\"field\":\"MATNR\",\"op\":\"=\",\"value\":\"300006888\"},{\"field\":\"BUDAT_MKPF\",\"op\":\">=\",\"value\":\"20250101\"}]."New value: +"For TABLE_QUERY: structured WHERE conditions, ANDed together. Each item: {field, op, value?}. Ops: =, <>, <, <=, >, >=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL; use <> because 758 rejects !=. For IN/NOT IN: use bare comma-separated values; do NOT quote them. ARC-1 quotes and escapes values, e.g. \"261,262\". No subqueries. Example: [{\"field\":\"MATNR\",\"op\":\"=\",\"value\":\"300006888\"},{\"field\":\"BUDAT_MKPF\",\"op\":\">=\",\"value\":\"20250101\"}]."
  5. Changed6 schema fields changedv1.0.2
    • addedInput schema / additionalProperties
      Added value: +false
    • changedInput schema / properties / format / description
      Previous value: -"Output format. \"text\" (default): raw source code. \"structured\" (CLAS only): JSON with metadata (description, language, category) + decomposed source (main, testclasses, definitions, implementations, macros). Useful when you need to understand class structure or separate test code from production code."New value: +"Output format. \"text\" (default): raw source. \"structured\" (CLAS only): JSON metadata + EVERY class include (main, testclasses, definitions, implementations, macros) — a superset of \"text\", so it always costs MORE (measured +10% to +1685%). Use only to split test from production code; otherwise method=\"*\" / method=\"name\" / grep=."
    • changedInput schema / properties / include / description
      Previous value: -"For CLAS: DO NOT use this to read the main class — omit include entirely to get the full class source (CLASS DEFINITION + CLASS IMPLEMENTATION). This parameter reads class-LOCAL auxiliary files only: definitions (local type definitions, NOT the main class definition), implementations (local helper class implementations), macros, testclasses (ABAP Unit). Comma-separated. Not all classes have these sections — missing ones return a note instead of an error. For DDLS: use include=\"elements\" to get a structured field list extracted from the CDS DDL source — shows key fields, aliases, associations, and expression types (calculated, case, cast). Useful for understanding CDS entity structure without parsing raw DDL. For VERSIONS (CLAS): include selects the class include history to query (main, definitions, implementations, macros, testclasses)."New value: +"For CLAS: DO NOT use this to read the main class — omit include entirely to get the full class source (CLASS DEFINITION + CLASS IMPLEMENTATION). This parameter reads class-LOCAL auxiliary files only: definitions (local type definitions, NOT the main class definition), implementations (local helper class implementations), macros, testclasses (ABAP Unit). Comma-separated. For DDLS: use include=\"elements\" for the CDS field catalog (key fields, aliases, associations, expression types) instead of raw DDL. For VERSIONS (CLAS): include selects the class include history to query (main, definitions, implementations, macros, testclasses)."
    • changedInput schema / properties / includeSignature / description
      Previous value: -"For FUNC type only. When true, response is JSON: {source, signature: {importing[], exporting[], changing[], tables[], exceptions[], raising[]}} — each parameter parsed into {kind, name, type, byValue?, default?, optional?}. Default false (returns plain source body). Use this to introspect FM parameter signatures programmatically without re-parsing ABAP."New value: +"For FUNC type only. When true, response is JSON: {source, signature: {importing[], exporting[], changing[], tables[], exceptions[], raising[]}, processingType?, updateTaskKind?} — each parameter parsed into {kind, name, type, byValue?, default?, optional?}; processingType reports rfc/update/normal. Default false (returns plain source body)."
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD or KTD (Knowledge Transfer Documents), TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (ABAP Platform 2025 / SAP_BASIS 8.16+, discovery-gated, return JSON metadata + AFF JSON source): DESD (CDS Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (CDS Static Cache), CSNM (Core Schema Notation Model), COTA (Communication Target). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."New value: +"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD or KTD (Knowledge Transfer Documents), TABL (transparent tables and DDIC structures), TTYP, VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (discovery-gated; XML metadata; source is AFF JSON, or DDL text for DTSC/DSFD/DTDC): DESD (Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (Static Cache), CSNM (CSN Model), COTA (Communication Target), DSFD (Scalar Function Def), DTDC (Dynamic Cache), UIAD (Launchpad App Descriptor Item). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "KTD",
      -  "TABL",
      -  "VIEW",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TTYP",
      -  "TABLE_CONTENTS",
      -  "TABLE_QUERY",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MSAG",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FEATURE_TOGGLE",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE",
      -  "DESD",
      -  "DTSC",
      -  "CSNM",
      -  "EVTB",
      -  "EVTO",
      -  "COTA"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "KTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TTYP",
      +  "TABLE_CONTENTS",
      +  "TABLE_QUERY",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE",
      +  "DESD",
      +  "DTSC",
      +  "CSNM",
      +  "EVTB",
      +  "EVTO",
      +  "COTA",
      +  "DSFD",
      +  "DTDC",
      +  "UIAD"
      +]
  6. Changed2 schema fields changedv0.9.23
    • addedInput schema / properties / fromLabel
      Added value: +{
      +  "description": "action=\"diff\" optional display label for the OLD side in the summary and patch header, e.g. \"DNT-6-6: Validate discounts (DS7K900123)\". Does not affect source resolution.",
      +  "type": "string"
      +}
    • addedInput schema / properties / toLabel
      Added value: +{
      +  "description": "action=\"diff\" optional display label for the NEW side in the summary and patch header, e.g. \"active\" or \"inactive draft\". Does not affect source resolution.",
      +  "type": "string"
      +}
  7. Changed1 schema field changedv0.9.21
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "KTD",
      -  "TABL",
      -  "VIEW",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TABLE_CONTENTS",
      -  "TABLE_QUERY",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MSAG",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FEATURE_TOGGLE",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE",
      -  "DESD",
      -  "DTSC",
      -  "CSNM",
      -  "EVTB",
      -  "EVTO",
      -  "COTA"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "KTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TTYP",
      +  "TABLE_CONTENTS",
      +  "TABLE_QUERY",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE",
      +  "DESD",
      +  "DTSC",
      +  "CSNM",
      +  "EVTB",
      +  "EVTO",
      +  "COTA"
      +]
  8. Changed3 schema fields changedv0.9.20
    • changedInput schema / properties / grep / description
      Previous value: -"Regex pattern (case-insensitive) to search within the object source. Returns only matching lines with 1-based line numbers and ±3 context lines, instead of the full source — token-efficient. For CLAS, matches are annotated with the owning class/method; combine with include= to scope a section, but do NOT combine with method= (use grep to find, then method= to read). Works for source-bearing types (CLAS, INTF, DDLS, DCLS, BDEF, SRVD, SRVB, SKTD, DDLX, TABL, PROG, FUNC, FUGR, INCL, VIEW). Falls back to a literal search when the pattern is not valid regex."New value: +"Regex pattern (case-insensitive) to search within the object source. Returns only matching lines with 1-based line numbers and ±3 context lines, instead of the full source — token-efficient. For CLAS, matches are annotated with the owning class/method; combine with include= to scope a section, but do NOT combine with method= (use grep to find, then method= to read). Works for source-bearing types (CLAS, INTF, DDLS, DCLS, BDEF, SRVD, SRVB, SKTD/KTD, DDLX, TABL, PROG, FUNC, FUGR, INCL, VIEW). Falls back to a literal search when the pattern is not valid regex."
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (ABAP Platform 2025 / SAP_BASIS 8.16+, discovery-gated, return JSON metadata + AFF JSON source): DESD (CDS Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (CDS Static Cache), CSNM (Core Schema Notation Model), COTA (Communication Target). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."New value: +"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD or KTD (Knowledge Transfer Documents), TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (ABAP Platform 2025 / SAP_BASIS 8.16+, discovery-gated, return JSON metadata + AFF JSON source): DESD (CDS Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (CDS Static Cache), CSNM (Core Schema Notation Model), COTA (Communication Target). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "TABL",
      -  "VIEW",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TABLE_CONTENTS",
      -  "TABLE_QUERY",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MSAG",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FEATURE_TOGGLE",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE",
      -  "DESD",
      -  "DTSC",
      -  "CSNM",
      -  "EVTB",
      -  "EVTO",
      -  "COTA"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "KTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TABLE_CONTENTS",
      +  "TABLE_QUERY",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE",
      +  "DESD",
      +  "DTSC",
      +  "CSNM",
      +  "EVTB",
      +  "EVTO",
      +  "COTA"
      +]
  9. Changed3 schema fields changedv0.9.18
    • addedInput schema / properties / action
      Added value: +{
      +  "description": "Set to \"diff\" for a unified diff between two source versions (uses from/to) — cheaper than fetching both sources. Source types only: PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, BDEF, SRVD, DDLX, TABL.",
      +  "enum": [
      +    "diff"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / from
      Added value: +{
      +  "description": "action=\"diff\" OLD side: \"active\" (default), \"inactive\", a revision id from SAPRead(type=\"VERSIONS\"), or a /sap/bc/adt/ revision URI.",
      +  "type": "string"
      +}
    • addedInput schema / properties / to
      Added value: +{
      +  "description": "action=\"diff\" NEW side (default \"inactive\" = pending unactivated changes). Same values as from.",
      +  "type": "string"
      +}
  10. Changed1 schema field changedv0.9.14
    • addedInput schema / properties / grep / maxLength
      Added value: +512
  11. Changed4 schema fields changedv0.9.13
    • changedInput schema / properties / expand_includes / description
      Previous value: -"For FUGR type only. When true, expands all INCLUDE statements and returns the full source of each include inline."New value: +"For FUGR type only. When true, recursively expands the function group include tree — the main source plus all nested INCLUDEs (the FUNCTION...ENDFUNCTION bodies live in nested LZ<grp>U01/U02 includes, so a flat one-level walk misses them). Each block is prefixed with a \"=== name ===\" marker; depth/count-capped. Dynpros and GUI status are not included (ADT does not expose them over REST)."
    • changedInput schema / properties / grep / description
      Previous value: -"Regex pattern (case-insensitive) to search within the object source. Returns only matching lines with 1-based line numbers and ±3 context lines, instead of the full source — token-efficient. For CLAS, matches are annotated with the owning class/method; combine with include= to scope a section, but do NOT combine with method= (use grep to find, then method= to read). Works for source-bearing types (CLAS, INTF, DDLS, DCLS, BDEF, SRVD, DDLX, TABL, PROG, FUNC, INCL, VIEW). Falls back to a literal search when the pattern is not valid regex."New value: +"Regex pattern (case-insensitive) to search within the object source. Returns only matching lines with 1-based line numbers and ±3 context lines, instead of the full source — token-efficient. For CLAS, matches are annotated with the owning class/method; combine with include= to scope a section, but do NOT combine with method= (use grep to find, then method= to read). Works for source-bearing types (CLAS, INTF, DDLS, DCLS, BDEF, SRVD, SRVB, SKTD, DDLX, TABL, PROG, FUNC, FUGR, INCL, VIEW). Falls back to a literal search when the pattern is not valid regex."
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."New value: +"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Server-driven objects (ABAP Platform 2025 / SAP_BASIS 8.16+, discovery-gated, return JSON metadata + AFF JSON source): DESD (CDS Logical External Schema), EVTB (RAP Event Binding), EVTO (RAP Event Object), DTSC (CDS Static Cache), CSNM (Core Schema Notation Model), COTA (Communication Target). Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "TABL",
      -  "VIEW",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TABLE_CONTENTS",
      -  "TABLE_QUERY",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MSAG",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FEATURE_TOGGLE",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TABLE_CONTENTS",
      +  "TABLE_QUERY",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE",
      +  "DESD",
      +  "DTSC",
      +  "CSNM",
      +  "EVTB",
      +  "EVTO",
      +  "COTA"
      +]
  12. Changed6 schema fields changedv0.9.7
    • addedInput schema / properties / columns
      Added value: +{
      +  "description": "For TABLE_QUERY: columns to SELECT (default: all). Example: [\"MATNR\",\"BWART\",\"BUDAT\",\"MENGE\"].",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / grep
      Added value: +{
      +  "description": "Regex pattern (case-insensitive) to search within the object source. Returns only matching lines with 1-based line numbers and ±3 context lines, instead of the full source — token-efficient. For CLAS, matches are annotated with the owning class/method; combine with include= to scope a section, but do NOT combine with method= (use grep to find, then method= to read). Works for source-bearing types (CLAS, INTF, DDLS, DCLS, BDEF, SRVD, DDLX, TABL, PROG, FUNC, INCL, VIEW). Falls back to a literal search when the pattern is not valid regex.",
      +  "type": "string"
      +}
    • changedInput schema / properties / maxRows / description
      Previous value: -"For TABLE_CONTENTS: max rows to return (default 100)"New value: +"For TABLE_CONTENTS and TABLE_QUERY: max rows to return (default 100)"
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."New value: +"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, TABLE_QUERY, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "TABL",
      -  "VIEW",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TABLE_CONTENTS",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MSAG",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FEATURE_TOGGLE",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TABLE_CONTENTS",
      +  "TABLE_QUERY",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE"
      +]
    • addedInput schema / properties / where
      Added value: +{
      +  "description": "For TABLE_QUERY: structured WHERE conditions, ANDed together. Each item: {field, op, value?}. Allowed ops: =, !=, <>, <, <=, >, >=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL. For IN/NOT IN: value must be a comma-separated list of single-quoted literals, e.g. \"'261','262'\". Subqueries are not allowed. Example: [{\"field\":\"MATNR\",\"op\":\"=\",\"value\":\"300006888\"},{\"field\":\"BUDAT_MKPF\",\"op\":\">=\",\"value\":\"20250101\"}].",
      +  "items": {
      +    "properties": {
      +      "field": {
      +        "description": "SAP field name (uppercase)",
      +        "type": "string"
      +      },
      +      "op": {
      +        "description": "Comparison operator",
      +        "type": "string"
      +      },
      +      "value": {
      +        "description": "Value to compare (omit for IS NULL / IS NOT NULL)",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "field",
      +      "op"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
  13. Addedv0.9.6
  14. Removedv0.9.3
  15. Changed1 schema field changedv0.9.2
    • addedInput schema / properties / maxResults
      Added value: +{
      +  "description": "For DEVC: max number of objects to list (default 200, clamped to [1, 1000]). Larger packages may be silently truncated by SAP at this limit; raise it if needed.",
      +  "type": "number"
      +}
  16. Changed2 schema fields changedv0.9.0
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL, VIEW, STRU, DOMA, DTEL, TRAN, TABLE_CONTENTS, DEVC, SOBJ, SYSTEM, COMPONENTS, MESSAGES, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FTG2, ENHO, VERSIONS, VERSION_SOURCE."New value: +"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL (transparent tables and DDIC structures), VIEW, DOMA, DTEL, MSAG, TRAN, TABLE_CONTENTS, DEVC, SOBJ, SYSTEM, COMPONENTS, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FEATURE_TOGGLE, ENHO, VERSIONS, VERSION_SOURCE. Deprecated aliases: MESSAGES (use MSAG), FTG2 (use FEATURE_TOGGLE)."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DCLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "SKTD",
      -  "TABL",
      -  "VIEW",
      -  "STRU",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TABLE_CONTENTS",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS",
      -  "AUTH",
      -  "FTG2",
      -  "ENHO",
      -  "VERSIONS",
      -  "VERSION_SOURCE"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "TABL",
      +  "VIEW",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TABLE_CONTENTS",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MSAG",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FEATURE_TOGGLE",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE"
      +]
  17. Changed9 schema fields changedv0.7.2
    • addedInput schema / properties / force_refresh
      Added value: +{
      +  "description": "For source reads: bypass cached source and inactive-list state before reading. Use when you know the object changed outside ARC-1.",
      +  "type": "boolean"
      +}
    • changedInput schema / properties / group / description
      Previous value: -"For FUNC type. The function group containing the function module. Optional — auto-resolved via SAPSearch if omitted."New value: +"For FUNC/VERSIONS type. The function group containing the function module. Optional for FUNC — auto-resolved via SAPSearch if omitted. Required for VERSIONS when querying a function module revision feed."
    • changedInput schema / properties / include / description
      Previous value: -"For CLAS: DO NOT use this to read the main class — omit include entirely to get the full class source (CLASS DEFINITION + CLASS IMPLEMENTATION). This parameter reads class-LOCAL auxiliary files only: definitions (local type definitions, NOT the main class definition), implementations (local helper class implementations), macros, testclasses (ABAP Unit). Comma-separated. Not all classes have these sections — missing ones return a note instead of an error. For DDLS: use include=\"elements\" to get a structured field list extracted from the CDS DDL source — shows key fields, aliases, associations, and expression types (calculated, case, cast). Useful for understanding CDS entity structure without parsing raw DDL."New value: +"For CLAS: DO NOT use this to read the main class — omit include entirely to get the full class source (CLASS DEFINITION + CLASS IMPLEMENTATION). This parameter reads class-LOCAL auxiliary files only: definitions (local type definitions, NOT the main class definition), implementations (local helper class implementations), macros, testclasses (ABAP Unit). Comma-separated. Not all classes have these sections — missing ones return a note instead of an error. For DDLS: use include=\"elements\" to get a structured field list extracted from the CDS DDL source — shows key fields, aliases, associations, and expression types (calculated, case, cast). Useful for understanding CDS entity structure without parsing raw DDL. For VERSIONS (CLAS): include selects the class include history to query (main, definitions, implementations, macros, testclasses)."
    • changedInput schema / properties / objectType / description
      Previous value: -"For API_STATE: SAP object type (CLAS, INTF, PROG, FUGR, TABL, DDLS, etc.) — auto-detected from name if omitted"New value: +"For API_STATE and VERSIONS: SAP object type (CLAS, INTF, PROG, FUNC, INCL, DDLS, DCLS, BDEF, SRVD, etc.). For API_STATE: auto-detected from name if omitted. For VERSIONS: required to pick the correct revisions endpoint (e.g., \"FUNC\" + group for function modules); inferred from CL_/IF_/CX_ name prefixes when possible, defaults to PROG."
    • changedInput schema / properties / sqlFilter / description
      Previous value: -"For TABLE_CONTENTS: SQL WHERE clause filter"New value: +"For TABLE_CONTENTS: condition expression only (no WHERE, no SELECT), e.g. \"MANDT = '100'\" or \"MATNR LIKE 'Z%'\"."
    • changedInput schema / properties / type / description
      Previous value: -"Object type to read"New value: +"Object type to read (on-prem): PROG, CLAS, INTF, FUNC, FUGR, INCL, DDLS, DCLS, DDLX, BDEF, SRVD, SRVB, SKTD, TABL, VIEW, STRU, DOMA, DTEL, TRAN, TABLE_CONTENTS, DEVC, SOBJ, SYSTEM, COMPONENTS, MESSAGES, TEXT_ELEMENTS, VARIANTS, BSP, BSP_DEPLOY, API_STATE, INACTIVE_OBJECTS, AUTH, FTG2, ENHO, VERSIONS, VERSION_SOURCE."
    • changedInput schema / properties / type / enum
      Previous value: -[
      -  "PROG",
      -  "CLAS",
      -  "INTF",
      -  "FUNC",
      -  "FUGR",
      -  "INCL",
      -  "DDLS",
      -  "DDLX",
      -  "BDEF",
      -  "SRVD",
      -  "SRVB",
      -  "TABL",
      -  "VIEW",
      -  "STRU",
      -  "DOMA",
      -  "DTEL",
      -  "TRAN",
      -  "TABLE_CONTENTS",
      -  "DEVC",
      -  "SOBJ",
      -  "SYSTEM",
      -  "COMPONENTS",
      -  "MESSAGES",
      -  "TEXT_ELEMENTS",
      -  "VARIANTS",
      -  "BSP",
      -  "BSP_DEPLOY",
      -  "API_STATE",
      -  "INACTIVE_OBJECTS"
      -]New value: +[
      +  "PROG",
      +  "CLAS",
      +  "INTF",
      +  "FUNC",
      +  "FUGR",
      +  "INCL",
      +  "DDLS",
      +  "DCLS",
      +  "DDLX",
      +  "BDEF",
      +  "SRVD",
      +  "SRVB",
      +  "SKTD",
      +  "TABL",
      +  "VIEW",
      +  "STRU",
      +  "DOMA",
      +  "DTEL",
      +  "TRAN",
      +  "TABLE_CONTENTS",
      +  "DEVC",
      +  "SOBJ",
      +  "SYSTEM",
      +  "COMPONENTS",
      +  "MESSAGES",
      +  "TEXT_ELEMENTS",
      +  "VARIANTS",
      +  "BSP",
      +  "BSP_DEPLOY",
      +  "API_STATE",
      +  "INACTIVE_OBJECTS",
      +  "AUTH",
      +  "FTG2",
      +  "ENHO",
      +  "VERSIONS",
      +  "VERSION_SOURCE"
      +]
    • addedInput schema / properties / version
      Added value: +{
      +  "description": "Source version to read. \"active\" (default) returns the last activated version. \"inactive\" returns the user's unactivated draft or active if no draft exists. \"auto\" returns the draft if one exists, else active.",
      +  "enum": [
      +    "active",
      +    "inactive",
      +    "auto"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / versionUri
      Added value: +{
      +  "description": "For VERSION_SOURCE: URI of a specific revision from SAPRead(type=\"VERSIONS\") response (.revisions[].uri). Must start with /sap/bc/adt/.",
      +  "type": "string"
      +}
  18. First observedv0.6.4

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=true, so the description carries the rest and does add real context: which types are on-prem only, the allowDataPreview gating and SAP_BASIS 752+ requirement for TABLE_QUERY, version defaulting behavior, force_refresh cache bypass, and the 'draft may silently return active' caveat. It still omits return-shape, error and pagination/rate behavior.

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

Conciseness2/5

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

The first sentence and the SAPContext routing hint are front-loaded and valuable, but they are followed by a single unstructured wall of text whose long type enumeration duplicates the schema's own enum description almost verbatim. Large parts of the paragraph do not earn their place because the schema already provides them.

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 24-parameter, no-output-schema tool, the description covers type families, format modes, version selection and gating well enough to call it correctly. It is not fully complete on cross-type interaction rules (e.g. how format=editable combines with every type), but the essentials are present.

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 each parameter already carries a rich enum description, so 3 is the baseline. The description largely restates the same type/format/version semantics that the schema already documents rather than adding new meaning beyond 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 opening sentence states a specific verb and resource set ('Read SAP ABAP source, metadata or syntax-check results'), and the second sentence explicitly routes to the sibling SAPContext for adjacent tasks, so an agent can distinguish this from SAPContext without opening a 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?

It gives clear usage context and names an alternative priority ('prefer SAPContext first' for purpose/explanations/specs/reviews/pre-change context), plus per-type steering hints like expand_includes for FUGR and TABLE_QUERY vs TABLE_CONTENTS. What is missing is any negative guidance against the other siblings (SAPSearch, SAPNavigate, SAPLint).

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