Skip to main content
Glama

SAPNavigate

Read-only

Find ABAP definitions, references, completions, class hierarchies, and where-used dependency relations by object type, package, or URI.

Instructions

Navigate code: definitions, references, completion, hierarchy. references: where-used objects by default; detail=positions/snippets adds bounded native usages; objectType filters results (e.g. CLAS/OC, PROG/P); type+name replaces uri. hierarchy queries SEOMETAREL for superclass/interfaces/direct subclasses: requires data/SQL opt-in + matching scope; otherwise inspect class MAIN with SAPRead. CDS (DDLS) impact: SAPContext(action="impact") classifies where-used into RAP buckets. Experimental relations: dependency maps or package neighborhoods, then selected reads. Consumer locations: references; objectType="CLAS/OC" for class-only; otherwise omit. Active metadata, not source-call/runtime proof. Coverage unknown. type+name required, no uri/source.

Input Schema

NameRequiredDescriptionDefault
uriNoDefinition/completion: source URI with line, column, source. References: uri or type+name.
lineNoLine (1-based integer)
nameNoObject name — alternative to uri for references.
typeNoRoot object type, paired with name instead of uri (e.g. type="INTF"). Not the result-type filter. relations: CLAS, INTF, DDLS, DCLS, BDEF, SRVD, TABL, TTYP, DTEL, DOMA, PROG, INCL, FUGR, FUNC, VIEW, ENHO, MSAG, TRAN, SHLP, SKTD, ENHS, ENQU, TYPE, EVTB, DSFD. ENHO/XHB, ENHS/XSB only; TTYP=table type; MSAG=message class.
depthNorelations: native steps (default 1), not source-call hops.
actionYesNavigation action
columnNoColumn (0-based integer)
detailNoreferences: objects (default), or expand at most 10 native nodes for positions/snippets. Method positions can be component-relative; inspect usageDetails limits.
sourceNoCurrent source for definition/completion
packagesNoreferences: exact package names (e.g. ["$TMP"]); no wildcards or implicit subpackages. Native scope when available, otherwise local filtering.
directionNorelations: incoming=users; outgoing=dependencies (default).
maxResultsNoreferences: max entries (default 100, max 1000). "total" counts every match of the filter. relations: node cap incl. root, 1–100 (default 50); may stop earlier.
objectTypeNoreferences RESULT filter, not the root type: CLAS/OC, PROG/P, FUGR/FF. Omit for all consumer types. A bare prefix ("CLAS") matches every subtype.
expandPackagesNorelations: expand exact packages beyond root; others visible. Not authorization.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv1.9.0
    • addedInput schema / properties / detail
      Added value: +{
      +  "description": "references: objects (default), or expand at most 10 native nodes for positions/snippets. Method positions can be component-relative; inspect usageDetails limits.",
      +  "enum": [
      +    "objects",
      +    "positions",
      +    "snippets"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / packages
      Added value: +{
      +  "description": "references: exact package names (e.g. [\"$TMP\"]); no wildcards or implicit subpackages. Native scope when available, otherwise local filtering.",
      +  "items": {
      +    "maxLength": 30,
      +    "type": "string"
      +  },
      +  "maxItems": 20,
      +  "minItems": 1,
      +  "type": "array"
      +}
  2. Changed1 schema field changedv1.6.0
    • changedInput schema / properties / uri / description
      Previous value: -"Definition needs source URI, line, column and source; references also accepts type+name."New value: +"Definition/completion: source URI with line, column, source. References: uri or type+name."
  3. Changed4 schema fields changedv1.5.1
    • changedInput schema / properties / column / description
      Previous value: -"Column number (1-based)"New value: +"Column (0-based integer)"
    • changedInput schema / properties / line / description
      Previous value: -"Line number (1-based)"New value: +"Line (1-based integer)"
    • changedInput schema / properties / source / description
      Previous value: -"Current source code (for definition/completion)"New value: +"Current source for definition/completion"
    • changedInput schema / properties / uri / description
      Previous value: -"Source URI of the object. Optional for references if type+name are provided."New value: +"Definition needs source URI, line, column and source; references also accepts type+name."
  4. Changed7 schema fields changedv1.3.0
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "definition",
      -  "references",
      -  "completion",
      -  "hierarchy"
      -]New value: +[
      +  "definition",
      +  "references",
      +  "completion",
      +  "hierarchy",
      +  "relations"
      +]
    • addedInput schema / properties / depth
      Added value: +{
      +  "description": "relations: native steps (default 1), not source-call hops.",
      +  "maximum": 3,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / direction
      Added value: +{
      +  "description": "relations: incoming=users; outgoing=dependencies (default).",
      +  "enum": [
      +    "incoming",
      +    "outgoing"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / expandPackages
      Added value: +{
      +  "description": "relations: expand exact packages beyond root; others visible. Not authorization.",
      +  "items": {
      +    "maxLength": 120,
      +    "minLength": 1,
      +    "pattern": "^(?:/[A-Za-z0-9_]+/)?[A-Za-z0-9_$]+$",
      +    "type": "string"
      +  },
      +  "maxItems": 8,
      +  "type": "array"
      +}
    • changedInput schema / properties / maxResults / description
      Previous value: -"references: max entries (default 100, max 1000). \"total\" counts every match of the filter."New value: +"references: max entries (default 100, max 1000). \"total\" counts every match of the filter. relations: node cap incl. root, 1–100 (default 50); may stop earlier."
    • changedInput schema / properties / objectType / description
      Previous value: -"references: keep only results of this ADT type, slash format (CLAS/OC, PROG/P, FUGR/FF). A bare prefix (\"CLAS\") matches every subtype."New value: +"references RESULT filter, not the root type: CLAS/OC, PROG/P, FUGR/FF. Omit for all consumer types. A bare prefix (\"CLAS\") matches every subtype."
    • changedInput schema / properties / type / description
      Previous value: -"Object type (PROG, CLAS, INTF, FUNC, etc.) — alternative to uri for references."New value: +"Root object type, paired with name instead of uri (e.g. type=\"INTF\"). Not the result-type filter. relations: CLAS, INTF, DDLS, DCLS, BDEF, SRVD, TABL, TTYP, DTEL, DOMA, PROG, INCL, FUGR, FUNC, VIEW, ENHO, MSAG, TRAN, SHLP, SKTD, ENHS, ENQU, TYPE, EVTB, DSFD. ENHO/XHB, ENHS/XSB only; TTYP=table type; MSAG=message class."
  5. Changed3 schema fields changedv1.0.2
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / maxResults
      Added value: +{
      +  "description": "references: max entries (default 100, max 1000). \"total\" counts every match of the filter.",
      +  "type": "number"
      +}
    • changedInput schema / properties / objectType / description
      Previous value: -"For references action: filter where-used results by ADT object type in slash format (e.g., PROG/P, CLAS/OC, FUGR/FF, INTF/OI). On systems supporting the scope endpoint, only returns references from objects of the specified type. On older systems, the filter is ignored and all references are returned with a note."New value: +"references: keep only results of this ADT type, slash format (CLAS/OC, PROG/P, FUGR/FF). A bare prefix (\"CLAS\") matches every subtype."
  6. Addedv0.9.6
  7. Removedv0.9.3
  8. Changed1 schema field changedv0.9.0
    • changedInput schema / properties / objectType / description
      Previous value: -"For references action: filter where-used results by ADT object type in slash format (e.g., PROG/P, CLAS/OC, FUNC/FM, INTF/OI). On systems supporting the scope endpoint, only returns references from objects of the specified type. On older systems, the filter is ignored and all references are returned with a note."New value: +"For references action: filter where-used results by ADT object type in slash format (e.g., PROG/P, CLAS/OC, FUGR/FF, INTF/OI). On systems supporting the scope endpoint, only returns references from objects of the specified type. On older systems, the filter is ignored and all references are returned with a note."
  9. First observedv0.6.4

TDQS

A4.4/5.0
Behavior5/5

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

Beyond readOnlyHint=true, it discloses the crucial epistemic limits: 'Active metadata, not source-call/runtime proof. Coverage unknown,' plus 'type+name required, no uri/source' and prerequisites for hierarchy. It also warns that positions/snippets are bounded to at most 10 native nodes and that relations caps may stop earlier.

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?

Front-loaded with the action list and extremely dense with zero filler sentences; each clause carries a constraint, prerequisite, or routing rule. The heavy semicolon-and-fragment style (e.g. 'hierarchy queries SEOMETAREL for superclass/interfaces/direct subclasses: requires data/SQL opt-in + matching scope') makes it harder to scan than a structured layout would.

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 14-parameter, five-action tool with no output schema, the description covers action selection, prerequisites, result-shape hints ('objects' default vs positions/snippets), and result caps. Minor gaps remain, such as what definition/completion actually return and how depth interacts across actions, but the essentials for correct invocation are present.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3; the description still adds value by stating the relationships the schema does not — 'type+name replaces uri', 'objectType filters results' as a RESULT filter distinct from root type, and that detail=positions/snippets expands usages. Slightly redundant with schema descriptions that repeat the same notes.

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

Purpose4/5

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

The opening sentence names a concrete verb and resource set ('Navigate code: definitions, references, completion, hierarchy') and explicitly routes two cases to named siblings (SAPRead for plain class inspection, SAPContext for CDS impact). The headline omits the fifth action 'relations', which only appears later as 'Experimental relations', slightly weakening the at-a-glance scope.

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

Usage Guidelines5/5

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

Gives explicit when/when-not and alternatives: hierarchy requires data/SQL opt-in and matching scope 'otherwise inspect class MAIN with SAPRead'; CDS impact belongs to SAPContext(action="impact"); consumer locations come from references with objectType="CLAS/OC" for class-only. Each alternative is named with the condition that selects it.

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