Skip to main content
Glama

Simplifier MCP Server

Simplifier is the leading low-code platform in the SAP ecosystem. Build custom apps in a full-stack low-code cloud development environment, reducing your dependency on full-scale coding. Integrate with ERP, CRM and other systems easily using standardised connectors.

Find more information in our community or try Simplifier for free.


This repository contains an MCP server (Model Context Protocol) that enables integration of AI assistants with the Simplifier Low Code Platform. It provides tools and resources for creating and managing Simplifier Connectors and BusinessObjects.

Overview

The Simplifier MCP Server allows to interact with a Simplifier instance to:

  • Manage Connectors and Logins: Integration components that connect external systems

  • Manage Business Objects: Server-side executed JavaScript functions for business logic

  • Manage Data Types: Data structures for interacting with Connectors and internal objects

  • Execute Business Object Functions: Run JavaScript functions with parameters and retrieve results

  • Execute Connector Calls: Call external systems via Simplifier Connector

  • Access platform resources: Browse connectors, business objects, and system information

Supported Connector types

Currently only the following connector types are fully supported:

  • REST

  • SOAP

  • SQL

  • SAPRFC

Client compatibility

The Simplifier MCP server exposes its data through two parallel surfaces so that every MCP client can use it in full, regardless of which parts of the MCP protocol that client supports:

  • Clients that implement MCP Resources (e.g. Claude Code, Claude Desktop, MCP Inspector) can browse and read Simplifier data through simplifier://… URIs — for example simplifier://businessobjects, simplifier://connector/{name}, or simplifier://documentation/….

  • Clients that only implement MCP Tools (e.g. OpenCode, Cursor, Cline, Continue, Windsurf) get equivalent read access through tools named *-list, *-get, documentation-get and connector-wizard-rfc-search.

Both surfaces share the same underlying implementation, so behaviour is identical. Where both are available, clients should prefer resources.

Related MCP server: ABAP-ADT-API MCP-Server

Usage

Check out Simplifier Community Docs on how to use and set up the MCP server best.

Add the MCP to claude code ...

Using node / npx:

claude mcp add simplifier npx @simplifierag/simplifier-mcp@latest --env SIMPLIFIER_TOKEN=<your current simplifier token> --env SIMPLIFIER_BASE_URL=https://<yourinstance>-dev.simplifier.cloud

Using Docker:

claude mcp add simplifier-docker docker -- run --rm -i --env SIMPLIFIER_TOKEN=<your current simplifier token> --env SIMPLIFIER_BASE_URL=https://<yourinstance>-dev.simplifier.cloud simplifierag/simplifier-mcp:latest

If your Simplifier is hosted on premise, then the SIMPLIFIER_BASE_URL of your DEV instance will be different from the mentioned schema.

After a new login to Simplifier

With every login to Simplifier your SimplifierToken will change. So you will have to:

  • exit your AI agent (in this example claude),

  • then remove the configuration of the MCP

claude mcp remove simplifier
  • and then add the MCP again with the new token (see upper command) and restart your AI agent

...or use this example configuration for claude code to use the MCP

e.g. in a file named .mcp.json placed in the directory, where claude is started.

Using node / npx:

{
  "mcpServers":  {
    "simplifier-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [ 
        "@simplifierag/simplifier-mcp@latest"
      ],
      "env": {
        "SIMPLIFIER_BASE_URL": "https://<yourinstance>-dev.simplifier.cloud",
        "SIMPLIFIER_TOKEN": "<your current simplifier token>"
      }
    }
  }
}

Using Docker:

{
  "mcpServers": {
    "simplifier-docker": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "--env",
        "SIMPLIFIER_TOKEN",
        "--env",
        "SIMPLIFIER_BASE_URL",
        "simplifierag/simplifier-mcp:latest"
      ],
      "env": {
        "SIMPLIFIER_BASE_URL": "https://<yourinstance>-dev.simplifier.cloud",
        "SIMPLIFIER_TOKEN": "<your current simplifier token>"
      }
    }
  }
}

Troubleshooting

If the MCP fails to connect to Simplifier on startup, an error page will open in your browser with details on the failure and information on how to fix the problem.

Available Tools

17 tools
businessobject-deleteB
DestructiveIdempotent

Delete an existing Business Object

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the agent knows this is a destructive but idempotent operation. The description adds no behavioral context beyond what annotations provide (no mention of permissions needed, confirmation requirements, or what happens to associated data). No contradiction with annotations exists.

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?

The description is extremely concise - a single sentence that directly states the tool's purpose with zero wasted words. It's appropriately front-loaded with the core action. For a simple deletion tool, this level of brevity is efficient.

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

Completeness2/5

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

For a destructive operation with 0% schema coverage and no output schema, the description is inadequate. It doesn't explain what a 'Business Object' is, what deletion entails, what the 'name' parameter should contain, or what happens after deletion. The annotations help but don't compensate for these gaps in the description itself.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries full burden for parameter documentation. It mentions no parameters at all, leaving the single 'name' parameter completely undocumented. The description fails to explain what 'name' represents or its format, providing no value beyond the bare schema.

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

Purpose4/5

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

The description clearly states the verb ('Delete') and resource ('Business Object'), making the purpose immediately understandable. It distinguishes from siblings like 'businessobject-update' by specifying deletion rather than modification. However, it doesn't specify what constitutes a 'Business Object' in this context, which slightly limits specificity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With siblings like 'businessobject-update' and 'businessobject-function-delete', there's no indication of when deletion is appropriate versus updating or deleting functions. No prerequisites or exclusions are mentioned.

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

businessobject-function-deleteB
DestructiveIdempotent

Delete an existing Business Object Function

ParametersJSON Schema
NameRequiredDescriptionDefault
businessObjectNameYes
functionNameYes

TDQS

B3.2/5.0
Behavior4/5

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

Annotations provide critical behavioral hints (destructiveHint: true, idempotentHint: true, readOnlyHint: false), but the description adds value by specifying that it deletes 'an existing' function, implying it requires pre-existence. It doesn't contradict annotations, and while it could mention more (e.g., permissions, side effects), it offers useful context beyond the structured data.

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?

The description is a single, front-loaded sentence with zero waste—it directly states the tool's purpose without unnecessary elaboration. Every word earns its place, making it highly efficient and easy to parse.

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

Completeness2/5

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

For a destructive tool with 2 undocumented parameters, no output schema, and no sibling differentiation, the description is inadequate. It lacks details on parameter meanings, usage context, or expected outcomes, failing to compensate for the schema and annotation gaps.

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

Parameters2/5

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

With 0% schema description coverage for 2 parameters, the description fails to add any semantic meaning beyond what the bare schema provides. It doesn't explain what 'businessObjectName' or 'functionName' represent, their formats, or examples, leaving parameters largely undocumented.

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

Purpose4/5

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

The description clearly states the action ('Delete') and target resource ('an existing Business Object Function'), providing specific verb+resource pairing. However, it doesn't explicitly distinguish this tool from sibling tools like 'businessobject-delete' or 'businessobject-function-update', which would require a 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'businessobject-function-update' or 'businessobject-delete'. It lacks context about prerequisites, appropriate scenarios, or exclusions, offering only a basic statement of purpose.

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

businessobject-function-testA
Read-onlyIdempotent

#Test a Business Object Function

Execute a business object function with provided input parameters for testing purposes. This allows you to test your functions with real data and see the results.

Common Base Data Type IDs:

  • String: "22ED1F787B6B0926AB0577860AF7543705341C053EB1B4A74E7CC199A0645E52"

  • Integer: "B9B1191E0B70BA0845CF4F6A4F4C017594F8BA84FD2F1849966081D53A8C836D"

  • Boolean: "2788FB5AA776C62635F156C820190D0FD3D558765201881A77382093F7248B39"

  • Date: "06A9841478D7BE17C423F11C38CD6829E372093DBEC144F2A85FC7165BE8CD80"

  • Float: "C09139C72F5A8A7E0036BA66CE301748BD617F463683EE03F92EDAAAA4AF8BC7"

  • Any: "D31053204B4A612390A2D6ECDF623E979C14ADC070A7CB9B08B2099C3011BCAB"

Parameter Usage:

  • Use parameter "name" if no alias is defined

  • Use parameter "alias" instead of name if alias is defined in the function

  • Values must match the expected data type

Error Handling:

  • Wrong BO/function name → 404 error

  • Missing required parameters → 400 error

  • Wrong parameter names → 400/500 error

  • Invalid parameter values → 400/500 error

ParametersJSON Schema
NameRequiredDescriptionDefault
businessObjectNameYes
functionNameYes
inputParametersNoInput parameters for the function

TDQS

A4.4/5.0
Behavior4/5

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

The description adds significant behavioral context beyond what annotations provide. While annotations indicate read-only, non-destructive, and idempotent operations, the description adds crucial details about error handling (404 for wrong names, 400/500 for parameter issues), parameter usage rules (name vs. alias), and data type requirements. This provides valuable operational context that annotations alone don't convey.

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

Conciseness4/5

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

The description is well-structured with clear sections (Common Base Data Type IDs, Parameter Usage, Error Handling) and front-loads the core purpose. While comprehensive, some information like the full list of data type IDs could be considered slightly verbose, but each section earns its place by providing essential operational guidance.

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

Completeness4/5

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

For a 3-parameter tool with no output schema and only 33% schema description coverage, the description provides substantial contextual information. It covers purpose, usage, parameters, data types, and error handling comprehensively. The main gap is the lack of information about return values or output format, which would be helpful given the absence of an output schema.

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

Parameters5/5

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

With only 33% schema description coverage, the description compensates substantially by explaining parameter usage in detail. It clarifies the relationship between 'name' and 'alias' parameters, provides data type IDs for common types, and explains value matching requirements. This adds meaningful semantic understanding beyond the basic schema structure, fully addressing the coverage gap.

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 specific action ('Execute a business object function with provided input parameters for testing purposes') and distinguishes it from siblings by focusing on testing rather than creation, deletion, or updating. It explicitly mentions this is for testing with real data, which differentiates it from other business object tools that perform modifications.

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 provides clear context about when to use this tool ('for testing purposes' and 'test your functions with real data'), but doesn't explicitly state when NOT to use it or name specific alternatives. It implies usage for testing functions rather than production execution, but lacks explicit exclusions or comparisons to sibling tools like businessobject-function-update.

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

businessobject-function-updateA

#Create or update a Business Object Function

Creates or updates a JavaScript function within a server-side Business Object. Functions contain business logic code and can call connectors or other business objects.

Common Base Data Type IDs:

  • String: "22ED1F787B6B0926AB0577860AF7543705341C053EB1B4A74E7CC199A0645E52"

  • Integer: "B9B1191E0B70BA0845CF4F6A4F4C017594F8BA84FD2F1849966081D53A8C836D"

  • Boolean: "2788FB5AA776C62635F156C820190D0FD3D558765201881A77382093F7248B39"

  • Date: "06A9841478D7BE17C423F11C38CD6829E372093DBEC144F2A85FC7165BE8CD80"

  • Float: "C09139C72F5A8A7E0036BA66CE301748BD617F463683EE03F92EDAAAA4AF8BC7"

  • Any: "D31053204B4A612390A2D6ECDF623E979C14ADC070A7CB9B08B2099C3011BCAB"

Parameter Structure: Each parameter needs name, dataTypeId, and isOptional. Description and alias are optional.

Code: Standard JavaScript code.

Parameter access in the code: Input parameters can be accessed with let myVar = input.parameter_name; Output parameters can be assigned with output.parameter_name = someOfMyResults; Attention: In case an alias is defined for a parameter, you have use "alias" instead of "parameter_name". Example: output.alias = someOfMyResults; You can do an early return of output, but you don't need to end with a return. The function code will be postfixed with a "return output" anyway. If you do a return instead of return output, then in the first case you will return undefined output parameters - this is most probably not what you want to do.

Business Objects Development Guide

Overview

This guide provides comprehensive information for implementing Business Object functions in Simplifier, including Object API usage, connector access patterns, and Business Object to Business Object communication.

Server-Side Business Object API

The Simplifier object provides access to various server-side methods and components:

Available Components

  • Logging: Server-side logging capabilities e.g. Simplifier.Log.info("my log") - see details: simplifier://documentation/server-businessobjects/api/Logging

  • Utilities/Tools: Helper functions and tools - see details: simplifier://documentation/server-businessobjects/api/Utils

  • Connectors: Access to data connectors - TODO add information later

  • Business Objects: Access to other Business Objects - see this description

  • Users: User management - see details: simplifier://documentation/server-businessobjects/api/User

Simplifier.Log.info(...) is logging to a Simplifier Log inside the database. The logged entries can be seen by the user but cannot be accessed by this MCP so far. console.log(...) is logging to the Simplifier logfile. The logged entries can be accessed by Simplifier Administrators only. The MCP cannot access these logs.

Accessing Other Business Objects

Basic Syntax

// Access other Business Objects
Simplifier.BusinessObject.<BOName>.<MethodName>(payload?)

// Access current Business Object methods
Simplifier.CurrentBusinessObject.<MethodName>(payload?)

// Access connector calls (find the available connector calls via resources)
Simplifier.Connector.<ConnectorName>.<ConnectorCallName>(payload?)

Examples

// Call another Business Object function
var userInfo = Simplifier.BusinessObject.UserManager.getUserById({
  userId: "12345"
});

// Call a function in the current Business Object
var result = Simplifier.CurrentBusinessObject.validateInput({
  data: input.userData
});

Configuration Requirements

Adding Dependencies

When accessing other Business Objects or connectors from a Business Object function, these components MUST be added as dependencies. (see schema for tool about getting, updating and creating Business Objects)

Dependency Types

  • Business Objects: Other BOs that will be called

  • Connectors: Data connectors that will be accessed

Dynamic Access Methods

Variables Approach

// Using variables for dynamic calls
var boName = "UserManager";
var methodName = "getUser";
var result = Simplifier.BusinessObject[boName][methodName](payload);

Dynamic Call Function

// Using dynamic call patterns
var result = Simplifier.BusinessObject.call(boName, methodName, payload);

Parameter Validation

// Always validate input parameters
if (!input.userId || input.userId.length === 0) {
  output.error = "UserId is required";
  return output;
}

var userResult = Simplifier.BusinessObject.UserService.getUser({
  userId: input.userId
});

Security Considerations

  • Always validate input parameters

  • Validate data types and ranges for all inputs

Performance Tips

  • Cache frequently accessed data when appropriate

  • Avoid unnecessary nested Business Object calls

Debugging Tips

  • To track down an issue (e.g. the connector issue) put the failing part into a very small bo function and return the result with JSON.stringify as a string, then you can check, whether the expected result is delivered. Indicate in the name of the function, that it can be deleted after debugging.


This documentation provides the essential patterns and best practices for implementing robust Business Object functions in Simplifier. Remember to always add dependencies and follow security best practices when accessing external components. Dependencies for yourself do not need to be added, but you can access own functions like Simplifier.CurrentBusinessObject.(payload?).

ParametersJSON Schema
NameRequiredDescriptionDefault
businessObjectNameYes
functionNameYes
descriptionNo
codeNoJavaScript function codereturn {};
validateInNoIf true, validates that all mandatory input parameters are present before execution. Catches missing parameters early with clear validation errors (HTTP 422). If false, allows incomplete requests through, resulting in backend errors (HTTP 500).
validateOutNoIf true, validates and filters the output response against the defined datatype structure, returning only defined fields. If false, returns the complete raw API response without filtering or validation.
inputParametersNo
outputParametersNo

TDQS

A3.6/5.0
Behavior4/5

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

Annotations provide readOnlyHint=false and destructiveHint=false, indicating mutation capability without destruction. The description adds valuable behavioral context beyond annotations: it explains code execution patterns (early returns, automatic postfixing), logging behavior (Simplifier.Log vs console.log differences), dependency requirements, and security/performance considerations. No contradiction with annotations exists.

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

Conciseness2/5

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

The description is excessively long (over 1000 words) and poorly structured. It mixes tool-specific instructions with general development guides, burying critical information. While some content is valuable, much could be trimmed or moved to external documentation. The front-loaded section is useful but followed by extensive tangential material.

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 tool's complexity (8 parameters, mutation capability, no output schema) and low schema coverage, the description provides comprehensive context: it covers parameter semantics, code patterns, dependencies, security, performance, and debugging. It adequately compensates for missing structured fields, though the excessive length reduces usability.

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?

With only 38% schema description coverage, the description compensates significantly by explaining parameter structure (name, dataTypeId, isOptional), common data type IDs, code parameter access patterns (input/output with alias handling), and validation options (validateIn/validateOut implications). It adds substantial meaning beyond the sparse schema descriptions.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Creates or updates a JavaScript function within a server-side Business Object.' It specifies the verb (create/update), resource (Business Object Function), and scope (server-side). However, it doesn't explicitly differentiate from sibling tools like 'businessobject-function-delete' or 'businessobject-update' beyond the create/update distinction.

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

Usage Guidelines3/5

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

The description implies usage context through extensive development guidance (e.g., when to use dependencies, parameter validation patterns), but doesn't explicitly state when to choose this tool over alternatives like 'businessobject-update' or 'businessobject-function-test'. It provides best practices rather than direct usage rules.

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

businessobject-updateA

#Create or update a Business Object

Attention: When updating dependencies or tags, allways fetch the Business Object resource first to ensure operating on the latest version. Existing dependencies and tags have to be resent when doing an update - otherwise they would be cleared.

Dependencies are REQUIRED to be added when the BO functions access connectors or other BOs using Simplifier.Connector.* or Simplifier.BusinessObject.* APIs.

Project Assignment

Business Objects must be assigned to projects using the project assignment parameters:

For Creating New BOs:

  • Set projectsBefore to empty array []

  • Set projectsAfterChange to array of project names to assign the BO to

For Updating Existing BOs:

  • Set projectsBefore to current project assignments (from existing BO)

  • Set projectsAfterChange to new project assignments

Example:

{
  "name": "MyBusinessObject",
  "projectsBefore": [],
  "projectsAfterChange": ["ProjectA", "ProjectB"]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionYes
dependenciesYesArray of dependencies that this BO requires. CRITICAL: Add connectors and other BOs that will be accessed from BO functions using Simplifier.Connector.<Name> or Simplifier.BusinessObject.<Name> syntax. If not provided when updating, existing dependencies will be preserved.
tagsYesArray of tags for categorizing and organizing this Business Object. If not provided when updating, existing tags will be preserved.
projectsBeforeNoProject names before the change. Use empty array [] when creating new BOs, or provide current projects when updating.
projectsAfterChangeNoProject names to assign the BO to. Required for tracking project assignments.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false (mutation), openWorldHint=true (flexible inputs), idempotentHint=false (non-idempotent), and destructiveHint=false (non-destructive). The description adds valuable behavioral context beyond this: it warns about the need to fetch the latest version before updates to avoid conflicts, clarifies that dependencies and tags must be resent during updates or they will be cleared, and specifies that dependencies are REQUIRED for certain API accesses. This enriches the agent's understanding of mutation risks and prerequisites.

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

Conciseness4/5

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

The description is well-structured with clear sections (attention notes, project assignment rules, example) and uses markdown formatting effectively. It is appropriately sized for a complex tool with 6 parameters, though it could be slightly more concise by integrating some schema-like details. Every sentence adds value, such as warnings about data preservation and project handling.

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 tool's complexity (6 parameters, mutation operation, no output schema), the description is largely complete. It covers purpose, usage guidelines, critical behavioral nuances, and parameter semantics. However, it lacks details on the response format or error handling, which would be helpful since there's no output schema. The annotations provide safety context, but the description fills in practical gaps well.

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

Parameters5/5

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

With schema description coverage at 67%, the description compensates significantly by explaining parameter semantics not fully covered in the schema. It details the critical role of dependencies (required for Simplifier.Connector.* or Simplifier.BusinessObject.* APIs), provides explicit rules for projectsBefore and projectsAfterChange parameters with creation vs. update scenarios, and includes a practical JSON example. This adds substantial meaning beyond the schema's basic property descriptions.

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 explicitly states the tool's purpose: 'Create or update a Business Object.' It distinguishes this from sibling tools like businessobject-delete, businessobject-function-update, and connector-update by focusing on the core Business Object resource itself rather than functions, connectors, or deletion operations.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: for creating or updating Business Objects. It includes critical warnings about fetching the latest version before updates and resending dependencies/tags to avoid clearing them. It also distinguishes usage between creation (projectsBefore as empty array) and updates (projectsBefore as current assignments), offering clear alternatives within the tool's scope.

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

connector-call-deleteA
DestructiveIdempotent

Delete a Connector call

ParametersJSON Schema
NameRequiredDescriptionDefault
connectorNameYesName of the Connector to modify
callNameYesName of the connector call to delete

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=true. The description adds value by explicitly stating the deletion action, which aligns with the destructive hint, but doesn't provide additional behavioral context like confirmation prompts, error handling, or system impacts beyond what annotations cover.

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?

The description is a single, clear sentence with no wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.

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

Completeness3/5

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

Given the destructive nature (annotations cover this), two fully documented parameters, and no output schema, the description is adequate but minimal. It doesn't explain return values or error cases, which could be helpful for a deletion tool, leaving some gaps in completeness.

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

Parameters3/5

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

With 100% schema description coverage, the input schema fully documents both parameters ('connectorName' and 'callName'). The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline score of 3 for high schema coverage.

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

Purpose4/5

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

The description clearly states the action ('Delete') and target resource ('a Connector call'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'connector-delete' or 'businessobject-delete', which would require explicit comparison to achieve a score of 5.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'connector-delete' or 'connector-call-update', nor does it mention prerequisites or exclusions. It merely states what the tool does without contextual usage information.

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

connector-call-testA
Read-onlyIdempotent

#Test a Connector Call

Execute a connector call with provided input parameters for testing purposes. This allows you to test connector calls with real data and see the results.

Parameter Usage:

  • Each parameter requires a "name" (the field name) and a "value" (the actual data)

  • Parameter names must match the connector call's defined parameters

  • Values can be any JSON value (string, number, boolean, object, array). The connector call specifies the expected input data type. Important: In case you miss properties in the result, check whether a datatype other than Any is assigned as output data type and whether validateOut is set to true - in this case values will be filtered to fit the datatype.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectorNameYes
callNameYes
parametersNoInput parameters for the connector call

TDQS

A4.5/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it explains that the tool executes calls with real data for testing, and the 'Important' note clarifies result filtering based on datatype and validateOut settings. Annotations already cover read-only, open-world, idempotent, and non-destructive traits, so the description complements them without contradiction, though it could mention more about error handling or limitations.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose. The bullet points and 'Important' note are structured for clarity, though the latter could be more concise. Every sentence adds value, but minor verbosity in the parameter explanation slightly reduces efficiency.

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 tool's complexity (testing with real data, 3 parameters, no output schema), the description is mostly complete: it covers purpose, usage, parameter details, and result filtering. However, it lacks information on output format, error handling, or prerequisites, which would enhance completeness for a testing tool without an output schema.

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?

With schema description coverage at 33% (only one parameter has a description), the description compensates well by detailing parameter usage: it explains that parameters require 'name' and 'value', names must match defined parameters, and values can be any JSON value. This adds meaning beyond the sparse schema, though it doesn't fully cover all three parameters (e.g., connectorName and callName semantics).

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 specific action ('Execute a connector call with provided input parameters for testing purposes') and resource ('connector call'), distinguishing it from sibling tools like connector-call-delete or connector-call-update. It explicitly mentions testing with real data to see results, making the purpose unambiguous and distinct.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool: for testing connector calls with real data to see results. It implicitly contrasts with sibling tools like connector-call-delete or connector-call-update by focusing on testing rather than modification or deletion, and the 'Important' note offers context on when results might be filtered, guiding usage decisions.

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

connector-call-updateA

Create or update a Connector call

This tool allows to

  • create new connector calls

  • modify existing connector calls

Attention: When updating a call, allways fetch the existing resource first to ensure operating on the latest version. Existing parameters have to be resent when doing an update - otherwise they would be cleared.

Connector Types

Connector type 'REST'

A REST Connector call defines a HTTP request to the configured endpoint address of the Connector.

Call parameters may define the following:

HTTP Method

Parameter name: verb

Type: String

Possible Values: GET, POST, PUT, PATCH, DELETE, HEAD, OPTION

The parameter is mandatory. If not specified differently, use constValue "GET".

Request body format

Parameter name: postFormat

Type: String

Possible Values: JSON, PLAIN, FORM, XML

Request Body

Parameter name: body

It can have an arbitrary data type. The data is converted and Content-Type header is set according to the parameter format.

Request Headers

Parameter name: headParams/<http-header-name>

Type: String

Example: To add a header "X-TEST", define a parameter with the name "headParams/X-TEST".

Path parameters

Parameter name: pathParams[<n>]

Type: Array[String] - that means it must always be given with array index, i.e. pathParams[0].

To form the URL of the call with complete path, all components of the array are joined by "/" and appended to the endpoint URL or the connector.

Defining a path is optional. If omitted, just the endpoint URL is called.

Examples: (assume endpoint URL is http://test-api.com)

URL parameters

Parameter name: queryParams/<query-param-name> (Type: String)

Example: To set the url parameter like in "http://test-api.com?level=4", define a parameter with the name "queryParams/level" and give it a value 4.

Output parameters

A REST Connector must have at least one output parameter

An empty parameter name, or "/" refers to the whole output object.

Use alias "data" for the whole output object.

Connector type 'SOAP'

A SOAP Connector call defines a SOAP operation to be invoked on the configured WSDL service endpoint of the Connector. You can retrieve the configured WSDL for a connector using the resource simplifier://connector/{connectorName}/wsdl

Call parameters may define the following:

Binding Name

Parameter name: bindingName

Type: String

The binding name identifies the specific service binding to use from the WSDL specification.

The parameter is mandatory.

Operation Name

Parameter name: operationName

Type: String

The operation name specifies which SOAP operation to invoke from the binding.

The parameter is mandatory.

Operation parameters

Parameter name: soap/<operationName>/<parameterName>

Type: depends on operation

Example: soap/_-ITIZ_-BUS2038_CREATE/index

Operation parameters contains the SOAP request parameters according to the operation's input schema defined in the WSDL.

URL parameters

Parameter name: queryParams/<query-param-name>

Type: String

Optional parameters can be added as query parameters appended to the SOAP request URL.

Example: To set a URL parameter like in "http://soap-service.com?version=1.0", define a parameter with the name "queryParams/version" and give it a value "1.0".

Output parameters

Parameter name: soap/<response-message-name>/<element>

An empty parameter name, or "/" refers to the whole output object.

Use alias "data" for the whole output object.

The output typically contains the SOAP response parsed according to the operation's output schema defined in the WSDL.

For example, given the following WSDL operation:

<wsdl:operation name="InputOutput">
    <wsp:Policy>
        <wsp:PolicyReference URI="#OP___-ITIZ_-DRAW_READ_ORIGINAL_FILE" />
    </wsp:Policy>
    <wsdl:input message="tns:InputOutput" />
    <wsdl:output message="tns:InputOutputResponse" />
</wsdl:operation>

With the corresponding message and element definitions:

<wsdl:message name="InputOutputResponse">
    <wsdl:part name="parameter" element="tns:InputOutputResponse" />
</wsdl:message>
<xsd:element name="InputOutputResponse">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element name="InputOutput" type="xsd:base64Binary" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

the resulting object for the / output parameter would look like this:

{
  "soap": {
    "InputOutputResponse": {
      "InputOutput": "some value here"
    }
  }
}

To get the relevant field only, the output parameter name would be /soap/InputOutputResponse/InputOutput

Connector type 'SAPRFC'

An SAP RFC connector call executes a function on the SAP system defined in the endpoint.

As RFC calls only work with existing functions in the SAP system, use the connector wizard to create them by first searching for available calls using the resource simplifier://connector-wizard/{connectorName}/search/{term}/{page}. After selecting the appropriate calls, use the tool connector-wizard-rfc-create to generate the calls.

RFC connector calls should define the following parameters with constant values:

SOAP compatibility mode

Parameter name: configuration/output/soapCompatibility

Type: Boolean

This parameter should be set to false, unless the user specified otherwise.

Use default values in output

Parameter name: configuration/output/useDefaultValues

Type: boolean

This parameter should be set to true, unless the user specified otherwise.

Autocommit

Parameter name: configuration/autocommit

This parameter should be set to true, unless the user specified otherwise.

Additional return information

Parameter name: configuration/operation/additionalReturnInformation

Type: Array of strings

Possible values: IMPORT, CHANGING, TABLE, EXPORT, EXCEPTION

Unless specified otherwise by the user, this should be set to ["IMPORT", "EXPORT", "CHANGING", "TABLE", "EXCEPTION"].

Output parameters

An RFC connector's output parameters depend on the called SAP system function. You should usually let the wizard create them, as it has all the metadata available.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectorNameYesName of the Connector to modify calls
connectorCallNameYesName of the Connector call to be added or modified
descriptionNo
validateInNoIf true, validates that all mandatory input parameters are present before execution. Catches missing parameters early with clear validation errors (HTTP 422). If false, allows incomplete requests through, resulting in backend errors (HTTP 500).
validateOutNoIf true, validates and filters the output response against the defined datatype structure, returning only defined fields (type "any" allows all fields). If false, returns the complete raw API response without filtering or validation.
asyncNo
autoGeneratedNo
connectorCallParametersNoCall Parameters define the input and output arguments, specific to the connector type.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations indicate readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it warns about the need to fetch existing resources before updates to avoid data loss, explains that parameters must be resent during updates, and details connector-specific behaviors (e.g., REST requires at least one output parameter, SAPRFC calls should use wizards). No contradiction with annotations exists.

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

Conciseness3/5

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

The description is lengthy but well-structured with sections for each connector type. However, it includes extensive examples and XML snippets that may be excessive. The core information is front-loaded ('create or update a Connector call'), but the document could be more concise by summarizing connector-specific details rather than providing exhaustive documentation.

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 tool's complexity (8 parameters, no output schema, rich annotations), the description is largely complete. It covers purpose, usage guidelines, behavioral nuances, and parameter semantics across connector types. However, it lacks explicit error handling or response format details, which would be helpful given the absence of an output schema.

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

Parameters5/5

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

With schema description coverage at 63%, the description compensates significantly by explaining parameter semantics for connector types (REST, SOAP, SAPRFC). It details parameter purposes (e.g., 'verb' for HTTP method, 'bindingName' for SOAP binding), formats (e.g., 'headParams/<http-header-name>'), and usage examples. This adds substantial meaning beyond the input schema's property descriptions.

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 explicitly states the tool's purpose: 'create new connector calls' and 'modify existing connector calls.' It distinguishes from siblings like connector-call-delete and connector-call-test by specifying creation/update operations, not deletion or testing.

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 provides clear context for when to use this tool: 'When updating a call, always fetch the existing resource first to ensure operating on the latest version.' It also mentions that 'Existing parameters have to be resent when doing an update - otherwise they would be cleared.' However, it doesn't explicitly state when NOT to use this tool or name specific alternatives for different scenarios.

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

connector-deleteA
DestructiveIdempotent

Delete a Connector

ParametersJSON Schema
NameRequiredDescriptionDefault
connectorNameYesName of the Connector to delete

TDQS

A3.5/5.0
Behavior4/5

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

Annotations provide rich behavioral hints (destructiveHint: true, idempotentHint: true, readOnlyHint: false, openWorldHint: true), so the bar is lower. The description doesn't contradict these annotations, and while it doesn't add much beyond the obvious 'delete' action, it implicitly confirms the destructive nature. However, it misses opportunities to clarify what 'delete' entails (e.g., irreversible removal, effects on dependencies) beyond what annotations cover.

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?

The description is extremely concise with just four words ('Delete a Connector'), front-loading the core action and resource. There's zero wasted text, and it efficiently communicates the essential purpose without unnecessary elaboration, making it easy for an agent to parse quickly.

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

Completeness3/5

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

For a destructive deletion tool with no output schema, the description is minimal but adequate given the annotations cover key behavioral aspects (destructive, idempotent). However, it lacks context on prerequisites (e.g., authentication needs), side effects, or error handling, which could be important for safe invocation. The completeness is borderline, relying heavily on annotations to fill gaps.

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

Parameters3/5

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

Schema description coverage is 100%, with the single parameter 'connectorName' fully documented in the schema. The description adds no additional parameter information beyond what's in the schema, such as format examples or constraints. Given high schema coverage, a baseline score of 3 is appropriate as the description doesn't enhance parameter understanding but doesn't need to compensate for gaps.

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

Purpose4/5

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

The description clearly states the verb ('Delete') and resource ('a Connector'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling deletion tools like 'businessobject-delete' or 'connector-call-delete', which would require specifying what type of connector is being deleted or how it differs from other deletable resources.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With multiple deletion tools available (e.g., 'businessobject-delete', 'connector-call-delete', 'sap-system-delete'), there's no indication of what makes a 'Connector' distinct or when deletion is appropriate versus other operations like 'connector-update'. This leaves the agent without context for tool selection.

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

connector-updateA

Create or update a Connector

This tool allows to

  • create new connectors

  • modify existing connectors

Attention: When updating a Connector, allways fetch the existing resource first to ensure operating on the latest version. Existing tags and endpoints have to be resent when doing an update - otherwise they would be cleared.

Connector Types

Common settings

For all connectors using SSL / TLS, the sslSettings option has two fields:

  • trustType: An integer, with the following meaning:

    • 0: Always trust any certificate, regardless of CA signing

    • 1: Only trust the certificate specified explicitly

    • 2: Use system certificates for trust

    • 3: Combination of 1+2, trust explicitly specified certificate and any system trusted certificate.

  • ignoreSSLCertificates: boolean, if set to true, any TLS validation will be skipped and the target will always be trusted, even when the certificate does not match the hostname.

When no SSL is required, or no specific settings apply, use the following sslSettings:

{
"trustType": 2,
"ignoreSSLCertificates": false
}

Connector type 'REST'

The object under endpointConfiguration / configuration defines properties, specific to REST Connector:

  • endpointURL - the actual address of the remote REST endpoint

  • sslSettings - SSL related options.

Complete Example:

{
  "name": "TestCreate",
  "description": "",
  "connectorType": "REST",
  "active": true,
  "timeoutTime": 60,
  "endpointConfiguration": {
    "endpoint": "Default",
    "certificates": [],
    "configuration": {
      "endpointURL": "http://example-api.com/bla",
      "sslSettings": {
        "trustType": 2,
        "ignoreSSLCertificates": false
      }
    }
  },
  "tags": [],
  "assignedProjects": {
    "projectsAfterChange": []
  }
}

Connector type 'SOAP'

The object under endpointConfiguration / configuration defines properties, specific to SOAP Connector:

  • wsdlUrl - the address of a WSDL specification, which is used for the connector

  • sslSettings - SSL related options.

Complete Example:

{
  "name": "TestCreate",
  "description": "",
  "connectorType": "SOAP",
  "active": true,
  "timeoutTime": 60,
  "endpointConfiguration": {
    "endpoint": "Default",
    "certificates": [],
    "configuration": {
      "wsdlUrl": "http://example-soap.com/myService?wsdl",
      "sslSettings": {
        "trustType": 2,
        "ignoreSSLCertificates": false
      }
    }
  },
  "tags": [],
  "assignedProjects": {
    "projectsAfterChange": []
  }
}

Connector type 'SAP RFC'

The object under endpointConfiguration / configuration defines the following properties specific to SAP RFC connectors, all of them are mandatory:

  • sapSystem - ID of the target SAP system as a string.

  • parallelExecutions - Boolean. If true, batch calls (i.e. multiple function modules are executed in one call) are executed in parallel.

  • connectionPool - object with settings related to connection pooling:

    • peakLimit - number, maximum number of active connections at a time.

    • poolCapacity - number of pooled connections.

    • expirationTime - time in milliseconds for which connections are kept in the pool before being closed.

    • expirationCheckPeriod - time in milliseconds between checks for expired pooled connections.

    • maxGetClientTime - maximum time in milliseconds to wait for getting a connection (i.e. connection timeout).

Complete example:

{
  "name": "MyRfc",
  "description": "",
  "connectorType": "SAPRFC",
  "active": true,
  "timeoutTime": 60,
  "endpointConfiguration": {
    "endpoint": "Default",
    "certificates": [],
    "configuration": {
      "sapSystem": "ID4_0_800",
      "parallelExecutions": false,
      "connectionPool": {
        "peakLimit": 0,
        "poolCapacity": 1,
        "expirationTime": 60000,
        "expirationCheckPeriod": 60000,
        "maxGetClientTime": 30000
      }
    }
  },
  "tags": [],
  "assignedProjects": {
    "projectsAfterChange": []
  }
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionNo
connectorTypeYes
activeNo
timeoutTimeNomaximum duration of a call in seconds
endpointConfigurationNoOn creating a new connector, an endpoint configuration is mandatory. On updating a Connector: * endpoint configuration may be omitted if it is not intended to change. * a new endpoint configuration can be added by using a new endpoint name. * one endpoint configuration can be changed by using the name property of an existing configuration.
tagsNo
projectsBeforeNoProject names before the change. Use empty array [] when creating new Connectors, or provide current projects when updating.
projectsAfterChangeNoProject names to assign the Connector to. Required for tracking project assignments.

TDQS

A4.4/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond what annotations provide. While annotations indicate this is a write operation (readOnlyHint: false) and not destructive, the description warns about data loss during updates ('Existing tags and endpoints have to be resent when doing an update - otherwise they would be cleared'), which is critical operational guidance not captured in annotations.

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

Conciseness3/5

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

While well-structured with clear sections and examples, the description is quite lengthy (over 800 words) with extensive technical details. Some information could potentially be streamlined, though most content appears valuable for this complex tool. The purpose is front-loaded effectively.

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

Completeness5/5

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

Given the tool's high complexity (9 parameters, nested objects, 44% schema coverage, no output schema), the description provides comprehensive context. It covers connector types, SSL settings, update warnings, parameter interactions, and complete examples, making it sufficiently complete for an agent to understand and use this tool effectively.

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

Parameters5/5

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

With only 44% schema description coverage, the description compensates excellently by providing detailed parameter semantics. It explains connectorType-specific configurations (REST, SOAP, SAP RFC), sslSettings with trustType meanings, and provides complete JSON examples that clarify how parameters interact and should be structured, far exceeding what the sparse schema provides.

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 explicitly states the tool's purpose as 'create new connectors' and 'modify existing connectors', providing specific verbs and resources. It clearly distinguishes this from sibling tools like connector-delete and connector-call-update by focusing on creation and modification rather than deletion or testing.

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 provides clear guidance on when to use this tool for creation vs. update scenarios, including the important warning about fetching existing resources first when updating. However, it doesn't explicitly contrast when to use this versus alternatives like connector-wizard-rfc-create or other sibling tools, which prevents a perfect score.

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

connector-wizard-rfc-createA
Destructive

Create one or more calls for an RFC connector using the wizard

The RFC connector requires calls to refer to existing functions on the remote SAP system. To find available functions, use the resource template simplifier://connector-wizard/{connectorName}/search/{term}/{page}. Select the desired function names and pass them to this tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
connectorNameYesName of the RFC Connector to add calls to
rfcFunctionNamesYesNames of the SAP system's functions for which to create connector calls

TDQS

A3.8/5.0
Behavior3/5

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

Annotations indicate destructiveHint=true, readOnlyHint=false, openWorldHint=true, and idempotentHint=false, covering key behavioral traits. The description adds context about the wizard process and prerequisites, but doesn't disclose additional behavioral details like rate limits, auth needs, or specific destructive effects beyond what annotations imply. No contradiction with annotations exists.

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?

The description is appropriately sized and front-loaded, starting with the main purpose and followed by concise usage steps. Every sentence adds value without redundancy, making it efficient and well-structured for quick understanding.

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 tool's complexity (destructive creation with prerequisites), annotations cover safety and behavior well, and schema coverage is complete. The description adds necessary context about the wizard and resource template, compensating for the lack of output schema. It's mostly complete but could briefly mention expected outcomes or error handling.

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

Parameters3/5

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

Schema description coverage is 100%, with clear descriptions for both parameters. The description adds semantic context by explaining that connectorName refers to an RFC Connector and rfcFunctionNames are SAP system functions, but this mostly reinforces the schema without providing significant extra meaning like format examples or constraints.

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

Purpose4/5

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

The description clearly states the tool creates calls for an RFC connector using a wizard, specifying the verb ('create'), resource ('calls'), and context ('RFC connector'). It distinguishes from siblings like connector-call-delete or connector-call-update by focusing on creation via a wizard, though it doesn't explicitly contrast with all alternatives.

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 provides clear context on when to use this tool: after finding available functions via a specific resource template and selecting desired function names. It implies prerequisites but doesn't explicitly state when not to use it or name alternatives among siblings, though the context is sufficient for typical usage.

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

datatype-deleteA
DestructiveIdempotent

#Delete a datatype Deletes the datatype with the given name. The name may be prefixed by the namespace, separated with a slash.

ParametersJSON Schema
NameRequiredDescriptionDefault
qualifiedNameYes

TDQS

A4.4/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it explains the namespace prefix syntax and confirms the deletion action. While annotations already indicate destructiveHint=true and idempotentHint=true, the description reinforces the destructive nature and provides operational details not covered by structured fields.

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?

Extremely concise with zero wasted words. Two sentences cover purpose, action, parameter meaning, and syntax details. The hash header provides clear structure, and every element serves a specific informational purpose.

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

Completeness4/5

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

For a destructive operation with no output schema, the description provides good coverage: purpose, parameter semantics, and namespace syntax. However, it doesn't mention potential side effects, confirmation requirements, or what happens to dependent objects, which would be helpful given the destructive nature.

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?

With 0% schema description coverage and only one parameter, the description fully compensates by explaining what 'qualifiedName' represents (datatype name with optional namespace prefix separated by slash). It provides complete semantic understanding of the single parameter beyond the bare schema.

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 specific action ('Deletes') and resource ('datatype with the given name'), distinguishing it from sibling tools like datatype-update. It provides precise scope by mentioning namespace prefixing with slash syntax, making the purpose unambiguous and well-differentiated.

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 implies usage context through the namespace prefix explanation, but doesn't explicitly state when to use this tool versus alternatives like datatype-update or when deletion is appropriate. It provides some operational guidance but lacks explicit when/when-not directives or named alternatives.

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

datatype-updateA
Destructive

#Create or update custom data types

Custom datatypes can be either

  • a struct type, which requires the definition of fields and their types (parameter "fields")

  • a collection type, which requires a datatype for its elements (parameter "collectionDatatype")

  • a domain type, which requires a parent type it is derived from (parameter "derivedFrom") These are mutually exclusive, so only specify exactly one of the three parameters.

In these parameters, referenced datatypes are specified by name. If it isn't a global datatype, the name must be prefixed with the namespace, separated with a slash.

Datatypes for connectors should be in the namespace "con/$name_of_connector", those for business objects in "bo/$name_of_bo".

ParametersJSON Schema
NameRequiredDescriptionDefault
qualifiedNameYes
descriptionNo
derivedFromNo
collectionDatatypeNo
fieldsNo
tagsYes
projectAssignmentsNo

TDQS

A4.5/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it explains the mutually exclusive nature of three key parameters (fields, collectionDatatype, derivedFrom) and namespace formatting rules. While annotations already indicate this is a destructive, non-idempotent write operation (destructiveHint: true, idempotentHint: false), the description provides specific implementation details about datatype creation logic.

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?

The description is efficiently structured with clear bullet points explaining the three datatype categories, followed by concise explanations of namespace conventions. Every sentence provides essential information with zero wasted words, making it easy to scan and understand.

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

Completeness4/5

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

For a complex tool with 7 parameters, nested objects, no output schema, and destructive annotations, the description does well covering the core datatype creation logic and parameter relationships. However, it doesn't explain the purpose of other parameters like tags, projectAssignments, or the qualifiedName format, leaving some gaps in understanding the full tool scope.

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

Parameters5/5

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

With 0% schema description coverage, the description carries the full burden of explaining parameters. It successfully explains the purpose and relationships of three critical parameters (fields, collectionDatatype, derivedFrom), their mutual exclusivity, and namespace formatting requirements for referenced datatypes. This adds substantial meaning beyond the bare schema.

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 explicitly states the tool's purpose as 'Create or update custom data types' with specific details about the three mutually exclusive datatype categories (struct, collection, domain). It clearly distinguishes this tool from its sibling 'datatype-delete' by focusing on creation/update rather than deletion.

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 provides clear context about when to use specific parameters (mutually exclusive options for struct, collection, or domain types) and namespace conventions for connectors and business objects. However, it doesn't explicitly state when to use this tool versus alternatives like 'businessobject-update' or 'connector-update' which might handle related functionality.

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

logging-listA
Read-onlyIdempotent

Get recent log entries from Simplifier

This tool provides access to the Simplifier logging system. You can filter logs by level and time range. If no filters are used, it returns the 50 most recent log entries. If you are expecting to find some logs but they are missing, ask the user to check whether logging for execution is set to the right level in the Simplifier server settings.

Log Levels:

  • 0 = Debug

  • 1 = Info

  • 2 = Warning

  • 3 = Error

  • 4 = Critical

Parameters:

  • pageSize: number of log entries to return in one request, defaults to 50.

  • page: if more than "pageSize" entries are available, this can be used for accessing later pages. Starts at 0, defaults to 0.

  • logLevel: Filter by minimum log level (0-4)

  • since: ISO timestamp for entries since this time

  • from/until: ISO timestamps for a time range (must be used together)

Examples:

  • Default: Get 50 most recent entries

  • logLevel=3: Only errors and critical

  • since="2025-01-01T00:00:00Z": Entries since date

ParametersJSON Schema
NameRequiredDescriptionDefault
pageSizeNoNumber of log entries to return, defaults to 50
pageNoPage number for pagination, starts at 0
logLevelNoFilter by minimum log level (0=Debug, 1=Info, 2=Warning, 3=Error, 4=Critical)
sinceNoISO timestamp - get entries since this time
fromNoISO timestamp - start of time range (must be used with until)
untilNoISO timestamp - end of time range (must be used with from)

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, establishing this as a safe read operation. The description adds valuable behavioral context beyond annotations: default behavior (50 most recent entries), pagination mechanics, time range constraints ('from/until must be used together'), and troubleshooting advice about server logging levels.

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

Conciseness4/5

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

The description is well-structured with clear sections (purpose, parameters, examples) and uses markdown formatting effectively. It's appropriately sized for a 6-parameter tool, though the parameter section could be more concise since it duplicates schema information. Most sentences earn their place by providing useful context.

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

Completeness4/5

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

For a read-only logging tool with comprehensive annotations and 100% schema coverage, the description provides good contextual completeness. It explains the tool's scope, filtering capabilities, default behavior, and includes practical examples. The main gap is the lack of output schema, but the description compensates by explaining what gets returned (log entries).

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all 6 parameters. The description's parameter section largely repeats what's in the schema (though it adds the log level mapping 0-4). The examples provide some additional usage context, but overall the description adds limited value beyond the comprehensive schema.

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: 'Get recent log entries from Simplifier' with specific verb ('Get') and resource ('log entries'). It distinguishes itself from sibling tools (which are all businessobject/connector/datatype CRUD operations) by focusing on logging system access.

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 provides clear context about when to use it ('filter logs by level and time range') and what happens with no filters ('returns the 50 most recent log entries'). It also includes troubleshooting guidance for missing logs. However, it doesn't explicitly state when NOT to use it or name specific alternatives among siblings.

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

loginmethod-updateA

Create or update a Login Method

Create or update login methods for authenticating connectors with external systems.

Supported Types:

  • UserCredentials (BasicAuth): Username/password authentication

  • OAuth2: OAuth2 client-based authentication

  • Token: Token-based authentication (API keys, SimplifierToken)

  • SAPSSO: SAP-Single Sign on via Logon Ticket

Note that the type of a login method cannot be changed later. If you need to change the type, create a new login method instead.

UserCredentials (BasicAuth)

Creates or updates a basic authentication login method with various source types.

UserCredentials with Provided Source (Default)

Stores username and password directly in the login method.

Configuration:

  • loginMethodType: "UserCredentials"

  • sourceType: "Provided" (source ID: 1) - default

  • Target: Default (target ID: 0) - standard authentication header

Example - Creating BasicAuth:

{
  "loginMethodType": "UserCredentials",
  "sourceType": "Provided",
  "name": "MyBasicAuth",
  "description": "Basic auth for API",
  "username": "admin",
  "password": "secretPassword"
}

Example - Updating BasicAuth password:

{
  "loginMethodType": "UserCredentials",
  "sourceType": "Provided",
  "name": "MyBasicAuth",
  "description": "Updated description",
  "username": "admin",
  "password": "newPassword",
  "changePassword": true
}

UserCredentials with Profile Reference

References a key in the user's profile.

Example:

{
  "loginMethodType": "UserCredentials",
  "sourceType": "ProfileReference",
  "name": "MyBasicAuth",
  "description": "BasicAuth from user profile",
  "profileKey": "credentialsKey"
}

UserCredentials with User Attribute Reference

References a user attribute by name and category.

Example:

{
  "loginMethodType": "UserCredentials",
  "sourceType": "UserAttributeReference",
  "name": "MyBasicAuth",
  "description": "BasicAuth from user attribute",
  "userAttributeName": "myAttrName",
  "userAttributeCategory": "myAttrCat"
}

OAuth2 Login Methods

Creates or updates OAuth2-based login methods with various source configurations.

IMPORTANT: When creating an OAuth2 login method with a client reference, the oauth2ClientName MUST match one of the existing OAuth2 clients configured in Simplifier. You can discover available clients using the simplifier://oauthclients resource before creating the login method.

OAuth2 with Client Reference

Uses a configured OAuth2 client from Simplifier. Discover available clients: Use simplifier://oauthclients resource

Configuration:

  • loginMethodType: "OAuth2"

  • sourceType: "ClientReference"

  • Target: 0 = default header, 1 = custom header, 2 = query parameter

Example - Default header:

{
  "loginMethodType": "OAuth2",
  "sourceType": "ClientReference",
  "name": "MyOAuth",
  "description": "OAuth with infraOIDC",
  "oauth2ClientName": "infraOIDC",
  "targetType": "Default"
}

Example - Custom header:

{
  "loginMethodType": "OAuth2",
  "sourceType": "ClientReference",
  "name": "MyOAuth",
  "description": "OAuth with custom header",
  "oauth2ClientName": "infraOIDC",
  "targetType": "CustomHeader",
  "customHeaderName": "X-Custom-Auth"
}

Example - Query parameter:

{
  "loginMethodType": "OAuth2",
  "sourceType": "ClientReference",
  "name": "MyOAuth",
  "description": "OAuth as query param",
  "oauth2ClientName": "infraOIDC",
  "targetType": "QueryParameter",
  "queryParameterKey": "authToken"
}

OAuth2 with Profile Reference

References a key in the user's profile.

Example:

{
  "loginMethodType": "OAuth2",
  "sourceType": "ProfileReference",
  "name": "MyOAuth",
  "description": "OAuth from user profile",
  "profileKey": "oauthToken",
  "targetType": "Default"
}

OAuth2 with User Attribute Reference

References a user attribute by name and category.

Example:

{
  "loginMethodType": "OAuth2",
  "sourceType": "UserAttributeReference",
  "name": "MyOAuth",
  "description": "OAuth from user attribute",
  "userAttributeName": "myAttrName",
  "userAttributeCategory": "myAttrCat",
  "targetType": "Default"
}

Token Login Methods

Creates or updates Token-based login methods for API authentication, including SimplifierToken support. Can be used for API-KEYs or for tokens, that you have received with former Simplifier Auth Clients and stored in the UserProfile or in the UserAttributes. In case you have received a token from a former connector call, you might want to add the token with every call in a header via a connector call input parameter.

Token with Default Source

Uses an empty configuration (no credentials stored). Typically used as a placeholder.

Configuration:

  • loginMethodType: "Token"

  • sourceType: "Default" (source ID: 0)

  • Target: 0 = default header, 1 = custom header

Example:

{
  "loginMethodType": "Token",
  "sourceType": "Default",
  "name": "MyTokenDefault",
  "description": "Token with default source",
  "targetType": "Default"
}

Token with SystemReference Source

Uses the SimplifierToken for authentication. This is the primary use case for authenticating Simplifier apps accessing the REST API.

Configuration:

  • loginMethodType: "Token"

  • sourceType: "SystemReference" (source ID: 3)

  • Target: 0 = default header, 1 = custom header

Example:

{
  "loginMethodType": "Token",
  "sourceType": "SystemReference",
  "name": "SimplifierTokenAuth",
  "description": "Uses SimplifierToken",
  "targetType": "Default"
}

Token with Provided Source

Stores a token value directly in the login method. Useful for API keys.

Configuration:

  • loginMethodType: "Token"

  • sourceType: "Provided" (source ID: 1)

  • Target: 0 = default header, 1 = custom header

Example - Creating Token:

{
  "loginMethodType": "Token",
  "sourceType": "Provided",
  "name": "MyAPIKey",
  "description": "API key authentication",
  "token": "mySecretToken123",
  "targetType": "Default"
}

Example - Updating Token value:

{
  "loginMethodType": "Token",
  "sourceType": "Provided",
  "name": "MyAPIKey",
  "description": "Updated API key",
  "token": "newSecretToken456",
  "changeToken": true
}

Example - Updating description only (without changing token):

{
  "loginMethodType": "Token",
  "sourceType": "Provided",
  "name": "MyAPIKey",
  "description": "Updated description only",
  "token": "<not relevant>",
  "changeToken": false
}

Token with Custom Header

Place the token in a custom HTTP header.

Example:

{
  "loginMethodType": "Token",
  "sourceType": "Provided",
  "name": "MyAPIKeyHeader",
  "description": "Token in custom header",
  "token": "myToken123",
  "targetType": "CustomHeader",
  "customHeaderName": "X-API-Token"
}

Token with Profile Reference

References a token stored in the user's profile.

Example:

{
  "loginMethodType": "Token",
  "sourceType": "ProfileReference",
  "name": "MyTokenFromProfile",
  "description": "Token from user profile",
  "profileKey": "apiTokenKey",
  "targetType": "Default"
}

Token with User Attribute Reference

References a token from a user attribute.

Example:

{
  "loginMethodType": "Token",
  "sourceType": "UserAttributeReference",
  "name": "MyTokenFromAttr",
  "description": "Token from user attribute",
  "userAttributeName": "tokenAttribute",
  "userAttributeCategory": "security",
  "targetType": "Default"
}

SAP-SSO Login Methods

Creates or updates SAP-SSO login methods for API authentication. Can be used for users authenticated against a SAP authentication method or with a constant value or one stored in the UserProfile or in the UserAttributes.

SAP-SSO with Default Source

Uses an empty configuration (no credentials stored). Uses the SAP Logon Ticket from the user, which needs to be logged in using SAP-SSO.

Configuration:

  • loginMethodType: "SAPSSO"

  • sourceType: "Default" (source ID: 0)

  • Target: 0 = default

Example:

{
  "loginMethodType": "SAPSSO",
  "sourceType": "Default",
  "name": "MySAPSSODefault",
  "description": "SAPSSO with default source",
  "targetType": "Default"
}

SAP-SSO with Provided Source

Stores a logon ticket value directly in the login method. Useful for API keys.

Configuration:

  • loginMethodType: "SAPSSO"

  • sourceType: "Provided" (source ID: 1)

  • Target: 0 = default header, 1 = custom header

Example - Creating SAP-SSO:

{
  "loginMethodType": "SAPSSO",
  "sourceType": "Provided",
  "name": "MyAPIKey",
  "description": "SAP-SSO with constant logon ticket authentication",
  "ticket": "mySecretToken123",
  "targetType": "Default"
}

Example - Updating ticket value:

{
  "loginMethodType": "SAPSSO",
  "sourceType": "Provided",
  "name": "MyAPIKey",
  "description": "SAP-SSO with constant logon ticket authentication",
  "ticket": "newSecretToken456",
  "changeToken": true
}

Example - Updating description only (without changing ticket):

{
  "loginMethodType": "SAPSSO",
  "sourceType": "Provided",
  "name": "MyAPIKey",
  "description": "Updated description only",
  "ticket": "<not relevant>",
  "changeToken": false
}

SAP-SSO with Profile Reference

References a ticket stored in the user's profile.

Example:

{
  "loginMethodType": "SAPSSO",
  "sourceType": "ProfileReference",
  "name": "MyTicketFromProfile",
  "description": "Ticket from user profile",
  "profileKey": "apiTicket",
  "targetType": "Default"
}

SAP-SSO with User Attribute Reference

References a ticket from a user attribute.

Example:

{
  "loginMethodType": "SAPSSO",
  "sourceType": "UserAttributeReference",
  "name": "MyTicketFromAttr",
  "description": "Ticket from user attribute",
  "userAttributeName": "ticketAttribute",
  "userAttributeCategory": "security",
  "targetType": "Default"
}
ParametersJSON Schema
NameRequiredDescriptionDefault
loginMethodTypeYesType of login method: UserCredentials for BasicAuth, OAuth2 for OAuth2-based auth, Token for token-based auth, SingleSignOn for SAP-SSO Logon Ticket
nameYesName of the login method
descriptionYesDescription of the login method
sourceTypeNoSource type: * Default (system default - credentials for UserCredentials, OAuth2 client for OAuth2, empty for Token, user logon ticket for SAP-SSO) * SystemReference (Token - uses SimplifierToken) * Provided (UserCredentials - username/password, Token - token value) * Reference (OAuth2 - OAuth2 client reference) * ProfileReference (user profile key) * UserAttributeReference (user attribute)
usernameNo[UserCredentials Default/Provided] Username for basic authentication. Must not be empty string. If the information is not given (i.e. in case of Microsoft PAT authentication), use a non empty placeholder
passwordNo[UserCredentials Default/Provided] Password for basic authentication
changePasswordNo[UserCredentials Default/Provided] Set to true when updating to change the password
tokenNo[Token Provided] Token value for authentication
changeTokenNo[Token Provided] Set to true when updating to change the token
ticketNo[SingleSignOn Provided] Ticket value for authentication
changeTicketNo[SingleSignOn Provided] Set to true when updating to change the ticket
oauth2ClientNameNo[OAuth2 Default/Reference] Name of the OAuth2 client (discover via simplifier://oauthclients). **Important**: The `oauth2ClientName` **MUST** match one of the existing OAuth2 clients configured in Simplifier. You should discover available clients using the `simplifier://oauthclients` resource before creating the login method.
profileKeyNo[ProfileReference] Key name in the user's profile
userAttributeNameNo[UserAttributeReference] Name of the user attribute
userAttributeCategoryNo[UserAttributeReference] Category of the user attribute
targetTypeNo[OAuth2/Token] Target type: Default (standard auth header), CustomHeader (custom header name), QueryParameter (query param - OAuth2 only)Default
customHeaderNameNo[OAuth2 CustomHeader] Name of the custom authentication header
queryParameterKeyNo[OAuth2 QueryParameter] Key name for the query parameter

TDQS

A4/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations. Annotations indicate this is a mutable, non-destructive operation (readOnlyHint: false, destructiveHint: false), but the description elaborates on update semantics, type immutability constraints, and provides specific examples for different authentication scenarios. It also mentions prerequisites like discovering OAuth2 clients, which adds practical implementation guidance.

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

Conciseness2/5

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

The description is excessively long (over 150 lines) with redundant information. While well-structured with sections for each authentication type, it includes multiple repetitive examples and could be significantly condensed. The core concepts could be communicated in a fraction of the length without losing essential information.

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

Completeness4/5

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

For a complex tool with 18 parameters and no output schema, the description provides comprehensive coverage of authentication types, source configurations, and usage patterns. It addresses the main complexity areas through detailed examples. The main gap is the lack of information about return values or error conditions, but given the tool's complexity, the description does an above-average job of providing context.

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

Parameters5/5

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

Despite 100% schema description coverage, the description adds substantial value through comprehensive examples that illustrate parameter combinations for different authentication types. It provides concrete JSON configurations for UserCredentials, OAuth2, Token, and SAPSSO methods with various source types, showing how parameters interact in real-world scenarios far beyond what the schema descriptions provide.

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 or update login methods for authenticating connectors with external systems.' It specifies the verb (create/update) and resource (login methods), and distinguishes from siblings by focusing on authentication configuration rather than business objects, connectors, or other system components.

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

Usage Guidelines3/5

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

The description provides some usage context by listing supported authentication types and noting that 'the type of a login method cannot be changed later,' but it doesn't explicitly state when to use this tool versus alternatives. While it mentions discovering OAuth2 clients before creation, there's no guidance on when to choose this tool over other authentication configuration methods or when not to use it.

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

sap-system-deleteA
DestructiveIdempotent

Delete an existing SAP system

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, which the description doesn't contradict. The description adds minimal context by specifying 'existing SAP system,' implying it won't work for non-existent systems, but doesn't elaborate on permissions, confirmation requirements, or recovery options beyond what annotations provide.

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?

The description is a single, front-loaded sentence with zero waste. Every word contributes directly to stating the tool's purpose without unnecessary elaboration.

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

Completeness3/5

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

Given the tool's destructive nature (per annotations) and lack of output schema, the description is minimally adequate but incomplete. It doesn't address potential side effects, error conditions, or what happens post-deletion, which would be valuable for a destructive operation.

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

Parameters3/5

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

Schema description coverage is 0%, with one parameter 'name' undocumented in the schema. The description doesn't add any parameter details beyond what's implied by the tool name, failing to compensate for the coverage gap. Baseline 3 applies as the schema provides structure but no descriptions.

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

Purpose4/5

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

The description clearly states the action ('Delete') and target resource ('an existing SAP system'), providing specific verb+resource pairing. However, it doesn't explicitly differentiate from sibling tools like 'sap-system-update' or other delete operations, which would be needed for a perfect score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. With sibling tools like 'sap-system-update' and multiple other delete operations, there's no indication of prerequisites, appropriate contexts, or when-not-to-use scenarios.

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

sap-system-updateA
Destructive

#Create or update a SAP system

SAP Systems are used as the target of RFC connectors.

Attention: When updating tags, allways fetch the SAP system resource first to ensure operating on the latest version. Existing tags have to be resent when doing an update - otherwise they would be cleared.

You can find existing SAP systems with the simplifier://sap-systems resource, and details about a single system with simplifier://sap-system/{systemName}

Project Assignment

SAP systems must be assigned to projects using the project assignment parameters:

For Creating New SAP Systems:

  • Set projectsBefore to empty array []

  • Set projectsAfterChange to array of project names to assign the SAP system to

For Updating Existing SAP Systems:

  • Set projectsBefore to current project assignments (from existing SAP system)

  • Set projectsAfterChange to new project assignments

Example:

{
  "name": "MySapSystem",
  "projectsBefore": [],
  "projectsAfterChange": ["ProjectA", "ProjectB"]
}
ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
descriptionYes
activeNoenables or disables the SAP system. Should be true, if you want to use the system
instanceRestrictionsYesrestrict this system to specific Simplifier instances, it isn't transported to unlisted instances. If this is empty, no restriction is applied
systemTypeNoThe type of your SAP System (e.g. Development, Testing, Production…)
configurationYes
tagsYesArray of tags for categorizing and organizing this SAP system. If not provided when updating, existing tags will be preserved.
projectsBeforeNoProject names before the change. Use empty array [] when creating new SAP systems, or provide current projects when updating.
projectsAfterChangeNoProject names to assign the SAP system to. Required for tracking project assignments.

TDQS

A4.5/5.0
Behavior4/5

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

The description adds valuable behavioral context beyond annotations: it warns about tag clearing during updates (requiring fetching the latest version first) and explains project assignment logic. Annotations already indicate this is a destructive, non-idempotent write operation (destructiveHint: true, idempotentHint: false), but the description provides specific implementation details that help the agent use the tool correctly.

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

Conciseness4/5

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

The description is well-structured with clear sections (purpose, attention warning, resource references, project assignment rules, example). While somewhat lengthy, every section serves a purpose: the warning about tags is crucial, the project assignment explanation is necessary for correct usage, and the example clarifies complex parameter interactions.

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

Completeness4/5

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

For a complex tool with 9 parameters, nested objects, no output schema, and destructive annotations, the description provides substantial context: it explains the tool's role in the ecosystem, gives implementation warnings, details project assignment logic, and provides usage examples. The main gap is lack of information about return values or error handling, but overall it's quite comprehensive.

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?

With 67% schema description coverage, the description compensates well by explaining critical parameter semantics: it details the purpose and usage of 'projectsBefore' and 'projectsAfterChange' parameters with clear examples, and provides important warnings about 'tags' parameter behavior during updates. This adds significant value beyond the schema's technical descriptions.

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 as 'Create or update a SAP system' and explains that SAP Systems are used as targets for RFC connectors. It distinguishes from siblings like 'sap-system-delete' by focusing on creation/update operations rather than deletion.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives: it references finding existing systems with 'simplifier://sap-systems' and details with 'simplifier://sap-system/{systemName}'. It also gives clear instructions for creating vs. updating scenarios, including project assignment rules and tag handling warnings.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 17 tool updates
    • First observedbusinessobject-delete
    • First observedbusinessobject-function-delete
    • First observedbusinessobject-function-test
    • First observedbusinessobject-function-update
    • First observedbusinessobject-update
    • First observedconnector-call-delete
    • First observedconnector-call-test
    • First observedconnector-call-update
    • First observedconnector-delete
    • First observedconnector-update
    • First observedconnector-wizard-rfc-create
    • First observeddatatype-delete
    • First observeddatatype-update
    • First observedlogging-list
    • First observedloginmethod-update
    • First observedsap-system-delete
    • First observedsap-system-update

TDQS

A3.9/5.0
Disambiguation4/5

Tools are well-distinguished by resource type (Business Object, Connector, Data Type, etc.) and action (delete, update, test), with clear boundaries. Minor ambiguity exists between 'businessobject-update' and 'businessobject-function-update' as both involve updates, but their distinct targets (BO vs. BO function) are clarified in descriptions.

Naming Consistency5/5

Naming follows a consistent pattern of 'resource-action' with hyphens (e.g., businessobject-delete, connector-call-test). All tools adhere to this snake_case-like convention, making them predictable and easy to parse. No mixing of styles or deviations observed.

Tool Count4/5

17 tools is slightly high but reasonable for a comprehensive Simplifier management server covering multiple resource types (Business Objects, Connectors, Data Types, etc.). It provides full CRUD operations across these domains, though it could be streamlined by grouping similar actions.

Completeness5/5

The tool set offers complete coverage for managing Simplifier resources: CRUD operations for Business Objects, Connectors, Data Types, SAP Systems, and Login Methods, plus testing tools and logging. No obvious gaps exist; agents can perform full lifecycle management and debugging tasks.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.
    21
    4
    MIT
  • A
    license
    C
    quality
    Not graded
    maintenance
    An MCP server that facilitates seamless interaction with SAP ABAP systems to manage development objects, transport requests, and source code. It provides a comprehensive suite of tools for performing syntax checks, object searches, and code modifications via the ADT API.
    100
    -
  • A
    license
    C
    quality
    Not graded
    maintenance
    A Model Context Protocol server that facilitates seamless communication between ABAP systems and MCP clients for managing ABAP objects, transport requests, and code analysis. It acts as a wrapper for the ABAP ADT API to enhance the efficiency of ABAP development workflows.
    100
    -
  • A
    license
    C
    quality
    D
    maintenance
    An MCP server that enables seamless communication between ABAP systems and MCP clients using the ABAP Development Tools (ADT) API. It provides tools for managing ABAP objects, handling transport requests, and performing code analysis directly through MCP-compatible interfaces.
    100
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/simplifier-ag/simplifier-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server