Skip to main content
Glama
Hollway

mcp-abap-abap-adt-api

by Hollway

createAndWrite

Creates an ABAP object and writes its source in one call, preventing empty shells: validates names, locks, writes source, unlocks, and activates. Handles failure steps transparently.

Instructions

Create an object and put its source in it, in one call: validate the name, create, lock, write the source, unlock, activate with verification. Creating and writing are separate calls in ADT, and an object created without source is an empty shell that fails activation - this keeps the two halves together. Report includes (PROG/I) are created the way createInclude does it, so they work here too; pass mainProgram. Nothing is rolled back on failure: the answer says which step stopped it.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesObject name, e.g. ZCL_APP_FOO.
dryRunNoValidate the name and report the URLs that would be used, creating nothing.
sourceYesThe complete source of the object. For a class this is the whole CLASS ... ENDCLASS pair, definition and implementation.
objtypeYesADT type: CLAS/OC, INTF/OI, PROG/P, PROG/I, FUGR/F, FUGR/FF or FUGR/I.
activateNoActivate at the end (default true).
languageNoLanguage of the description, and the master language of the object. Defaults to the logon language - the underlying library would use EN, which files the texts under a language the developer may never read.
transportNoTransport request number - the request itself, not a developer task. Not needed in $TMP.
descriptionYesShort description.
mainProgramNoFor PROG/I: the program the include belongs to. Required for an include, ignored otherwise.
packageNameYesDevelopment package. $TMP needs no transport.
responsibleNoResponsible user; defaults to the logon user.
functionGroupNoFor FUGR/FF and FUGR/I: the function group holding the object.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

A4.6/5.0
Behavior5/5

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

The description goes well beyond annotations by disclosing the internal sequence (validate, create, lock, write, unlock, activate with verification), the non-rollback behavior ('Nothing is rolled back on failure'), and the empty-shell consequence of creating without source. It also clarifies language default behavior, which is important for object creation. Annotations only indicate not read-only and not destructive, so the description adds substantial behavioral context.

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

Conciseness5/5

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

Three sentences that are dense with information: the main purpose is front-loaded, followed by the reason for combining steps, a special case, and failure behavior. No wasted words; every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (12 params, 5 required) and no output schema, the description covers the process, failure handling, and key parameter interactions (mainProgram, language, transport). It does not describe the success response format, but it does say the answer indicates the failing step on failure. For a complex tool, this is fairly complete, though the exact response structure remains undocumented.

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

Parameters4/5

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

Schema coverage is 100%, so all parameters have descriptions. The tool description adds context beyond the schema: it explains mainProgram's role for PROG/I, the language default logic, and that transport is not needed in $TMP. This enhances understanding of how parameters interact, though the schema already carries the basic definitions.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Create an object and put its source in it, in one call' and outlines the steps (validate, create, lock, write, unlock, activate). It distinguishes from siblings by noting that 'Creating and writing are separate calls in ADT' and that this combines them, differentiating it from createObject, setObjectSource, and similar tools.

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

Usage Guidelines4/5

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

The description explains the tool is for creating an object with source in one step, and mentions when to use it (e.g., for PROG/I with mainProgram) and the failure behavior. However, it doesn't explicitly name alternatives like createObject + setObjectSource as the alternative for separate calls, so while usage context is clear, exclusions are only implied.

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

Deploy Server

Other Tools