Skip to main content
Glama
Hollway

mcp-abap-abap-adt-api

by Hollway

compareRevisions

Read-only

Compare two versions of an ABAP object as a unified diff. Choose sides by revision, transport, or active/inactive; default shows the impact of the last change.

Instructions

What changed between two versions of one object, as a unified diff. Name each side by a revision number from revisions, by a transport request, or by "active" (what the system executes), "inactive" (the working version) or "latest" (newest in the history). With neither side given it compares the two newest versions, which answers "what did the last change do"; "active" against "inactive" shows an edit that is written but not activated. The diff anchors on lines that occur once on each side, so an inserted method reads as an insertion instead of two rewritten methods.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toNoThe newer side, same forms. Defaults to the newest version.
fromNoThe older side: a revision number ("00087"), a transport request, "active", "inactive" or "latest". Defaults to the second newest version.
contextNoLines of context around each change. Default 3.
objectUrlNoADT object URL, e.g. /sap/bc/adt/oo/classes/zcl_app. Only needed for a type objectName cannot address.
clsIncludeNoFor a class, which include to compare: definitions, implementations, macros, testclasses or main (the default).
objectNameNoObject name, e.g. ZCL_APP. Use with objectType.
objectTypeNoADT type: CLAS/OC, INTF/OI, PROG/P, PROG/I, FUGR/F, DDLS/DF, TABL/DS. Defaults to CLAS/OC.
maxDiffCharsNoCut the diff off after this many characters, keeping the summary. Default 40000.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, so the safety profile is already covered. The description adds valuable behavioral detail beyond that: the default behavior when neither side is given, the meaning of 'active' and 'inactive' (what the system executes vs the working version), and the diff anchoring rule that avoids treating an inserted method as two rewritten methods. This goes well beyond a simple 'compares versions' statement.

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 every sentence carries unique information: purpose, side specifiers, defaults and a special case, and diff anchoring behavior. It is front-loaded with the core purpose and then layers on usage detail. No filler or repetition; the structure flows logically from what to how.

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 8 parameters and no output schema, the description covers the essential operational context: what the tool does, how to specify sides, defaults, and diff quality. It does not detail the output format beyond 'unified diff', but that is a well-known standard. The standard ADT addressing parameters (objectUrl, objectName, objectType) are self-explanatory from the schema. The description is sufficient for an agent to call it correctly without missing critical information.

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% and the parameter descriptions already list the allowed forms for 'from' and 'to'. The tool description enriches these by explaining the semantics of each side specifier: 'active' means what the system executes, 'inactive' is the working version, and 'latest' is the newest in history. It also clarifies the defaults for both parameters (newest and second newest). This adds meaning beyond the schema's terse enum-like lists.

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 clear verb+resource: 'What changed between two versions of one object, as a unified diff.' It explicitly names the operation (compare) and the resource (object), and distinguishes itself from sibling tools like 'revisions' (which lists versions) by focusing on the diff. The specific side-naming forms (revision, transport request, active, inactive, latest) make its purpose unmistakable.

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 several concrete use scenarios: comparing the two newest versions to answer 'what did the last change do', and comparing 'active' against 'inactive' to see an unactivated edit. It gives clear context for when to invoke the tool, though it does not explicitly name alternative tools or state when not to use it. The guidance is implicit in the scenarios but not exclusionary.

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

Deploy Server

Other Tools