{"$schema":"https://verifymcp.io/schemas/trust-report.json","schemaVersion":1,"license":{"name":"CC BY-NC 4.0","url":"https://creativecommons.org/licenses/by-nc/4.0/"},"generatedAt":"2026-11-05T17:26:02.939Z","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro","markdownUrl":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro.md","server":{"slug":"fr0ster-mcp-abap-adt-ro","name":"io.github.fr0ster/mcp-abap-adt-ro","registryName":"io.github.fr0ster/mcp-abap-adt-ro","description":"Read-only MCP server for SAP ABAP ADT over HTTP, RFC or SNC: the readonly, system and search tools","registryStatus":"active","deletedAt":null,"statusMessage":null,"liveness":"live","publisher":{"class":"unknown","claimed":false}},"component":{"slug":"mcp-abap-adt-core-ro","type":"npm","identifier":"@mcp-abap-adt/core-ro","withdrawn":false,"url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro","version":"20.0.0","transport":"stdio","scoredAt":"2026-11-05T06:05:48.082Z"},"score":{"total":75,"tier":"medium","status":"scored","weekDelta":4,"history":[{"date":"2026-11-05","total":75},{"date":"2026-11-04","total":74},{"date":"2026-11-03","total":74},{"date":"2026-11-02","total":73},{"date":"2026-11-01","total":73},{"date":"2026-10-31","total":72},{"date":"2026-10-30","total":72},{"date":"2026-10-29","total":71},{"date":"2026-10-28","total":71},{"date":"2026-10-27","total":70},{"date":"2026-10-26","total":70},{"date":"2026-10-25","total":69},{"date":"2026-10-24","total":69},{"date":"2026-10-23","total":69},{"date":"2026-10-22","total":68},{"date":"2026-10-21","total":68}]},"categories":[{"name":"Supply Chain Security","score":99,"verdict":"partial","reasons":["No malware found by supply-chain analysis.","No known CVEs affecting this package version or its production dependencies.","No install/post-install scripts declared.","44 of 171 dependencies flagged as unhealthy."],"codes":[{"code":"supplychain.malware_clean","args":{}},{"code":"cve.none","args":{}},{"code":"installscript.none","args":{}},{"code":"dephealth.assessed","args":{"deps":"171","unhealthy":"44"}}]},{"name":"Provenance & Transparency","score":48,"verdict":"fail","reasons":["Source repository is publicly reachable at the declared URL.","Provenance check failed: no build-provenance attestation is published.","Clear OSI-approved license (AGPL-3.0-only).","Actively maintained (last published 1 days ago).","Publishes a security disclosure policy (SECURITY.md)."],"codes":[{"code":"provenance.repo_verified","args":{}},{"code":"provenance.none","args":{}},{"code":"license.osi","args":{"spdx":"AGPL-3.0-only"}},{"code":"maintenance.recent","args":{"age_days":"1"}},{"code":"disclosure.present","args":{}}]},{"name":"Schema Quality & AI Usability","score":59,"verdict":"fail","reasons":["AI-judged instruction clarity (good).","Context-footprint check failed: tool/resource definitions use about 16243 tokens (~228/item across 71 items; 71 tools + 0 resources), over budget; trim descriptions and params.","Usage-examples check failed: none of the tools include examples."],"codes":[{"code":"schema.ai_quality","args":{"band":"good"}},{"code":"schema.footprint_heavy","args":{"avg":"228","items":"71","tools":"71","tokens":"16243","resources":"0"}},{"code":"schema.examples_absent","args":{}}]},{"name":"Stability & Change Management","score":50,"verdict":"partial","reasons":["Stability observed for 15 of 30 days with no destabilising changes; credit accrues until the full window elapses."],"codes":[{"code":"stability.building_history","args":{"days":"15"}}]},{"name":"Tool Coverage","score":95,"verdict":"partial","reasons":["100% of tools have a non-trivial description (not blank, and not just the tool's name).","85% of tool parameters carry a description."],"codes":[{"code":"toolquality.descriptions","args":{"pct":"100"}},{"code":"toolquality.param_docs","args":{"pct":"85"}}]},{"name":"Tool Safety","score":100,"verdict":"pass","reasons":["No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.","We read all 71 captured tool definition(s), and no name or description among them implies an irreversible operation.","An AI judge read all 71 captured unit(s) of tool text and found none that tries to manipulate the model reading it."],"codes":[{"code":"toolsafety.injection_clean","args":{}},{"code":"toolsafety.destructive_none","args":{"tools":"71"}},{"code":"toolsafety.manipulation_clean","args":{"units":"71","judged":"71"}}]},{"name":"Capabilities","score":100,"verdict":"pass","reasons":["Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28."],"codes":[{"code":"protocol.supported","args":{"latest":"2026-07-28","version":"2025-11-25"}}]}],"inconclusive":[],"malware":[],"components":[{"slug":"mcp-abap-adt-core-ro","type":"npm","identifier":"@mcp-abap-adt/core-ro","withdrawn":false,"score":75,"current":true,"url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro","markdownUrl":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro.md"}],"facts":[{"label":"Registry","value":"npm"},{"label":"Package","value":"@mcp-abap-adt/core-ro"},{"label":"Version","value":"20.0.0"},{"label":"Transport","value":"stdio"}],"install":{"available":true,"bundleSha256":null},"tools":[{"name":"GetTableContents","title":null,"description":"[read-only] Reads the contents (data preview, like SE16/SE16N) of the ABAP database table or CDS view named by table_name: every column, up to max_rows rows (default 100). Answers sql_query, row_number (the max_rows asked), execution_time, total_rows (the rows the table or view holds), columns and rows. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"max_rows","type":"number","required":false,"description":"Maximum number of rows to retrieve"},{"name":"table_name","type":"string","required":true,"description":"Name of the ABAP table"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":358},{"name":"GetPackageContents","title":null,"description":"[read-only] Retrieve objects inside an ABAP package as a flat list. Supports recursive traversal of subpackages. Takes package_name (one package: its list) or package_names (several packages: one entry per package, in the order given, each { package_name, objects } or { package_name, error }). Each level of the walk is read in one ADT batch envelope: the root node structures of its packages, then their type nodes; with include_descriptions, as single requests, several at a time. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"include_descriptions","type":"boolean","required":false,"description":"Include each object's description in the response. The walk's levels are then read as single requests, several at a time, rather than in ADT batch envelopes (default: false)"},{"name":"include_subpackages","type":"boolean","required":false,"description":"Include contents of subpackages recursively (default: false)"},{"name":"max_depth","type":"number","required":false,"description":"Maximum depth for recursive package traversal (default: 5)"},{"name":"package_name","type":"string","required":false,"description":"Name of the ABAP package (give this or package_names)"},{"name":"package_names","type":"array","required":false,"description":"Names of several ABAP packages, read together (give this or package_name)"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":411},{"name":"GetInclude","title":null,"description":"[read-only] Read ANY single ABAP include source by name, from anywhere in the repository (an include may live outside any single program tree). Reads includes (PROG/I) by name. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"include_name","type":"string","required":true,"description":"Name of the ABAP Include"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":93},{"name":"GetIncludesList","title":null,"description":"[read-only] Recursively discover and list ALL include files within an ABAP program or include. Takes object_name and object_type (one object: its tree) or objects (several objects: one entry per object, in the order given, each { object_name, object_type, tree } or { object_name, object_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"detailed","type":"boolean","required":false,"description":"[read-only] If true, returns structured JSON with metadata and raw XML."},{"name":"object_name","type":"string","required":false,"description":"Name of the ABAP program or include (with object_type; or give objects)"},{"name":"object_type","type":"string","required":false,"description":"[read-only] ADT object type of the parent. Only these four values are supported: 'PROG/P' (program), 'PROG/I' (include), 'FUGR' (function group), 'CLAS/OC' (class). Any other value is rejected by the…"},{"name":"objects","type":"array","required":false,"description":"[read-only] Several objects, read together (give this or object_name and object_type)"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":390},{"name":"GetEnhancements","title":null,"description":"[read-only] Lists the enhancements (enhancement implementations) of the program, include, function group or class named by object_name and object_type. Takes object_name and object_type (one object: its enhancements) or objects (several objects: one entry per object, in the order given, each its enhancements answer or { object_name, object_type, error }). When object_type is one of CLASS, CLAS, CLAS/OC, FUNCTION_GROUP, FUNCTIONGROUP, FUGR, FUGR/F, PROGRAM, PROG, PROG/P and include_nested is any value but true, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"object_name","type":"string","required":false,"description":"Name of the ABAP object (with object_type; or give objects)"},{"name":"object_type","type":"string","required":false,"description":"[read-only] Type of the ABAP object"},{"name":"objects","type":"array","required":false,"description":"[read-only] Several objects, read together (give this or object_name and object_type)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":227},{"name":"GetEnhancementSpot","title":null,"description":"[read-only] Retrieve metadata and list of implementations for a specific enhancement spot. Runs outside batch mode.","inputs":[{"name":"enhancement_spot","type":"string","required":true,"description":"Name of the enhancement spot"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":45},{"name":"GetEnhancementImpl","title":null,"description":"[read-only] Retrieve source code of a specific enhancement implementation by its name and enhancement spot. Runs outside batch mode.","inputs":[{"name":"enhancement_name","type":"string","required":true,"description":"[read-only] Name of the enhancement implementation"},{"name":"enhancement_spot","type":"string","required":true,"description":"Name of the enhancement spot"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":65},{"name":"GetTransport","title":null,"description":"[read-only] Retrieve ABAP transport request information including metadata, included objects, and status from SAP system. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"include_objects","type":"boolean","required":false,"description":"Include list of objects in transport (default: true)"},{"name":"include_tasks","type":"boolean","required":false,"description":"Include list of tasks in transport (default: true)"},{"name":"transport_number","type":"string","required":true,"description":"Transport request number, not a task"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":112},{"name":"ListTransports","title":null,"description":"[read-only] List transport requests for the current or specified user. Returns modifiable and/or released workbench and customizing requests. `user` and modifiable-only are both applied client-side, over every request the server's default search configuration answers; ADT receives the default search alone. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"modifiable_only","type":"boolean","required":false,"description":"Only return modifiable (not yet released) transports; applied client-side. Default: true."},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"},{"name":"user","type":"string","required":false,"description":"The user to filter to: an SAP user id (matched in upper case); applied client-side. If not provided, defaults to the current session user, so an unfiltered call already answers only that user's trans…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":362},{"name":"ReadTransportObjects","title":null,"description":"[read-only] Lists the objects the transport request or task named by transport_number holds, each with its `position`, which a removal of the entry names. A task answers its own entries; a request answers every task's entries, each once, with its `task` number and position — the task a removal addresses. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"transport_number","type":"string","required":true,"description":"Transport REQUEST or TASK number. A task answers its own entries; a request answers the entries of each of its tasks, each with its `task` number — the task a removal addresses."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":198},{"name":"ReadTransportActionLog","title":null,"description":"[read-only] Reads the action log of the transport request named by transport_number: one entry per lifecycle event — created, object added, object deleted, owner changed. It confirms that an object entry was taken out of the request, since a removal answers by echoing what it was asked. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"transport_number","type":"string","required":true,"description":"Transport REQUEST or TASK number. A request answers its own lifecycle events; a task answers the events of the objects on it."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":180},{"name":"GetStructuresList","title":null,"description":"[read-only] Recursively list the structures embedded in an ABAP structure (.INCLUDE / append), as a tree. Takes structure_name (one structure: its tree) or structure_names (several structures: one entry per structure, in the order given, each its tree answer or { structure_name, error }). Works on BASIS 7.50 and later, where the DDIC structure/table endpoints it reads exist; legacy systems (BASIS < 7.50) refuse it (issue #207). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"include_extensions","type":"boolean","required":false,"description":"[read-only] Also find extension (append) structures via where-used (objects that `extend type <this> with …`). Default true. Set false to skip the (slower) where-used lookups and return includes only."},{"name":"structure_name","type":"string","required":false,"description":"Structure name (or give structure_names)."},{"name":"structure_names","type":"array","required":false,"description":"Several structure names, read together (give this or structure_name)."},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"},{"name":"version","type":"string","required":false,"description":"Version to read: \"active\" (default) or \"inactive\"."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":393},{"name":"GetObjectVersions","title":null,"description":"[read-only] Lists the version history of the class, program, interface, function module, table, structure, CDS view, behavior definition or metadata extension named by object_name and object_type. Returns each version with its versionId, author, updatedAt, title, the transportRequest (and transportDescription) that produced it when available, and the opaque content_uri that names the version's source. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"function_group_name","type":"string","required":false,"description":"Owning function group name. Required when object_type is function_module."},{"name":"object_name","type":"string","required":true,"description":"Object name."},{"name":"object_type","type":"string","required":true,"description":"Object type."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":162},{"name":"GetObjectVersionSource","title":null,"description":"[read-only] Reads the source code of the object version named by content_uri, an entry of an object's version history, for the object type named by object_type. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"content_uri","type":"string","required":true,"description":"Opaque content_uri of a version, from the object's version history."},{"name":"object_type","type":"string","required":true,"description":"Object type (the same value the version history was read with)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":116},{"name":"GetObjectVersionDiff","title":null,"description":"[read-only] Compares the two object versions named by content_uri_from and content_uri_to, entries of an object's version history, for the object type named by object_type: returns the unified diff (jsdiff) of their sources. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"content_uri_from","type":"string","required":true,"description":"Opaque content_uri of the OLD/base version (from the object's version history)."},{"name":"content_uri_to","type":"string","required":true,"description":"Opaque content_uri of the NEW/compare version (from the object's version history)."},{"name":"object_type","type":"string","required":true,"description":"Object type (the same value the version history was read with)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":158},{"name":"ListFunctionGroupIncludes","title":null,"description":"[read-only] List the includes (TOP, custom) of an ABAP function group. Runs outside batch mode.","inputs":[{"name":"function_group_name","type":"string","required":true,"description":"Function group name."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":46},{"name":"ListFunctionModules","title":null,"description":"[read-only] List the function modules of an ABAP function group. Runs outside batch mode.","inputs":[{"name":"function_group_name","type":"string","required":true,"description":"Function group name."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":41},{"name":"GetBehaviorDefinition","title":null,"description":"[read-only] Reads the RAP behavior definition named by behavior_definition_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"behavior_definition_name","type":"string","required":true,"description":"BehaviorDefinition name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":178},{"name":"GetBehaviorImplementation","title":null,"description":"[read-only] Reads the RAP behavior implementation (its class) named by behavior_implementation_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"behavior_implementation_name","type":"string","required":true,"description":"BehaviorImplementation name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":184},{"name":"GetClass","title":null,"description":"[read-only] Reads the ABAP class named by class_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"class_name","type":"string","required":true,"description":"Class name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":174},{"name":"GetDataElement","title":null,"description":"[read-only] Reads the ABAP data element named by data_element_name in one request: its ADT metadata document (definition, package, description). Returns it under `metadata`, with `part: \"metadata\"`. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"data_element_name","type":"string","required":true,"description":"Data element name."},{"name":"version","type":"string","required":false,"description":"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":127},{"name":"GetDdl","title":null,"description":"[read-only] Reads the CDS view (or classic DDL view) named by ddl_name in one request: its DDL source (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"ddl_name","type":"string","required":true,"description":"DDL source name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":184},{"name":"GetDomain","title":null,"description":"[read-only] Reads the ABAP domain named by domain_name in one request: its ADT metadata document (definition, package, description). Returns it under `metadata`, with `part: \"metadata\"`. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"domain_name","type":"string","required":true,"description":"Domain name."},{"name":"version","type":"string","required":false,"description":"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":122},{"name":"GetFunctionGroup","title":null,"description":"[read-only] Reads the ABAP function group named by function_group_name in one request: its ADT metadata document (package, description, contents). Returns it under `metadata`, with `part: \"metadata\"`. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"function_group_name","type":"string","required":true,"description":"FunctionGroup name."},{"name":"version","type":"string","required":false,"description":"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":127},{"name":"GetFunctionInclude","title":null,"description":"[read-only] Reads the include named by include_name of the ABAP function group named by function_group_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\"). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"function_group_name","type":"string","required":true,"description":"Function group containing the include."},{"name":"include_name","type":"string","required":true,"description":"Include name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":192},{"name":"GetFunctionModule","title":null,"description":"[read-only] Reads the ABAP function module named by function_module_name, BAPI or RFC-enabled ones included, in the function group named by function_group_name, in one request: its source code, which declares the parameter signature (part \"source\", the default; active or inactive version), or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"function_group_name","type":"string","required":true,"description":"Function group containing the function module."},{"name":"function_module_name","type":"string","required":true,"description":"Function module name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":219},{"name":"GetInterface","title":null,"description":"[read-only] Reads the ABAP interface named by interface_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"interface_name","type":"string","required":true,"description":"Interface name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":174},{"name":"GetMessageClass","title":null,"description":"[read-only] Reads the ABAP message class (MSAG/T100) named by message_class_name in one request: its ADT metadata document (XML: name, description, package, master language, messages). Returns it under `metadata`, with `part: \"metadata\"`. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"message_class_name","type":"string","required":true,"description":"Message class name."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":110},{"name":"GetMessageClassMessage","title":null,"description":"[read-only] Reads the message numbered msgno of the ABAP message class (MSAG/T100) named by message_class_name in one request. Answers the one message under `message`: its number (msgno), text (msgtext), self-explanatory flag (selfexplainatory), long-text flag (documented), last changer (lastchangedby), change time (lastmodified), and every other field the system gives the message. A number absent from the class is refused as missing. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"message_class_name","type":"string","required":true,"description":"Parent message class name."},{"name":"msgno","type":"string","required":true,"description":"Message number (e.g., \"001\")."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":220},{"name":"GetMetadataExtension","title":null,"description":"[read-only] Reads the CDS metadata extension named by metadata_extension_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"metadata_extension_name","type":"string","required":true,"description":"MetadataExtension name."},{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":178},{"name":"GetPackage","title":null,"description":"[read-only] Reads the ABAP package named by package_name in one request: its ADT metadata document (description, super-package, sub-packages, ...), active or inactive version. Returns it under `metadata`, with `part: \"metadata\"`: a summary, the details or the document as SAP sent it, per `detail`. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"package_name","type":"string","required":true,"description":"Package name."},{"name":"version","type":"string","required":false,"description":"Version to read: \"active\" (default) for deployed version, \"inactive\" for modified but not activated version."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":197},{"name":"GetProgram","title":null,"description":"[read-only] Reads the ABAP program (report) named by program_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"program_name","type":"string","required":true,"description":"Program name."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":177},{"name":"GetServiceBinding","title":null,"description":"[read-only] Reads the OData service binding named by service_binding_name in one request: its binding document (part \"source\", the default) or its ADT metadata document (part \"metadata\": package, responsible, description), each in the response_format given. Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"response_format","type":"string","required":false,"description":"Preferred response format. \"json\" requests JSON from endpoint, \"xml\" parses XML payload, \"plain\" returns raw text."},{"name":"service_binding_name","type":"string","required":true,"description":"Service binding name. Case-insensitive."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":186},{"name":"GetServiceDefinition","title":null,"description":"[read-only] Reads the service definition named by service_definition_name in one request: its source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"service_definition_name","type":"string","required":true,"description":"ServiceDefinition name."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":177},{"name":"GetStructure","title":null,"description":"[read-only] Reads the ABAP structure named by structure_name in one request: its definition with its fields, as source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"structure_name","type":"string","required":true,"description":"Structure name."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":180},{"name":"GetTable","title":null,"description":"[read-only] Reads the ABAP database table named by table_name in one request: its definition with its fields, as source code (part \"source\", the default; active or inactive version) or its ADT metadata document (part \"metadata\": package, responsible, description). Returns the part read. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"part","type":"string","required":false,"description":"The document to read: \"source\" (default) the source code, \"metadata\" the ADT metadata document (package, responsible, description, ...)."},{"name":"table_name","type":"string","required":true,"description":"Table name."},{"name":"version","type":"string","required":false,"description":"Version of the source: \"active\" (default) for the deployed version, \"inactive\" for the modified version awaiting activation."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":181},{"name":"GetUnitTestResult","title":null,"description":"[read-only] Reads the result of the ABAP Unit test run named by run_id, for a run still running when its start answered. Waits for it within a bound. Runs outside batch mode.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"run_id","type":"string","required":true,"description":"Run id a unit test run answered."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":115},{"name":"GetServiceBindingPreviewUrl","title":null,"description":"[read-only] Build the browser URL that previews a published service binding, and the service and $metadata URLs beside it. Answers: \"open the service in a browser\", \"preview this service binding\", \"what is the OData URL of this binding\". Reads the binding for the service, version and protocol, and the service definition for the entity sets; the preview URL needs an entity set, and the answer names what is missing. A Web API binding answers the service URLs alone. Runs outside batch mode.","inputs":[{"name":"client","type":"string","required":false,"description":"Client for the sap-client parameter. Omitted, the client the system reports is used; an empty string leaves the parameter out."},{"name":"entity_set","type":"string","required":false,"description":"Entity set to open. Omitted, the first one the service definition exposes is used."},{"name":"language","type":"string","required":false,"description":"Logon language for the preview. Omitted, the language the system reports is used."},{"name":"navigation","type":"string","required":false,"description":"Association or composition to follow. Omitted, the first one of the exposed root view is used."},{"name":"service_binding_name","type":"string","required":true,"description":"Service binding name."},{"name":"target_entity_set","type":"string","required":false,"description":"Entity set the navigation reaches. Omitted, the second exposed entity set is used."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":258},{"name":"GetTypeInfo","title":null,"description":"[read-only] Retrieve ABAP type information for domains (DOMA), data elements (DTEL), table types, and structures. Returns field definitions, value ranges, fixed values, and DDIC metadata. Runs outside batch mode.","inputs":[{"name":"include_structure_fallback","type":"boolean","required":false,"description":"When true (default), tries DDIC structure lookup only if type lookup returns 404/empty."},{"name":"type_name","type":"string","required":true,"description":"Name of the ABAP type"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":99},{"name":"GetTransaction","title":null,"description":"[read-only] Reads the properties of the ABAP transaction (t-code) named by transaction_name in one request. Answers the transaction under `object` (name, text, type, package) and its facets under `properties`, in the order the system gives them — the application component chain, the package chain, type, owner, language, creation and the others the system names — each entry with its facet, name, displayName and text. Runs outside batch mode.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"transaction_name","type":"string","required":true,"description":"Name of the ABAP transaction"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":166},{"name":"RuntimeCreateProfilerTraceParameters","title":null,"description":"[read-only] [runtime] Schedule ABAP profiler trace parameters and return profilerId (the request id) for profiled execution. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"aggregate","type":"boolean","required":false,"description":null},{"name":"all_db_events","type":"boolean","required":false,"description":null},{"name":"all_dynpro_events","type":"boolean","required":false,"description":null},{"name":"all_internal_table_events","type":"boolean","required":false,"description":null},{"name":"all_misc_abap_statements","type":"boolean","required":false,"description":null},{"name":"all_procedural_units","type":"boolean","required":false,"description":null},{"name":"all_system_kernel_events","type":"boolean","required":false,"description":null},{"name":"amdp_trace","type":"boolean","required":false,"description":null},{"name":"description","type":"string","required":true,"description":"Human-readable trace description."},{"name":"explicit_on_off","type":"boolean","required":false,"description":null},{"name":"max_size_for_trace_file","type":"number","required":false,"description":null},{"name":"max_time_for_tracing","type":"number","required":false,"description":null},{"name":"sql_trace","type":"boolean","required":false,"description":null},{"name":"with_rfc_tracing","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":208},{"name":"RuntimeListProfilerTraceFiles","title":null,"description":"[read-only] [runtime] List ABAP profiler trace files available in ADT runtime. Returns structured entries with id, recordedAt, user, objectName, state, expiresAt, and sizing/timing fields. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":86},{"name":"RuntimeGetProfilerTraceData","title":null,"description":"[read-only] [runtime] Read profiler trace data by trace id/uri: hitlist, statements, or db accesses. Returns parsed JSON payload. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"auto_drill_down_threshold","type":"number","required":false,"description":"Auto drill-down threshold (for statements view)."},{"name":"id","type":"number","required":false,"description":"Statement node ID (for statements view)."},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"},{"name":"trace_id_or_uri","type":"string","required":true,"description":"Profiler trace ID or full ADT trace URI."},{"name":"view","type":"string","required":true,"description":"Trace view to retrieve."},{"name":"with_details","type":"boolean","required":false,"description":"Include statement details (for statements view)."},{"name":"with_system_events","type":"boolean","required":false,"description":"Include system events."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":330},{"name":"RuntimeGetDumpById","title":null,"description":"[read-only] [runtime] Read an ABAP runtime dump by its dump_id or URI. Answers a summary — runtime error, exception, terminated program, time, user, and the source position where it terminated — and the parsed dump. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"dump_id","type":"string","required":true,"description":"The dump's id, or its URI as a dumps feed entry carries it."},{"name":"response_mode","type":"string","required":false,"description":"What is returned: \"payload\" — the parsed dump, \"summary\" — runtime error, exception, terminated program, time, user and termination position, \"both\" — summary and payload."},{"name":"view","type":"string","required":false,"description":"Dump view mode: default payload, summary section, or formatted long text."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":181},{"name":"RuntimeRunClass","title":null,"description":"[read-only] [runtime] Runs the ABAP class named by class_name, which implements if_oo_adt_classrun, and returns its console output. Set profile=true to also capture a profiler trace: schedules the trace, runs the class under it, then searches the profiler feed for the id this run produced (bounded by max_trace_attempts/trace_retry_delay_ms). If the trace appears only after that bound, the run still answers success with output and profiler_id, trace_id absent — the trace is then found later in the list of profiler trace files. When profile is any value but true, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"aggregate","type":"boolean","required":false,"description":null},{"name":"all_db_events","type":"boolean","required":false,"description":null},{"name":"all_dynpro_events","type":"boolean","required":false,"description":null},{"name":"all_internal_table_events","type":"boolean","required":false,"description":null},{"name":"all_misc_abap_statements","type":"boolean","required":false,"description":null},{"name":"all_procedural_units","type":"boolean","required":false,"description":null},{"name":"all_system_kernel_events","type":"boolean","required":false,"description":null},{"name":"amdp_trace","type":"boolean","required":false,"description":null},{"name":"class_name","type":"string","required":true,"description":"ABAP class name to execute."},{"name":"description","type":"string","required":false,"description":"Profiler trace description (only used when profile=true)."},{"name":"explicit_on_off","type":"boolean","required":false,"description":null},{"name":"max_size_for_trace_file","type":"number","required":false,"description":null},{"name":"max_time_for_tracing","type":"number","required":false,"description":null},{"name":"max_trace_attempts","type":"integer","required":false,"description":"Max attempts to poll the profiler feed for the trace this run produced (default 5). Only used when profile=true."},{"name":"profile","type":"boolean","required":false,"description":"When true, run with the profiler and search the profiler feed for the resulting traceId. Default false."},{"name":"sql_trace","type":"boolean","required":false,"description":null},{"name":"trace_lookup_uris","type":"array","required":false,"description":"Accepted for backward compatibility; no longer affects trace lookup. adt-clients 19 lists the profiler feed as one endpoint, optionally filtered by user — there is nowhere to put a URI."},{"name":"trace_retry_delay_ms","type":"integer","required":false,"description":"Delay in ms between profiler-feed polling attempts (default 2000). Only used when profile=true."},{"name":"with_rfc_tracing","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":458},{"name":"RuntimeRunProgram","title":null,"description":"[read-only] [runtime] Runs the ABAP program (report) named by program_name and returns its output. Set profile=true to also start a profiler trace; the trace is then found in the list of profiler trace files (program execution is fire-and-forget, so the traceId arrives later, through that list). When profile is any value but true, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"aggregate","type":"boolean","required":false,"description":null},{"name":"all_db_events","type":"boolean","required":false,"description":null},{"name":"all_dynpro_events","type":"boolean","required":false,"description":null},{"name":"all_internal_table_events","type":"boolean","required":false,"description":null},{"name":"all_misc_abap_statements","type":"boolean","required":false,"description":null},{"name":"all_procedural_units","type":"boolean","required":false,"description":null},{"name":"all_system_kernel_events","type":"boolean","required":false,"description":null},{"name":"amdp_trace","type":"boolean","required":false,"description":null},{"name":"description","type":"string","required":false,"description":"Profiler trace description (only used when profile=true)."},{"name":"explicit_on_off","type":"boolean","required":false,"description":null},{"name":"max_size_for_trace_file","type":"number","required":false,"description":null},{"name":"max_time_for_tracing","type":"number","required":false,"description":null},{"name":"profile","type":"boolean","required":false,"description":"When true, run with the profiler. Default false. Trace must be located afterwards via RuntimeListProfilerTraceFiles — program execution does not return traceId synchronously."},{"name":"program_name","type":"string","required":true,"description":"ABAP program name to execute."},{"name":"sql_trace","type":"boolean","required":false,"description":null},{"name":"with_rfc_tracing","type":"boolean","required":false,"description":null}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":312},{"name":"RuntimeAnalyzeProfilerTrace","title":null,"description":"[read-only] [runtime] Read profiler trace view and return compact analysis summary (totals + top entries). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"},{"name":"top","type":"number","required":false,"description":"Number of top rows for summary. Default: 10."},{"name":"trace_id_or_uri","type":"string","required":true,"description":"Profiler trace ID or full trace URI."},{"name":"view","type":"string","required":false,"description":null},{"name":"with_system_events","type":"boolean","required":false,"description":"Include system events."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":285},{"name":"RuntimeListFeeds","title":null,"description":"[read-only] [runtime] Reads the ADT runtime feed named by feed_type: with feed_type \"dumps\", the ABAP short dumps (runtime errors) of the program or object named by object_name, of the user named by user, in the time range from–to, filtered also by runtime error, exception, package and application component; with \"system_messages\" or \"gateway_errors\", the system messages or SAP Gateway errors of the user and time range; with \"descriptors\" (the default) or \"variants\", the feeds and their variants. Entries come newest first; each dump carries its dump_id. When more entries remain, next_to is the `to` that reads on; incomplete_second names a second holding more entries than SAP answers in one request. Takes feed_type (one feed: its answer) or feed_types (several feeds with the same filters: one entry per feed, in the order given, each its answer or { feed_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. When feed_type is one of descriptors, variants (absent reads as descriptors) and feed_types is absent, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"component","type":"string","required":false,"description":"Dumps whose application component contains this text, in any case."},{"name":"exception","type":"string","required":false,"description":"Dumps whose exception class contains this text, in any case."},{"name":"feed_type","type":"string","required":false,"description":"Feed to read. \"descriptors\" lists available feeds, \"variants\" lists feed variants, others read that specific feed. Default: descriptors."},{"name":"feed_types","type":"array","required":false,"description":"Several feeds, read together with the same filters (give this or feed_type)."},{"name":"from","type":"string","required":false,"description":"Start of time range in YYYYMMDDHHMMSS format."},{"name":"max_results","type":"number","required":false,"description":"Most entries to return, up to 1000; SAP answers at most 100 per request and the pages are read in turn. An answer holds whole seconds, so it may hold a few entries fewer, or a crowded second more, th…"},{"name":"object_name","type":"string","required":false,"description":"Dumps whose terminated object name contains this text, in any case."},{"name":"package","type":"string","required":false,"description":"Dumps whose object package contains this text, in any case."},{"name":"runtime_error","type":"string","required":false,"description":"Dumps whose runtime error contains this text, in any case."},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"},{"name":"to","type":"string","required":false,"description":"End of time range in YYYYMMDDHHMMSS format, inclusive; pass a previous next_to here to read on."},{"name":"user","type":"string","required":false,"description":"Entries of this SAP user (exact match)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":708},{"name":"RuntimeListSystemMessages","title":null,"description":"[read-only] [runtime] List SM02 system messages. Returns structured entries with id, title, text, severity, validity period, and author. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"from","type":"string","required":false,"description":"Start of time range in YYYYMMDDHHMMSS format."},{"name":"max_results","type":"number","required":false,"description":"Maximum number of messages to return."},{"name":"to","type":"string","required":false,"description":"End of time range in YYYYMMDDHHMMSS format."},{"name":"user","type":"string","required":false,"description":"Filter by author username."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":135},{"name":"RuntimeGetGatewayErrorLog","title":null,"description":"[read-only] [runtime] List SAP Gateway error log (/IWFND/ERROR_LOG) or get error detail. Returns structured entries with type, shortText, transactionId, dateTime, username. With error_url returns full detail including serviceInfo, errorContext, sourceCode, callStack. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"error_url","type":"string","required":false,"description":"Feed URL of a specific error entry (from a previous list response link field). When provided, returns detailed error info instead of listing."},{"name":"from","type":"string","required":false,"description":"Start of time range in YYYYMMDDHHMMSS format."},{"name":"max_results","type":"number","required":false,"description":"Maximum number of errors to return."},{"name":"to","type":"string","required":false,"description":"End of time range in YYYYMMDDHHMMSS format."},{"name":"user","type":"string","required":false,"description":"Filter errors by SAP username."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":201},{"name":"GetSqlQuery","title":null,"description":"[read-only] Execute ABAP SQL SELECT queries on database tables and CDS views via SAP ADT Data Preview API. Use for ad-hoc data retrieval, row counts, and filtered queries. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"row_number","type":"number","required":false,"description":"[read-only] Maximum number of rows to return"},{"name":"sql_query","type":"string","required":true,"description":"SQL query to execute"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":323},{"name":"GetWhereUsed","title":null,"description":"[read-only] Lists where the object named by object_name and object_type is used — a class, interface, program, include, function group, function module (BAPI included), package, table, structure, domain, data element or CDS DDL source: every object that uses, calls or references it, with its type and package. Takes object_name and object_type (one object: its list) or objects (several objects: one entry per object, in the order given, each its list or { object_name, object_type, error }). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. When enable_all_types is any value but true and enable_only_types is absent and disable_types is absent and objects is absent, recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"disable_types","type":"array","required":false,"description":"Remove these ADT object types from the default scope, keeping the rest (e.g. ['CLAS/OC'] to drop class usages). Applied on top of the default scope or of enable_only_types/enable_all_types."},{"name":"enable_all_types","type":"boolean","required":false,"description":"If true, expands the scope to all available object types (Eclipse 'select all' behavior) by flipping every isSelected flag in the scope XML. Default: false (SAP default scope). Note: on large systems…"},{"name":"enable_only_types","type":"array","required":false,"description":"Restrict the search to ONLY these ADT object types (e.g. ['TABL/DS','TABL/DT'] for structures, ['DDLS/DF'] for CDS sources). SAP applies the selection server-side, so unwanted types (e.g. hundreds of…"},{"name":"object_name","type":"string","required":false,"description":"Name of the ABAP object (with object_type; or give objects). For function modules the name MUST be in the form 'GROUP|FM_NAME' (function group name, pipe, function module name)."},{"name":"object_type","type":"string","required":false,"description":"Type of the ABAP object. Case-insensitive. Accepts either a human alias or an ADT type code. Supported values: 'class' / 'clas/oc', 'interface' / 'intf/if', 'program' / 'prog/p', 'include', 'function…"},{"name":"objects","type":"array","required":false,"description":"Several objects, read together (give this or object_name and object_type). The type filters apply to every object."},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":881},{"name":"GetObjectInfo","title":null,"description":"[read-only] Returns the object tree of the package (DEVC), class (CLAS), program (PROG), function group (FUGR) or other object named by parent_type and parent_name. Shows root, group nodes, and terminal leaves up to maxDepth. With enrich=true each node also carries its description and package, from a repository search. Takes parent_type and parent_name (one object: its tree) or objects (several objects: one tree per object, in the order given; a failed one as { OBJECT_TYPE, OBJECT_NAME, error }). Read in ADT batch envelopes: per tier the root node structures of its nodes, then their type nodes; with enrich, the search of every node last. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"enrich","type":"boolean","required":false,"description":"[read-only] Whether to add description and package via SearchObject (default true)"},{"name":"include_descriptions","type":"boolean","required":false,"description":"[read-only] Include each leaf's description. Where the system serves ADT batch, each description is read from the leaf's metadata: one more read per leaf, which on a large tree takes most of the call…"},{"name":"maxDepth","type":"integer","required":false,"description":"[read-only] Maximum tree depth (default depends on type). Every object's own type folders and their contents are always shown (one tier); a higher value only descends further for PACKAGES, expanding…"},{"name":"objects","type":"array","required":false,"description":"[read-only] Several objects, read together (give this or parent_type and parent_name)"},{"name":"parent_name","type":"string","required":false,"description":"[read-only] Parent object name"},{"name":"parent_type","type":"string","required":false,"description":"[read-only] Parent object type (e.g. DEVC/K, CLAS/OC, PROG/P); with parent_name, or give objects"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":580},{"name":"GetAbapAST","title":null,"description":"[read-only] Parse ABAP code and return AST (Abstract Syntax Tree) in JSON format. Runs outside batch mode.","inputs":[{"name":"code","type":"string","required":true,"description":"ABAP source code to parse"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":48},{"name":"GetAbapSemanticAnalysis","title":null,"description":"[read-only] Perform semantic analysis on ABAP code and return symbols, types, scopes, and dependencies. Runs outside batch mode.","inputs":[{"name":"code","type":"string","required":true,"description":"ABAP source code to analyze"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":51},{"name":"GetAbapSystemSymbols","title":null,"description":"[read-only] Resolve ABAP symbols from semantic analysis with SAP system information including types, scopes, descriptions, and packages. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"code","type":"string","required":true,"description":"ABAP source code to analyze and resolve symbols for"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":224},{"name":"GetInactiveObjects","title":null,"description":"[read-only] Get a list of inactive ABAP objects — modified and pending activation. Shows classes, tables, CDS views, and other objects awaiting activation. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":120},{"name":"GetAdtTypes","title":null,"description":"[read-only] Retrieve all valid ADT object types (CLAS, TABL, PROG, DEVC, FUGR, INTF, DDLS, DTEL, DOMA, SRVD, SRVB, BDEF, DDLX, etc.) or validate a specific type name. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"validate_type","type":"string","required":false,"description":"Type name to validate (optional)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":165},{"name":"GetObjectStructure","title":null,"description":"[read-only] Returns the ADT structure of the repository object named by objecttype and objectname as a compact JSON tree. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"objectname","type":"string","required":true,"description":"ADT object name (e.g. /CBY/ACQ_DDL)"},{"name":"objecttype","type":"string","required":true,"description":"ADT object type (e.g. DDLS/DF)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":158},{"name":"GetObjectNodeFromCache","title":null,"description":"[read-only] Returns a node from the in-memory objects list cache by OBJECT_TYPE, OBJECT_NAME, TECH_NAME, and expands OBJECT_URI if present. Runs outside batch mode.","inputs":[{"name":"object_name","type":"string","required":true,"description":"[read-only] Object name"},{"name":"object_type","type":"string","required":true,"description":"[read-only] Object type"},{"name":"tech_name","type":"string","required":true,"description":"[read-only] Technical name"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":89},{"name":"DescribeByList","title":null,"description":"[read-only] Describes each repository object named in objects, in one call: its type, description and package. Input: objects: Array<{ name: string, type?: string }>. Each object may be of type: PROG/P, FUGR, PROG/I, CLAS/OC, FUGR/FC, INTF/OI, TABLE, STRUCTURE, etc. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"objects","type":"array","required":true,"description":null},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":268},{"name":"GetPackageTree","title":null,"description":"[read-only] Returns the complete tree of the ABAP package named by package_name: its subpackages and objects. Returns hierarchical tree with object names, types, and descriptions. Takes package_name (one package: its tree) or package_names (several packages: one entry per package, in the order given, each { package_name, tree, metadata } or { package_name, error }). Read in ADT batch envelopes: the package metadata with the root node structure, then each level of the walk; with include_descriptions, as single requests, several at a time. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"debug","type":"boolean","required":false,"description":"Include diagnostic metadata in response (counts, types, hierarchy info). Default: false"},{"name":"include_descriptions","type":"boolean","required":false,"description":"Include each object's description in the response. The package metadata and the walk's levels are then read as single requests, several at a time, rather than in ADT batch envelopes. Default: false"},{"name":"include_subpackages","type":"boolean","required":false,"description":"Include subpackages recursively in the tree. If false, subpackages are shown as first-level objects but not recursively expanded. Default: true"},{"name":"max_depth","type":"integer","required":false,"description":"Maximum depth for recursive package traversal. Default: 5"},{"name":"package_name","type":"string","required":false,"description":"Package name (give this or package_names)"},{"name":"package_names","type":"array","required":false,"description":"Several package names, read together (give this or package_name)"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":459},{"name":"SearchObject","title":null,"description":"[read-only] Search ABAP repository by object name or wildcard pattern (e.g. 'Z*'). Answers: \"find object X\", \"does X exist\", \"list objects matching...\", \"search for program/class/table by name\". Supports all repository object types — optionally filter by type (PROG, CLAS, INTF, DEVC, TABL, DDLS, DTEL, FUGR, SRVD, SRVB, BDEF, DDLX, etc.). Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"detail","type":"string","required":false,"description":"How much of the answer to return: \"terse\" (default, the fields you need to act), \"full\" (the whole parse), \"raw\" (the document as ADT sent it)."},{"name":"maxResults","type":"number","required":false,"description":"[read-only] Maximum number of results to return"},{"name":"object_name","type":"string","required":true,"description":"[read-only] Object name or mask (e.g. 'MARA*')"},{"name":"object_type","type":"string","required":false,"description":"[read-only] Optional ABAP object type (e.g. 'TABL', 'CLAS/OC')"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":424},{"name":"SearchSource","title":null,"description":"[read-only] Search ABAP source text inside one or more packages (programs, function groups, classes). `packages` accepts `*` masks (Z*, /NS/Z*) alongside exact names; mask resolution is best-effort and scoped to the ADT repository-search result window — some matching packages may be left unscanned. For certainty, pass concrete package names. When using masks, narrow the mask itself and use `object_types`, `object_filter`, and `max_objects` as scan-target controls that apply after package resolution. Comments are searched by default; set exclude_comments=true to drop col-1 `*` and full-line `\"` comments. The `version` parameter affects PROG and CLAS main include reads only — FUGR subinclude reads always go against the active version (the include endpoint reads the active version alone). `truncated.by_object_cap` means at least one object had MORE hits than `max_hits_per_object`, so that object's hits were capped. The object-count limit is `max_objects` (which sets `truncated.by_max_objects`). To avoid `by_object_cap`, raise `max_hits_per_object`. The scan is read in ADT batch envelopes: the searches of the package masks, each level of the package walk, then the sources of the scanned objects in envelopes of at most 300 reads (main sources and function group structures, then function group includes and function modules); `time_budget_ms` is checked before every envelope, and a scan it stops answers whole objects. Run only ONE SearchSource per destination at a time — multiple parallel SearchSource calls against the same SAP system saturate the scan backend and can make all of them time out. Prefer combining terms into a single call over parallel calls. A scan that stops before its last target answers `next_start_at`; pass it as `start_at` to go on. When `next_start_at` equals `start_at`, `time_budget_ms` passed before the first object was answered: raise `time_budget_ms` or lower `max_objects`. The answer carries `total_targets`, the scan targets of the walk; it is ab…","inputs":[{"name":"emit_no_hits","type":"boolean","required":false,"description":"When true, list zero-hit targets in a separate no_hits array. Default false."},{"name":"exclude","type":"array","required":false,"description":"Up to 3 substrings; a line containing any of them is dropped."},{"name":"exclude_comments","type":"boolean","required":false,"description":"Skip col-1 '*' and full-line '\"' comment lines. Default false (comments are scanned)."},{"name":"include_subpackages","type":"boolean","required":false,"description":"Recurse into subpackages (default true)."},{"name":"max_hits_per_object","type":"integer","required":false,"description":"Cap hits per root object across its source units (default 100). When exceeded, truncated.by_object_cap=true is set. Raise this value if you need more hits per object."},{"name":"max_objects","type":"integer","required":false,"description":"Cap the total objects scanned across all packages (default 500). Setting truncated.by_max_objects=true when exceeded."},{"name":"object_filter","type":"string","required":false,"description":"Glob applied to object names within each package (e.g. \"Z*\")."},{"name":"object_types","type":"array","required":false,"description":"Subset of object families to scan (default: all three)."},{"name":"packages","type":"array","required":true,"description":"Packages to scan. Each entry is either an exact dev-class name or a `*` mask, where `*` stands for any characters and a namespace prefix may lead it."},{"name":"query","type":"string","required":true,"description":"Primary substring to match (case-insensitive, ABAP CS)."},{"name":"query2","type":"string","required":false,"description":"Optional second substring. When set, both query and query2 must appear on the same line."},{"name":"start_at","type":"integer","required":false,"description":"Index of the first scan target to read, from `next_start_at` of the previous answer; 0 by default."},{"name":"time_budget_ms","type":"integer","required":false,"description":"Internal scan deadline in ms. When exceeded, returns the hits of the objects before `next_start_at` with truncated.by_timeout=true and next_start_at; when next_start_at equals start_at, the deadline…"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"},{"name":"version","type":"string","required":false,"description":"Source version for PROG and CLAS main include reads. Default active. FUGR subincludes always read the active version."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":1082},{"name":"GetObjectsList","title":null,"description":"[read-only] Recursively lists every child repository object of the program (PROG), function group (FUGR), class (CLAS), package (DEVC) or other composite object named by parent_name, parent_tech_name and parent_type, nested includes and subcomponents included. Takes parent_name, parent_tech_name and parent_type (one parent: its list) or objects (several parents: one entry per parent, in the order given, each { parent_name, parent_type, total_objects, objects } or { parent_name, parent_type, error }). Each level of the node tree is read in one ADT batch envelope. Runs on an ABAP session of its own. Optional timeout (seconds): when it passes, the read is cancelled, its ABAP session logged off, and the system stays as it was. Set it below your MCP client's request limit — the TypeScript SDK's client cancels at 60 s; a client's cancel ends only the client's wait, and SAP runs the read on. Runs outside batch mode.","inputs":[{"name":"objects","type":"array","required":false,"description":"[read-only] Several parents, read together (give this or parent_name)"},{"name":"parent_name","type":"string","required":false,"description":"[read-only] Parent object name (with parent_tech_name and parent_type; or give objects)"},{"name":"parent_tech_name","type":"string","required":false,"description":"[read-only] Parent technical name"},{"name":"parent_type","type":"string","required":false,"description":"[read-only] Parent object type (e.g. PROG/P, FUGR)"},{"name":"timeout","type":"integer","required":false,"description":"Seconds to wait for the answer: a whole number, at least 1, no default — without it the call waits until SAP answers. When it passes, the read is cancelled (its ABAP session is logged off) and the ca…"},{"name":"with_short_descriptions","type":"boolean","required":false,"description":"[read-only] Include short descriptions (default: true)"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":426},{"name":"GetObjectsByType","title":null,"description":"[read-only] Lists the objects of one type (classes, tables, programs, interfaces, etc.), the type whose node in the object tree is named by node_id, under the package or composite object named by parent_name, parent_tech_name and parent_type. Recordable: in batch mode a call is recorded under the next number and answers with empty content; its answer is read by number after the batch ends.","inputs":[{"name":"format","type":"string","required":false,"description":"[read-only] Output format: 'parsed' (default). 'raw' is accepted for backward compatibility but answers the same parsed text — see the note on `nodeLevel` below."},{"name":"node_id","type":"string","required":true,"description":"[read-only] Node ID"},{"name":"parent_name","type":"string","required":true,"description":"[read-only] Parent object name"},{"name":"parent_tech_name","type":"string","required":true,"description":"[read-only] Parent technical name"},{"name":"parent_type","type":"string","required":true,"description":"[read-only] Parent object type"},{"name":"with_short_descriptions","type":"boolean","required":false,"description":"[read-only] Include short descriptions"}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":217},{"name":"ListLeftoverSessions","title":null,"description":"[read-only] [session] Lists the SAP sessions of this server's destination that an ended server process left open (it was killed before it could log them off), with the locks they may hold: handle, role (built: an instance connection; debugger: a debug session connection), destination, user (absent for a token login) and when it was last recorded. Read from the session records alone, on this machine. Only sessions of ended processes are listed. Log one off by its handle. A server process that starts while exactly one instance session (built) of its destination is left is born on it, before any tool call; with several, all stay here, untaken. Runs outside batch mode.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":155},{"name":"LogoffLeftoverSession","title":null,"description":"[read-only] [session] Logs off a leftover SAP session (any role): the session ends, and every lock it holds is released. Only the logoff is sent, credential-free. The session record is deleted afterwards. Runs outside batch mode.","inputs":[{"name":"handle","type":"string","required":true,"description":"The handle of a leftover session, as the list of leftover sessions answers it."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":84},{"name":"BatchBegin","title":null,"description":"[read-only] Starts batch mode on this server. In batch mode each call of a tool marked recordable is recorded under the next number, starting at 1, and answers with empty content. Answers the state_handle: over Streamable HTTP send it as the state_handle argument of every call of the batch (or in the x-mcp-state-handle header).","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":82},{"name":"BatchEnd","title":null,"description":"[read-only] Sends the recorded calls in one envelope with the credentials in force and ends batch mode. Splits SAP's answer into each call's parts and answers the number of recorded calls, of requests sent and of parts received; when sending fails, the parts received differ from the requests sent or the answer fails to split, answers that error, and every number of the batch then answers it.","inputs":[],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":88},{"name":"BatchAnswers","title":null,"description":"[read-only] Answers the calls of the last executed batch by number: for each number asked, the tool's answer, built from the call's parts of SAP's response when the number is first read and kept for later reads; the numbers asked are processed in parallel. Takes one number or a list of numbers; an unknown number answers as unknown.","inputs":[{"name":"number","type":"integer","required":false,"description":"One batch number to read (an integer of at least 1); give this or numbers, not both."},{"name":"numbers","type":"array","required":false,"description":"Several batch numbers to read, answered in the order given; give this or number, not both."}],"outputs":[],"hasOutputSchema":false,"hasExamples":false,"tokenEstimate":133}],"toolsTruncatedAtCapture":false,"diagnostics":{"capturedAt":"2026-11-05T06:05:48.000Z","track":"package","endpoint":null,"declaredUrl":null,"truncated":false,"tls":null,"dnssec":null,"auth":null,"httpsRedirect":null,"transports":[],"provenance":{"outcome":"none","label":"No attestation","reason":null,"reasonLabel":null,"discovery":null,"discoveryLabel":null,"sourceRepo":null,"attestationSkipped":null,"attestationSkippedLabel":null},"installScripts":[],"installScriptsTotal":null,"vulnerabilities":[],"vulnerabilitiesTotal":null,"dependencies":{"nodes":171,"partial":false,"deprecated":null,"stale":43,"noRepo":1}},"mismatches":[],"changelog":{"trackingSince":"2026-10-21","recent":[{"id":"chg_01a1aa50-3ecf-7d8c-84ea-308592850eff","kind":"score.total_changed","summary":"Trust score (74 → 75)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-05","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a1aa50-3ecf-7d8c-84ea-308592850eff"},{"id":"chg_01a1a002-f77a-7b75-ac5f-f95647dd9c28","kind":"score.total_changed","summary":"Trust score (73 → 74)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-03","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a1a002-f77a-7b75-ac5f-f95647dd9c28"},{"id":"chg_01a195b4-29d3-7e3a-a442-9fe1c6f8e915","kind":"score.total_changed","summary":"Trust score (72 → 73)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-11-01","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a195b4-29d3-7e3a-a442-9fe1c6f8e915"},{"id":"chg_01a18b68-5348-7eeb-beb1-79de4d628bdd","kind":"score.total_changed","summary":"Trust score (71 → 72)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-30","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a18b68-5348-7eeb-beb1-79de4d628bdd"},{"id":"chg_01a1812a-bfae-70f6-8694-5f8a84313392","kind":"score.total_changed","summary":"Trust score (70 → 71)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-28","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a1812a-bfae-70f6-8694-5f8a84313392"},{"id":"chg_01a176da-aea8-7bf4-a29b-476fb8235045","kind":"score.total_changed","summary":"Trust score (69 → 70)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-26","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a176da-aea8-7bf4-a29b-476fb8235045"},{"id":"chg_01a16766-2181-7c53-9632-9ac430c71019","kind":"score.total_changed","summary":"Trust score (68 → 69)","materiality":"functional","direction":"improvement","scoreDelta":1,"occurredOn":"2026-10-23","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a16766-2181-7c53-9632-9ac430c71019"},{"id":"chg_01a164fe-aac4-7dcc-8564-0abfae1564b2","kind":"score.total_changed","summary":"Trust score (39 → 68)","materiality":"functional","direction":"improvement","scoreDelta":29,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fe-aac4-7dcc-8564-0abfae1564b2"},{"id":"chg_01a164fc-d25e-7132-b7cf-ea809aee1e7f","kind":"check.unverifiable","summary":"Stability (0.00 → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fc-d25e-7132-b7cf-ea809aee1e7f"},{"id":"chg_01a164fc-d26a-7172-a470-3d5d211c0815","kind":"check.unverifiable","summary":"Tool safety (pass → unverified)","materiality":"security","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fc-d26a-7172-a470-3d5d211c0815"},{"id":"chg_01a164fc-d26d-7934-b8ba-cdfcf4cf4154","kind":"check.unverifiable","summary":"Capabilities (pass → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fc-d26d-7934-b8ba-cdfcf4cf4154"},{"id":"chg_01a164fc-d26e-7203-a044-224067d8d4c5","kind":"check.unverifiable","summary":"Tool coverage (100 → unverified)","materiality":"functional","direction":"regression","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fc-d26e-7203-a044-224067d8d4c5"},{"id":"chg_01a164fc-d26e-78b4-b014-cc186f8d2628","kind":"check.appeared","summary":"First check of Schema quality (unverified)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fc-d26e-78b4-b014-cc186f8d2628"},{"id":"chg_01a164fc-d26f-7883-bc06-d2989f03895e","kind":"package.version_changed","summary":"Package version (19.2.0 → 20.0.0)","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fc-d26f-7883-bc06-d2989f03895e"},{"id":"chg_01a164fc-d274-702d-a76c-96ffe546af2d","kind":"score.total_changed","summary":"Trust score (68 → 39)","materiality":"functional","direction":"regression","scoreDelta":-29,"occurredOn":"2026-10-22","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a164fc-d274-702d-a76c-96ffe546af2d"},{"id":"chg_01a1607c-4879-739f-bb31-ecf76437e368","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a1607c-4879-739f-bb31-ecf76437e368"},{"id":"chg_01a1607a-edf2-734b-8341-d8f0a71cd9f5","kind":"score.first_scored","summary":"First indexed and scored","materiality":"functional","direction":"neutral","scoreDelta":null,"occurredOn":"2026-10-21","url":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro#chg-chg_01a1607a-edf2-734b-8341-d8f0a71cd9f5"}],"truncated":false,"feedUrl":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro/changelog.json"},"links":{"html":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro","markdown":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro.md","changelogJson":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro/changelog.json","changelogRss":"https://verifymcp.io/servers/fr0ster-mcp-abap-adt-ro/mcp-abap-adt-core-ro.xml","external":[{"label":"npm package","href":"https://www.npmjs.com/package/@mcp-abap-adt/core-ro"},{"label":"Socket report","href":"https://socket.dev/npm/package/@mcp-abap-adt/core-ro"},{"label":"Repository","href":"https://github.com/fr0ster/mcp-abap-adt"}]}}