SAP CPI MCP Server
This server enables AI clients to monitor and manage SAP Cloud Integration (CPI) via its OData v1 APIs, offering comprehensive tools for message monitoring, design-time content, deployment, administration, and generic API access with robust safety controls.
Monitoring: Search message processing logs by status, integration flow, and time; retrieve detailed log entries, error texts, custom header properties, per-step run traces, message store entries, and failure summaries; cancel stuck messages.
Design-time: Manage integration packages (list, create, delete, copy), integration flows (create, save, download, list resources), externalized configurations, and perform content search with
where_used.Deployment: List artifacts and statuses, deploy/undeploy, monitor async builds, and list runtime service endpoints.
Admin: Manage security materials (user credentials, OAuth2 clients, keystore), number ranges, data stores, variables, JMS queues, partners, and log files.
Generic API: Discover entity sets/operations, run OData queries, get entities, invoke function imports, and perform create/update/delete with
confirm=true.Safety: Write/destructive tools require
ALLOW_WRITE=trueenv and explicitconfirm; RBAC roles (Support read-only, Developer read+create/deploy, Architect full access). Supports stdio and HTTP (BTP Cloud Foundry) deployments, with OAuth2, static token, or open authentication.
Allows monitoring and managing SAP Cloud Integration (CPI) through its OData APIs, including message processing logs, design-time content, runtime deployment, and admin tasks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SAP CPI MCP Servershow me failed messages from the last hour"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SAP CPI MCP Server
⚠️ Archived — superseded by sap-cpi-multi-tenant-mcp-server. This repo was single-tenant only. All further development (multi-tenant support,
build_integration_flowflow authoring, and everything since) continues at the link above. This repo is kept for history only and will not receive further updates.
A Model Context Protocol server that lets an MCP client (Claude Desktop, Claude Code, etc.) monitor and manage SAP Cloud Integration (CPI / Integration Suite) through its OData v1 APIs — the same surface documented as the "Cloud Integration" package on the SAP Business Accelerator Hub.
It runs locally over stdio or as an HTTP service you can deploy to SAP BTP Cloud Foundry.
45 tools: curated tools for the common workflows, plus generic escape-hatch tools
(cpi_query, cpi_get_entity, cpi_invoke_function, cpi_write) that reach any of the
~130 entity sets and 35 operations the API exposes.
What it can do (tools)
Monitoring — Message Processing Logs (MPL)
Tool | Purpose |
| Search/filter MPLs by status, flow, time window |
| Full MPL entry for a MessageGuid |
| Detailed error/exception text for a failed message |
| Custom header properties (business keys) |
| Per-step run trace within a message |
| Persisted payloads for a message |
| Failures grouped by integration flow (health dashboard) |
| Cancel a processing/retrying message |
Design-time content
Tool | Purpose |
| Packages |
| Package CRUD |
| Copy a standard/Discover package into the workspace |
| Integration flows |
| Create a new (empty) iFlow in a package |
| Save the flow draft as a new version (+ optional comment) |
| Download flow as base64 zip |
| Externalized parameters |
| Scripts/XSDs/WSDLs inside a flow |
| Search a word/string (e.g. a credential name, endpoint, or value) across flow content — process XML, adapter properties, scripts, mappings, parameter files — one package, one flow, or the whole tenant |
Runtime & deployment
Tool | Purpose |
| Deployed artifacts + status |
| Deploy iFlow / mapping / script / value-mapping / adapter |
| Undeploy a running artifact |
| Async deploy task status |
| Runtime endpoint URLs of deployed flows |
Admin (security material, config, queues, B2B, logs)
Tool | Purpose |
| User Credential security material |
| OAuth2 client credentials |
| Keystore certificates / key pairs |
| Number ranges |
| Data stores + entries |
| Global/local variables |
| JMS queues (Enterprise plan; 501 on trial) |
| Partner Directory partners |
| System log files |
Generic — full API coverage
Tool | Purpose |
| Discover every entity set & function import |
| Read any entity set with |
| Read one record by (single or composite) key |
| Invoke any function import |
| Create/update/delete any entity (DELETE needs |
⚠️ = write/destructive tool — requires ALLOW_WRITE=true (see below).
Related MCP server: mcp-sap-cpi
Write safety
Read tools always work. Write / deploy / delete tools only run when ALLOW_WRITE=true is set
in your .env. In addition, every write action requires an explicit confirm=true: calling a
write tool without it returns an "Are you sure you want to …?" prompt and makes no changes.
Re-run the same tool with confirm=true to proceed. This gives a two-step confirmation for all
create/update/delete/deploy operations.
ALLOW_WRITE=false # default — read-only
ALLOW_WRITE=true # enable the ⚠️ toolsRole-based access control (RBAC)
Three roles, layered on top of ALLOW_WRITE/confirm=true rather than replacing them:
Role | Scope(s) granted | Can use |
Support |
| Every read/list/search/download tool |
Developer |
| The above, plus create/update/deploy tools |
Architect |
| Everything, including delete/undeploy and the generic |
The generic escape-hatch tools (cpi_write, cpi_invoke_function) are pinned to mcp.delete
regardless of the HTTP method or function called — they can reach operations (arbitrary
DELETE, or destructive function imports like DeleteValMaps) that the curated tools don't
expose, so they're Architect-only rather than Developer-only.
This only applies to the HTTP transport with an XSUAA binding. The static-token and open modes grant full access to everyone (no per-user identity to hang a role off), and the stdio transport is unaffected — it's a local subprocess with no role boundary, same as before.
Setting it up in BTP
xs-security.jsondefines exactly three scopes and role templates —Support,Developer,Architect. There is no legacy/default role: a caller not assigned one of these three gets an empty scope set and no tools at all (seeresolveOauthScopesinsrc/auth.js), not silent read-only access. Push the updated descriptor:cf update-service sap-cpi-mcp-xsuaa -c xs-security.json cf restage sap-cpi-mcp-serverIn BTP Cockpit → your subaccount → Security → Role Collections, create three collections —
Architect,Developer,Support— each pulling in the matching role template from thesap-cpi-mcpapp.Assign your team: either manually per user (Role Collection → Edit → add by email), or — if you already trust an IdP like Entra ID — map IdP groups to these Role Collections under Security → Trust Configuration → your IdP → Role Collection Mappings, so membership in an Entra group like
MCP-Architectgrants the collection automatically at login.A user's token then carries whichever scopes their Role Collection grants;
src/auth.jsreads them off the verified JWT andsrc/domains/helpers.jsenforces them per tool call.
Testing a role change — watch for token caching
After moving a user between Role Collections, the change will not show up until they get a
genuinely new access token — MCP clients (including Claude.ai) cache the tool list and will
silently reuse a still-valid token via refresh rather than re-authenticating. token-validity
in xs-security.json is 3600s (1 hour), so a client can hold a stale scope set for up to an
hour after a role change.
To force a real re-check: fully remove/delete the connector in the client (not just "Disconnect" — that alone may not clear the cached token) and re-add it from scratch, so it goes through a brand-new OAuth login. Look for a "tools list refreshed"-style confirmation after reconnecting, and check the tool count actually changed, before concluding a role assignment didn't take effect.
Securing the HTTP endpoint with OAuth 2.0 (XSUAA)
For the hosted (Cloud Foundry) endpoint, authentication is handled by src/auth.js:
OAuth 2.0 (recommended) — bind an XSUAA instance and the server requires a valid JWT:
cf create-service xsuaa application sap-cpi-mcp-xsuaa -c xs-security.json cf bind-service sap-cpi-mcp-server sap-cpi-mcp-xsuaa cf restage sap-cpi-mcp-server cf create-service-key sap-cpi-mcp-xsuaa claude-connector # -> clientid/secret/url for the clientThe server verifies the JWT signature against XSUAA's JWKS (
<uaa>/token_keys) and checks the audience. A client obtains a token viaclient_credentials(orauthorization_code) from<uaa>/oauth/tokenand calls/mcpwithAuthorization: Bearer <jwt>.Static token (dev/fallback) — if no XSUAA is bound but
MCP_AUTH_TOKENis set, that static bearer token is required instead.Open — if neither is configured, the endpoint is unauthenticated (local/PoC only).
Auth mode is auto-detected: XSUAA binding → OAuth; else MCP_AUTH_TOKEN → static; else open.
The local stdio transport is unaffected by all of this.
OAuth discovery / authorize / token proxy (remote MCP clients)
Remote MCP OAuth clients (e.g. a Claude custom connector) resolve the authorization server
either via RFC 8414 discovery at this origin, or —
if that's absent — by assuming /authorize and /token live on the MCP server's own host.
XSUAA's real endpoints live on a different host (the UAA tenant), so without help the client
gets a 404 hitting <this-origin>/authorize directly.
When an XSUAA binding is present, the server exposes:
Route | Purpose |
| RFC 8414 metadata pointing at the real XSUAA |
| Redirects to the real XSUAA |
| Proxies the code/token exchange to the real XSUAA |
If no XSUAA binding is found, these routes are not mounted and a warning is logged at startup.
This is purely a discovery/proxy convenience for OAuth clients — it does not replace the JWT
verification in authMiddleware(), which still gates every request to /mcp.
1. Get CPI API credentials (one-time)
The OData API is served by the Process Integration Runtime service.
In your BTP subaccount → Instances and Subscriptions → create an instance of Process Integration Runtime with plan
api.Under Roles, grant the roles you need, e.g.:
MessageProcessingLogRead(read MPLs)IntegrationContentRead(read packages / design artifacts / deployed artifacts)MonitoringDataReadFor the ⚠️ write tools (deploy/undeploy/create/delete): add the write/deploy roles too, e.g.
WorkspacePackagesEdit,WorkspaceArtifactsDeploy,MessageProcessingLogCustomHeaderRead, and the relevant security-material roles.
Create a Service Key on that instance. From the key you get:
url→ yourCPI_BASE_URLis<url>/api/v1tokenurl→ yourCPI_TOKEN_URL(it already ends in/oauth/token)clientid→CPI_CLIENT_IDclientsecret→CPI_CLIENT_SECRET
2. Run locally (stdio) with Claude Desktop / Claude Code
npm install
cp .env.example .env # then edit .env with your service-key valuesAdd to your MCP client config (Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"sap-cpi": {
"command": "node",
"args": ["C:/path/to/sap-cpi-mcp-server/src/index.js"],
"env": {
"CPI_BASE_URL": "https://your-tenant.it-cpiXXX.cfapps.eu10.hana.ondemand.com/api/v1",
"CPI_TOKEN_URL": "https://your-subdomain.authentication.eu10.hana.ondemand.com/oauth/token",
"CPI_CLIENT_ID": "your-client-id",
"CPI_CLIENT_SECRET": "your-client-secret"
}
}
}
}For Claude Code:
claude mcp add sap-cpi -- node C:/path/to/sap-cpi-mcp-server/src/index.js3. Deploy to SAP BTP Cloud Foundry (HTTP)
A full walkthrough of deploying this server as a Cloud Foundry app, securing it with XSUAA, and
connecting it to Claude as a custom connector — done entirely through the BTP Cockpit web UI
(a cf CLI equivalent is in Appendix A below for
anyone who prefers the command line).
What you will end up with
A running Cloud Foundry application (
sap-cpi-mcp-server) that exposes the MCP server over HTTPS at a/mcpendpoint.The application securely calling your SAP CPI tenant's OData APIs using OAuth client credentials.
An XSUAA-protected front door, so only users assigned to an approved role collection can reach the MCP endpoint.
Claude connected to that endpoint as a custom connector, able to call all 45 CPI tools directly from a chat.
Architecture at a glance
Component | Role |
GitHub repository ( | Node.js MCP server source code — 45 tools for CPI monitoring and management. |
Cloud Foundry application ( | Runs the MCP server as an HTTP service; exposes |
Process Integration Runtime service key | OAuth client the app uses to call your CPI tenant's OData / monitoring APIs. |
XSUAA service instance ( | Issues OAuth tokens that protect the |
Role Collections | Map SAP BTP users to Architect / Developer / Support levels of access on the MCP server (see RBAC above). |
Claude custom connector | Calls the deployed |
Prerequisites
An SAP BTP account (trial or licensed) with entitlement for Cloud Foundry Runtime and Authorization and Trust Management Service.
Space Developer authorization on the target Cloud Foundry space.
Rights to create a Process Integration Runtime service key on the CPI subaccount (for OAuth credentials).
A Claude plan that supports custom connectors (Settings → Connectors).
Part A — Package the MCP Server for Deployment
Step 1 — Download the Source Code
Open this GitHub repository and download the project as a ZIP archive.
Click Code → Download ZIP.
Figure 1 — The sap-cpi-mcp-server GitHub repository, Code → Download ZIP.
Step 2 — Prepare the Deployment ZIP
Cloud Foundry's build pack looks for package.json at the root of the uploaded archive.
GitHub's downloaded ZIP wraps everything inside a folder (e.g., sap-cpi-mcp-server-main/), so
it needs to be re-zipped.
Extract the downloaded ZIP and open the extracted folder.
Select
package.json,package-lock.jsonand thesrcfolder (do not select the enclosing folder itself).Right-click → Send to → Compressed (zipped) folder, and name it
sap-cpi-mcp-server.zip.
Figure 2 — Selecting package.json, package-lock.json and src, then Send to → Compressed (zipped) folder.
⚠️ Watch out: If you instead zip the whole extracted folder,
package.jsonends up one level too deep and staging will fail with a "module not found" style error. Verify the new zip opens straight intopackage.json,src/, etc. — not into another folder.
Part B — Set Up Cloud Foundry on SAP BTP
Step 3 — Enable the Cloud Foundry Environment
In the BTP Cockpit, open your subaccount's Overview page. If Cloud Foundry hasn't been enabled yet, do so from here.
Figure 3 — Subaccount Overview, with the Cloud Foundry Environment panel and Enable Cloud Foundry.
Figure 4 — Cloud Foundry Environment details: API endpoint, org name/ID, and the Spaces list.
Step 4 — Create Space
Click Create Space (top-right of the Spaces panel shown above) and name it — for example,
dev. This is the space you will deploy the application into.
Part C — Deploy the Application
Step 5 — Deploy via BTP Cockpit
Open the dev space → Applications and click Deploy Application.
Figure 5 — The Deploy Application dialog: File location, Deploy with (Manifest/Custom Settings), Manifest location.
Upload the re-zipped file (
sap-cpi-mcp-server.zip) at File location.Keep Deploy with set to Manifest.
Browse to
manifest.ymlfrom the extracted folder for Manifest location.Keep Start application after deploy checked, then click Deploy.
Figure 6 — Dialog filled in with sap-cpi-mcp-server.zip and manifest.yml, ready to deploy.
Step 6 — Confirm the Application Is Running
Once deployment finishes, the application appears in the Applications list with a Started state.
Figure 7 — Applications (1): sap-cpi-mcp-server, Requested State: Started.
Open it to see the Application Overview — buildpack, stack, and the Mapped Routes section with the public HTTPS URL Cloud Foundry assigned to the app.
Figure 8 — Application Overview showing the nodejs_buildpack, cflinuxfs4 stack, and the Mapped Route.
Step 7 — Verify with a Health Check
Open the Mapped Route link from Step 6 and append /health to it. A healthy deployment returns
a small JSON payload confirming the server name, version, and an "ok" status.
Figure 9 — GET /health returning { "status": "ok", "server": { "name": "sap-cpi-mcp-server", "version": "1.0.0" } }.
Part D — Connect the App to Your SAP CPI Tenant
Step 8 — Create a Process Integration Runtime Service Key
The app needs its own OAuth client to call your CPI tenant's OData APIs — see 1. Get CPI API credentials above for how to create it and which fields map to which env var.
Step 9 — Configure Environment Variables
In the application, go to User-Provided Variables and click Create Variable for each of
CPI_BASE_URL, CPI_TOKEN_URL, CPI_CLIENT_ID, CPI_CLIENT_SECRET, MCP_TRANSPORT=http, and
ALLOW_WRITE (keep false unless the connector should be allowed to write):
Figure 10 — User-Provided Variables: ALLOW_WRITE, CPI_BASE_URL, CPI_CLIENT_ID, CPI_CLIENT_SECRET, CPI_TOKEN_URL, MCP_TRANSPORT.
Step 10 — Restage the Application
Environment variable changes only take effect after a restage.
Figure 11 — Restage Application: "Restaging will cause application downtime."
Figure 12 — Application Overview after restage, confirming the app is Started and the route is live.
Part E — Secure the Endpoint with XSUAA
Step 11 — Create the XSUAA Service Instance
In Service Marketplace, search for Authorization and Trust Management Service and click Create.
Plan: application, Runtime Environment: Cloud Foundry, Space: dev.
Instance Name:
sap-cpi-mcp-server-xsuaa.
Figure 13 — New Instance or Subscription: Authorization and Trust Management Service, plan application.
On the Parameters step, paste the contents of
xs-security.jsonfrom the extracted folder — this defines the app'sxsappnameand its OAuth scopes (mcp.read,mcp.write,mcp.delete).Click Create.
Figure 14 — Parameters step with the xs-security.json scopes and descriptions pasted in.
Step 12 — Generate a Service Key for the Claude Connector
Open the new sap-cpi-mcp-server-xsuaa instance → Service Keys → Create. These credentials
are what Claude will use to authenticate to the MCP endpoint.
Figure 15 — New Service Key dialog for the XSUAA instance.
Open the key's Credentials (JSON view) to retrieve clientid, clientsecret and url — keep
this panel handy for Part F.
Figure 16 — Service key credentials: clientid, clientsecret, url, identityzone, tenantid, etc.
🔒 Treat this credentials panel like a password screen — don't leave it visible in a screenshot or screen share.
Step 13 — Bind XSUAA to the Application
In the application, go to Service Bindings → Bind Service Instance, choose
sap-cpi-mcp-server-xsuaa, and confirm the binding.
Figure 17 — Bind Service Instance: selecting sap-cpi-mcp-server-xsuaa (service: xsuaa, plan: application).
Note: Restart or restage the app again after binding so it picks up the new
VCAP_SERVICEScredentials.
Step 14 — Create Role Collections
Under Security → Role Collections, create one collection per role template in
xs-security.json (Support, Developer, Architect — see RBAC
above).
Figure 18 — Create Role Collection: SapCpiMcp.Architect, mapped to the Architect role template.
Figure 19 — Three role collections created: SapCpiMcp.Architect, .Developer and .Support.
Step 15 — Assign Users to Role Collections
Open the relevant Role Collection and add each user under its Users tab — this determines what that person (or the account they sign in with when connecting Claude) is allowed to do through the MCP server.
Figure 20 — SapCpiMcp.Support role collection, with the Support role template and an assigned user.
Part F — Connect to Claude
Step 16 — Add a Custom Connector in Claude
In Claude, go to Settings → Connectors → Add → Add custom connector.
Figure 21 — Add custom connector: Name, Remote MCP Server URL, and Advanced settings for OAuth Client ID/Secret.
Step 17 — Get the Remote MCP Server URL
Back in the Cockpit, open the application's Application Overview and copy the Mapped Routes URL,
then append /mcp to it — e.g. https://sap-cpi-mcp-server.cfapps.<region>.hana.ondemand.com/mcp.
Figure 22 — Application Overview with the Mapped Route to copy (append /mcp when pasting into Claude).
Step 18 — Get the OAuth Client ID & Secret
Open the service key you created in Step 12 and copy its clientid and clientsecret into the
connector's OAuth Client ID / OAuth Client Secret fields.
Step 19 — Connect and Authenticate
Click Add, then Connect.
Figure 24 — Connector added, showing the /mcp URL and a Connect button before authentication.
Claude redirects to your SAP identity provider's login page.
Sign in with an account that has been assigned one of the
SapCpiMcprole collections from Step 15.Once authenticated, the connector shows as connected and all 45 MCP tools become available to Claude.
Verification
Confirm the end-to-end connection with two quick prompts in a new Claude chat:
"List out the tools available in the SAP CPI MCP server."
Figure 25 — Claude listing the full MCP tool catalog: discovery/catalog, packages & flows, deployment & runtime status, and more.
"List out the deployed interfaces."
Figure 26 — Claude calling list_deployed_artifacts and returning the tenant's actual deployed integration flow(s).
Both responses coming back with live tenant data confirm the full chain is working: Claude → XSUAA-authenticated /mcp endpoint → Cloud Foundry app → SAP CPI OData API.
Troubleshooting
Symptom | Likely cause | Fix |
Staging fails / buildpack can't find | The re-zipped archive still has a wrapping folder (e.g., | Re-zip so |
App deploys but |
| Check the app's Logs tab; confirm |
Claude connector returns 401/403 after login | The signed-in user isn't in any | Confirm Service Bindings shows |
App is Running but CPI calls fail with 401 |
| Recreate the Process Integration Runtime service key with the roles listed in Step 8, update the variables, and restage. |
Appendix A — Equivalent CF CLI commands
cf login -a https://api.cf.<region>.hana.ondemand.com
cf target -o <org> -s <space>
cf push --no-start
cf set-env sap-cpi-mcp-server CPI_BASE_URL "https://<tenant>/api/v1"
cf set-env sap-cpi-mcp-server CPI_TOKEN_URL "https://<subdomain>.authentication.<region>.hana.ondemand.com/oauth/token"
cf set-env sap-cpi-mcp-server CPI_CLIENT_ID "<clientid>"
cf set-env sap-cpi-mcp-server CPI_CLIENT_SECRET "<clientsecret>"
cf set-env sap-cpi-mcp-server MCP_TRANSPORT "http"
cf set-env sap-cpi-mcp-server ALLOW_WRITE "false"
cf create-service xsuaa application sap-cpi-mcp-xsuaa -c xs-security.json
cf bind-service sap-cpi-mcp-server sap-cpi-mcp-xsuaa
cf start sap-cpi-mcp-server
cf create-service-key sap-cpi-mcp-xsuaa sap-cpi-mcp-xsuaa-keyThe service key from the last command supplies the
clientid,clientsecretandtokenurlto paste into Claude's custom connector — the same values Steps 12 and 18 retrieve through the Cockpit UI. For a simpler dev-only setup without XSUAA,MCP_AUTH_TOKEN(a static shared secret) still works as a fallback auth mode — see Securing the HTTP endpoint above.
4. Example prompts once connected
"Show me all failed messages in the last 4 hours."
"Give me a failure summary for the last 24 hours grouped by integration flow."
"Get the error details for MessageGuid
AGh....""List integration flows in package
MyIntegrationPackageand tell me which are deployed.""Is the
OrderReplicationflow deployed and started? If not, why?"
Notes on the CPI OData API
Collection base:
.../api/v1MPLs:
/MessageProcessingLogs— filter with$filter, sort with$orderby=LogEnd desc.Error text:
/MessageProcessingLogs('<guid>')/ErrorInformation/$value(plain text).Packages:
/IntegrationPackages, flows:/IntegrationDesigntimeArtifacts.Deployed:
/IntegrationRuntimeArtifacts.Time filters use OData datetime literals:
LogEnd gt datetime'2024-01-01T00:00:00'.
Requires Node.js 18+ (uses the built-in fetch).
Available Tools
44 toolscancel_message_processing_logCancel Message Processing LogA
Cancel a currently processing/retrying message (e.g. a stuck JMS or scheduled message). Requires ALLOW_WRITE and confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to actually cancel. | |
| messageGuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose the write permission requirement and the need for confirm=true, both important for a cancellation operation. However, it stops short of explaining consequences such as irreversibility or side effects on stored message data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is efficiently front-loaded with action, example, and requirement. Every phrase adds value, with no memory waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations or output schema, the description provides the core use case and safety requirements, but omits details about return values, failure conditions, and irreversibility. The messageGuid parameter also lacks context, leaving some gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%; description adds no new meaning for messageGuid, which is the required parameter and remains undocumented. The confirm parameter is described in the schema and the description merely repeats 'confirm=true' without adding insights.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Cancel' and identifies the resource as 'a currently processing/retrying message' with an explicit example of a stuck JMS or scheduled message. It clearly distinguishes this mutating tool from the many get/list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description states the intended scenario (processing/retrying/stuck messages) and prerequisites (ALLOW_WRITE, confirm=true). It does not explicitly mention alternatives or when not to use, but the context makes the use case clear and differentiates it from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_integration_packageCopy Integration Package (from Hub / Discover)A
Copy a standard/partner package (e.g. from the Discover catalog) into the design workspace. Requires ALLOW_WRITE.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to proceed. | |
| packageId | Yes | Id of the package to copy. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key requirement ('Requires ALLOW_WRITE') and the verb 'copy' implies the source remains unchanged. However, it does not describe what happens if a package with the same ID already exists, whether the operation is idempotent, or the response format after copying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and front-loaded with the action. Every word earns its place: the first sentence states purpose, the second states a permission prerequisite. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema, no annotations), the description provides sufficient context: what the tool does, where from, where to, and a permission requirement. It does not describe the return value, but none is required for invoking this copy operation; the confirm parameter is documented in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds only a small amount of domain context (e.g., 'standard/partner package') that helps interpret packageId, but it does not explain the confirm parameter's role beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Copy'), the resource ('a standard/partner package'), and the destination ('into the design workspace'). It also gives an example source ('from the Discover catalog'), which distinguishes it from sibling tools like create, delete, or list integration packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: bringing a package from the Hub/Discover catalog into the design workspace. It does not explicitly mention alternatives or exclusion criteria, but the context is clear enough for an agent to know when to select this tool over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpi_api_catalogCPI API Catalog (discover entity sets & operations)A
List every OData entity set and function import this CPI tenant exposes. Use this to discover what cpi_query / cpi_get_entity / cpi_invoke_function / cpi_write can target.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Optional case-insensitive substring filter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden. It clearly states what the tool returns (a list of OData entity sets and function imports) and implicitly indicates it is a read-only discovery operation. It adds useful context about how the catalog relates to other tools, though it doesn't explicitly mention pagination, required auth, or exact response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences, front-loaded with the primary action and scope, followed by actionable usage guidance. Every word earns its place; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple (one optional parameter, no output schema) and the description fully explains its role in the broader workflow by naming the dependent tools. It is complete enough for an agent to understand what to expect and when to use it, given the context of sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with the optional 'filter' parameter clearly described as a case-insensitive substring filter. Since the schema already fully documents the parameter, the description need not add more. The baseline of 3 applies here; no additional semantic information is provided or necessary.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists every OData entity set and function import for the CPI tenant. It explicitly distinguishes itself from siblings by mentioning it enables discovery of targets for cpi_query, cpi_get_entity, cpi_invoke_function, and cpi_write, making its purpose specific and non-overlapping.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this to discover what cpi_query / cpi_get_entity / cpi_invoke_function / cpi_write can target.' This tells the agent exactly when to invoke this tool, setting it as a discovery prerequisite for those other tools, which effectively defines both when and how to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpi_get_entityCPI Get Entity (read one record by key)A
Get a single entity by key. Use 'key' for a single-key entity (e.g. package Id), or 'keys' (object) for composite keys (e.g. {Id:'x',Version:'active'}). Optionally fetch a navigation property.
| Name | Required | Description | Default |
|---|---|---|---|
| key | No | Single key value. | |
| raw | No | Return raw text (use for /$value endpoints). | |
| keys | No | Composite key object. | |
| entitySet | Yes | ||
| navigation | No | Navigation property to follow, e.g. 'Configurations'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It adds useful behavioral context: the distinction between single and composite keys, the raw flag for /$value endpoints, and the optional navigation follow. It implies a read-only operation ('Get'), which is accurate. It doesn't describe error handling or auth, but for a simple getter, the transparency is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. Every word earns its place, providing examples and key distinctions without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 5 parameters, one required, no output schema. The description covers the key/keys distinction, raw behavior, and navigation, making the tool usable. It could mention error cases or return format, but these are not critical for a straightforward getter and the schema covers most parameter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 80%, so baseline is 3. The description adds value beyond the schema by explaining when to use 'key' vs 'keys' with concrete examples, and clarifying the navigation parameter's purpose. It doesn't describe entitySet, but that is arguably self-evident from the tool name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets a single entity by key, which is a specific verb and resource. It distinguishes itself from siblings by focusing on key-based retrieval and optional navigation, though it doesn't explicitly name alternative tools for comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use 'key' for single-key entities and 'keys' for composite keys, and optionally follow navigation. It doesn't explicitly state when not to use this tool or name alternatives, but the guidance is unambiguous and practical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpi_invoke_functionCPI Invoke Function Import (run any operation)A
Invoke any OData function import (see cpi_api_catalog). String parameters are auto-quoted. Requires ALLOW_WRITE (most function imports change tenant state).
| Name | Required | Description | Default |
|---|---|---|---|
| method | No | POST | |
| params | No | ||
| confirm | No | Must be true to proceed. | |
| functionName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals that string parameters are auto-quoted, that ALLOW_WRITE is required, and that most function imports change tenant state. This goes beyond the schema and gives important side-effect and prerequisite info, though it does not mention return format or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, front-loaded with the purpose, then a key parameter behavior, then a critical permission/safety warning. Every sentence adds value and there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic function-import invocation tool with no output schema, the description is reasonably complete but lacks guidance on what the response will look like or how to handle errors. The reference to cpi_api_catalog helps, but given the complexity of 'any operation', more context about expected return values or limitations would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only confirm has a description). The description adds meaning for the params object ('String parameters are auto-quoted') and hints at a permission requirement, but it does not explain method, functionName, or confirm in detail. The auto-quoting note is useful, but the description only partially compensates for the low schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Invoke any OData function import'. It clearly distinguishes this tool from siblings like cpi_query or cpi_write by focusing on function imports, and the reference to cpi_api_catalog provides a complementary lookup resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context: it is used to invoke any OData function import, with a pointer to cpi_api_catalog for available functions. It also warns about the ALLOW_WRITE requirement and tenant state changes, which helps the agent decide when to use it, but it does not explicitly state exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpi_queryCPI Query (read any entity set)A
Run a read query against ANY CPI OData entity set with standard OData options. Example: entitySet='MessageProcessingLogs', filter="Status eq 'FAILED'", orderby='LogEnd desc'.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| skip | No | ||
| expand | No | $expand comma list. | |
| filter | No | OData $filter expression (pre-quote string literals). | |
| select | No | $select comma list. | |
| orderby | No | ||
| entitySet | Yes | e.g. IntegrationPackages, KeystoreEntries, DataStores |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It clearly labels the operation as a 'read query,' indicating non-destructive behavior, but it does not elaborate on pagination behavior (despite top/skip params), response format, or access requirements. The phrase 'standard OData options' is generic and does not disclose edge-case behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exactly two sentences: the first states the core purpose, the second gives a compact example. Every word earns its place, and the most important information (generic read query) is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's generic nature (any entity set) and lack of output schema, the description does not explain what the response looks like or how to discover valid entity sets. It also omits guidance on using pagination or select/expand options. However, the example and schema partially mitigate this by clarifying input usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful parameter context beyond the schema by providing a concrete example showing how to format entitySet, filter, and orderby. This clarifies usage for the less-documented parameters (e.g., orderby has no schema description). The example compensates for the 57% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Run a read query'), a clear resource ('ANY CPI OData entity set'), and scope ('standard OData options'). It distinguishes this generic query tool from siblings like get_mpl_details or search_message_processing_logs by emphasizing its applicability to any entity set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for any OData entity set but does not explicitly state when to prefer this over dedicated siblings or when not to use it. No exclusionary guidance is given, but the example provides a concrete use case that hints at typical query scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpi_writeCPI Write (create/update/delete any entity)A
Low-level create/update/delete against any CPI OData path. Requires ALLOW_WRITE. DELETE requires confirm=true. Provide 'path' relative to /api/v1 (e.g. "/IntegrationPackages('X')").
| Name | Required | Description | Default |
|---|---|---|---|
| body | No | Request body object (for POST/PUT/MERGE). | |
| path | Yes | Path relative to /api/v1, e.g. /NumberRanges or /Variables(...). | |
| method | Yes | ||
| confirm | No | Required true for DELETE. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
In absence of annotations, the description carries full burden. It discloses permission requirements (ALLOW_WRITE) and a special condition (confirm for DELETE), but does not mention potential side effects, error scenarios, or rate limits for this potentially dangerous write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero wasted words. Front-loads purpose and immediately provides key constraints. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low-level nature and lack of output schema, the description covers core functionality, prerequisites, and path formatting. Could mention return values or idempotency, but still sufficient for agent invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaning beyond the input schema by clarifying path format with an example and noting the ALLOW_WRITE requirement (not in schema). With 75% schema coverage, it compensates well for the undocumented aspects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Low-level create/update/delete against any CPI OData path', uses specific verbs (create/update/delete) and resource (CPI OData path), and distinguishes itself from sibling tools that target specific entities (e.g., create_integration_package).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides prerequisites ('Requires ALLOW_WRITE', 'DELETE requires confirm=true') and path format guidance. However, it lacks explicit direction on when to use this low-level tool versus the many sibling tools that offer specific operations on particular entities.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_integration_flowCreate Integration FlowA
Create a new (empty) integration flow in a package — a default flow at version 1.0.0 that you then edit in the Integration Suite web editor. Requires ALLOW_WRITE.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Technical Id (no spaces). | |
| name | Yes | ||
| confirm | No | Must be true to proceed. | |
| packageId | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the 'empty' nature, version 1.0.0, and the ALLOW_WRITE requirement. However, it does not mention side effects, return values, or failure modes like duplicate IDs, which are important for a create operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the verb and object. It includes key facts (empty, version, editor, permission) without unnecessary fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description gives sufficient context for the tool's main purpose and distinguishes it from siblings, but it lacks important operational details such as parameter semantics, expected outcomes, and error scenarios. Given the absence of an output schema and annotations, a more complete description would be needed for a 4.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description adds little beyond schema: it implies packageId via 'in a package' but does not explain name, description, or confirm. The confirm parameter is critical but not mentioned in the description, so the description fails to compensate for the schema gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action ('Create'), the resource ('integration flow'), and the context ('in a package', 'empty flow', 'version 1.0.0'). It distinguishes this tool from siblings like create_integration_package and save_integration_flow_as_version by focusing on the initial empty flow creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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: creating a new empty flow that will be edited later in the web editor. However, it does not explicitly mention alternatives or when not to use it, so it does not fully meet the 'explicit when/when-not' bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_integration_packageCreate Integration PackageB
Create a new integration package. Requires ALLOW_WRITE.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Technical Id (no spaces). | |
| name | Yes | ||
| confirm | No | Must be true to proceed. | |
| shortText | No | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the ALLOW_WRITE permission requirement, which is a valuable behavioral constraint. However, it doesn't mention idempotency, response behavior, or what happens if the id already exists. The permission note adds some context but the disclosure is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two short sentences with the purpose front-loaded. It avoids unnecessary words and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain the confirm requirement, field semantics, or what to expect on success (e.g., a return value). The minimal text leaves significant gaps for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40%, and the description adds no parameter details beyond what the schema provides. It doesn't explain the meaning of 'name', 'shortText', 'description', or the 'confirm' flag. Since coverage is low, the description should compensate but does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a new integration package' with a specific verb and resource, distinguishing it from sibling tools like list, get, delete, and copy. This unambiguously communicates the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The verb 'create' implies use for new packages, but there are no exclusions, prerequisites (beyond ALLOW_WRITE), or references to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_number_rangeCreate Number RangeC
Create a number range object. Requires ALLOW_WRITE.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| rotate | No | ||
| confirm | No | Must be true to proceed. | |
| maxValue | No | ||
| minValue | No | ||
| description | No | ||
| fieldLength | No | ||
| currentValue | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden of behavioral disclosure. It only mentions the ALLOW_WRITE permission, but does not describe side effects, return values, or other behavioral traits beyond the obvious creation operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise single sentence that efficiently states the tool's purpose and a key requirement. It avoids redundancy and is well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 8 parameters, no output schema, and no annotations, the description is severely incomplete. It omits parameter meanings, usage context, and expected return, making it inadequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 13% (only 'confirm' has a description). The description does not explain any of the eight parameters, such as name, rotate, minValue, or maxValue, and thus fails to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a number range object' with a specific verb and resource. It is unambiguous but does not differentiate from sibling tools like create_integration_package or list_number_ranges.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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. It only mentions the ALLOW_WRITE permission requirement, which is a prerequisite, not usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_integration_packageDelete Integration PackageA
Delete an integration package and all its artifacts. Requires ALLOW_WRITE and confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| packageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses destructive behavior (deletes package and artifacts), permission requirement (ALLOW_WRITE), and a mandatory confirmation flag (confirm=true). While it does not mention reversibility or dependent artifacts, it covers the key safety-critical traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence that front-loads the action, scope, and prerequisites. Every word contributes value; there is no redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete tool with 2 parameters and no output schema, the description covers the essential aspects: what it deletes, the scope (all artifacts), the permission needed, and the confirm flag. It lacks details on errors or irreversibility but is adequately complete for the given complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero description coverage, so the description must compensate. It clarifies that confirm must be set to true, but does not elaborate on packageId beyond its name. The parameter semantics are only partially addressed, leaving some ambiguity about packageId format or the need to confirm for the operation to succeed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Delete) and resource (integration package) and clearly distinguishes from siblings by adding 'all its artifacts', making it the only destructive operation among get/list/create/copy tools. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: delete requires ALLOW_WRITE permission and confirm=true. It does not explicitly name alternatives or when-not conditions, but the deletion scope and prerequisites are clearly stated, which is more than minimal guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_artifactDeploy ArtifactA
Deploy a design-time artifact to the runtime. Choose the artifact type. Requires ALLOW_WRITE. Deployment is asynchronous — check status with get_deployed_artifact_status or get_build_and_deploy_status.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | integrationFlow | |
| confirm | No | Must be true to proceed. | |
| version | No | active | |
| artifactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of disclosing behavior. It reveals that the operation requires ALLOW_WRITE, is asynchronous, and provides two specific status-check tools for follow-up. This goes beyond the schema. However, it does not mention whether deployment overwrites existing artifacts or what happens on failure, missing some depth for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences, each earning its place: purpose, type selection, and permission/async guidance. No fluff or repetition. It is front-loaded with the core action and provides actionable follow-up without verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deployment tool with no output schema and low parameter documentation, the description covers the essential asynchronous nature and permission requirement, and points to status tools. However, it omits the confirm parameter's role, version semantics, and any notion of operation IDs or failure behavior. It is adequate but leaves clear gaps for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'confirm' has a schema description). The description adds meaning only for the 'type' parameter via 'Choose the artifact type.' It does not explain artifactId (required), version (defaults to 'active'), or that confirm must be true. Additionally, the description mentions 'Requires ALLOW_WRITE' but does not mention the confirm flag, which is a critical parameter for execution. This is insufficient for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Deploy a design-time artifact to the runtime.' This clearly distinguishes the tool from siblings like 'undeploy_artifact', 'get_deployed_artifact_status', and 'get_build_and_deploy_status'. The action is unambiguous and matches the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: whenever you need to deploy an artifact to the runtime. It also provides follow-up guidance by mentioning status-check alternatives after asynchronous deployment. However, it does not explicitly state when not to use it or contrast with alternatives like 'save_integration_flow_as_version' or 'create_integration_flow', so it stops short of full exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deploy_user_credentialDeploy User CredentialA
Create/deploy a User Credential security artifact. Requires ALLOW_WRITE. The secret is write-only and cannot be read back.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | default | |
| name | Yes | ||
| user | Yes | ||
| confirm | No | Must be true to proceed. | |
| password | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses two key behavioral traits: the need for ALLOW_WRITE permission and that the secret is write-only and cannot be read back. This goes beyond the schema and is valuable for safe agent usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief and front-loaded: it opens with the purpose, then immediately states the permission requirement and the critical write-only caveat. Every sentence adds value with no redundant or irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential permission and write-only behavior, but it omits details about overwriting existing credentials, async deployment, or return values. Since there is no output schema, this leaves some ambiguity, though the schema documents the 'confirm' requirement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17% (only 'confirm' is described in the schema). The description adds minimal parameter insight—it only hints that the password is secret. Parameters like 'kind', 'description', and the meaning of 'name'/'user' are not explained, leaving the agent to infer from names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Create/deploy') and resource ('User Credential security artifact'), distinguishing it from generic deploy_artifact and the list_user_credentials sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a write operation via 'Requires ALLOW_WRITE' and notes the write-only nature, but it does not explicitly mention when to use this tool versus alternatives like deploy_artifact or list_user_credentials. No when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_integration_flowDownload Integration Flow (base64 zip)B
Download the integration flow content as a base64-encoded zip ($value). Useful for backup/transport.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | active | |
| artifactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden of behavioral disclosure. It does reveal that the output is a base64-encoded zip, which is valuable. But it does not mention authentication needs, error handling, or how the 'version' parameter affects the download, leaving gaps in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action and output format. Every word adds value, and there is no redundancy with the schema or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple download operation, the description adequately conveys the output format. However, it lacks parameter semantics and differentiation from sibling tools, and with no output schema or annotations, the overall completeness is only minimally viable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not compensate by explaining the parameters. It only refers to 'integration flow content' without clarifying that artifactId is required or what version means. The parameters remain effectively undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: downloading integration flow content as a base64-encoded zip. It uses a specific verb and resource, and the title reinforces the purpose. This distinguishes it from sibling tools like get_integration_flow, which likely retrieve metadata rather than content.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Useful for backup/transport,' providing a clear general context for when to use the tool. However, it does not explicitly say when not to use it or name alternative tools for related tasks, leaving some ambiguity among the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_build_and_deploy_statusGet Build & Deploy StatusA
Check the asynchronous build/deploy task status for a deployment (returned as a task id).
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | The deploy task id returned by deploy_artifact. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds the key behavior 'asynchronous' and implies a read-only status check via 'check', but does not disclose return format, error handling, or side effects. Some context is provided, but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of ~14 words, front-loaded with the action, no redundant phrasing. All information is useful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a single parameter, no output schema, and no annotations, the description is mostly sufficient, but it lacks detail on what the status response looks like. However, the core purpose and input are clear, making it fairly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for taskId ('returned by deploy_artifact'). The description's phrase 'returned as a task id' reinforces this but adds no new information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states 'Check the asynchronous build/deploy task status for a deployment' with a clear verb ('Check'), resource ('build/deploy task status'), and context ('async', 'returned as a task id'). It is distinct from sibling get_deployed_artifact_status by focusing on task status rather than artifact status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/when-not or alternative tools are mentioned. The description implies usage after initiating a deployment via 'returned as a task id' and 'asynchronous', but does not reference deploy_artifact or contrast with get_deployed_artifact_status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_data_store_entriesGet Data Store EntriesA
List the entries in a specific data store. IntegrationFlow is the flow Id (empty for a global store).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| type | No | default | |
| dataStoreName | Yes | ||
| integrationFlow | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It indicates a read-only operation via 'List', but does not mention side effects, output format, or parameter behaviors like the 'top' limit or 'type' selection. The integrationFlow clarification adds some value, but significant behavioral gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences. The main action is front-loaded, and the second sentence adds critical parameter context without redundancy. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 0% schema description coverage, the description is incomplete. It fails to describe the required parameter 'dataStoreName' and the optional parameters 'top' and 'type'. The tool is simple, yet the description leaves important usage details undisclosed, making full autonomous invocation difficult.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate by explaining parameters. Only 'integrationFlow' is clarified ('empty for a global store'). The required 'dataStoreName' is not mentioned, and 'top' and 'type' are left unexplained. This is insufficient for the 4 parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List the entries in a specific data store.' It uses a specific verb ('List'), identifies the resource ('data store entries'), and adds a scoping detail about integrationFlow for global vs. flow-specific stores. This distinguishes it from the sibling tool 'get_message_store_entries' by focusing on data stores, not message stores.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: to list data store entries, and gives a usage hint about the integrationFlow parameter ('empty for a global store'). It does not explicitly state exclusions or alternatives, but the clarification about global vs. flow-specific stores provides enough context for when to set the parameter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_deployed_artifact_statusGet Deployed Artifact StatusB
Get the deployment status of one runtime artifact, plus error details if failed.
| Name | Required | Description | Default |
|---|---|---|---|
| artifactId | Yes | ||
| includeErrorDetails | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds that error details are returned if failed, which is useful. However, it doesn't explicitly state read-only behavior, permissions, or failure modes for non-existent artifacts, though the 'Get' verb implies safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler. It conveys the verb, resource, and an additional detail concisely. Every word is functional.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter read tool, the description gives the core purpose and an extra behavior, but with no output schema it doesn't describe the response structure or possible status values. It is sufficient for a minimal understanding but lacks return details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain either parameter. It mentions 'error details if failed' but doesn't map to includeErrorDetails. artifactId is completely unexplained beyond its name, so the description fails to compensate for the absence of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Get') and resource ('deployment status of one runtime artifact'), and adds scope ('one') and an additional detail ('plus error details if failed'). This distinguishes it from sibling tools like list_deployed_artifacts (list all) and get_build_and_deploy_status (process status).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for a single artifact's deployment status, but offers no explicit when-to-use vs alternatives or when-not-to-use. The singular 'one runtime artifact' provides context, but no sibling differentiation or exclusion is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_failure_summaryGet Failure SummaryB
Aggregate failed/escalated messages over a recent window, grouped by integration flow.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| hoursBack | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but only states the aggregation function. It does not disclose whether the operation is read-only, what the output contains (counts, lists), or any side effects, leaving a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core idea efficiently with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should explain the return format and how this tool relates to error-focused siblings, but it only provides a high-level summary without those details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not mention the 'top' or 'hoursBack' parameters. While 'hoursBack' is vaguely implied by 'recent window', 'top' is entirely unexplained, so the description adds little semantic value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Aggregate' and identifies the resource ('failed/escalated messages') plus the grouping key ('integration flow'), making it distinct from sibling tools that retrieve individual error details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a summary use case but does not explicitly state when to prefer this tool over siblings like get_mpl_error_information or search_message_processing_logs, nor does it mention any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flow_configurationsGet Flow Externalized ConfigurationsC
Get the externalized configuration parameters of an integration flow (endpoints, credentials names, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | active | |
| artifactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits itself. It reveals the content returned but does not state that the operation is read-only, describe the return shape, mention the active-version default, or address error conditions. This is a significant gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It states the verb, resource, and examples in 17 words, earning every word.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations, no output schema, and many sibling getters, this description is too thin. It does not explain the version semantics, output format, or relationship to related flow tools, leaving the agent without enough context to invoke it with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, but it only loosely ties artifactId to 'an integration flow' and says nothing about the version parameter or its 'active' default. Some meaning is added by explaining what externalized parameters are, but not enough to fully document the two parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and names a clear resource: externalized configuration parameters of an integration flow, with useful examples ('endpoints, credentials names, etc.'). It is clear enough to distinguish the tool from most siblings, though it does not explicitly call out a sibling alternative, so it falls just short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description only states what the tool does and gives no when-to-use guidance, prerequisites, or alternatives. It does not mention when to choose this over get_flow_resources or update_flow_configuration, leaving the agent to infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flow_resourcesGet Flow ResourcesB
List the resources (scripts, XSDs, WSDLs, mappings) inside an integration flow.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | active | |
| artifactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. It only states a read-only list operation and gives examples of returned resource types, but does not explain the return structure, potential errors, pagination, authentication needs, or how version affects the result. This is a significant gap for a tool with no structured safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that fronts the main verb and object, with a parenthetical list of examples. It is compact and readable, but the structure is flat with no separators or additional context, so it earns a high but not top score.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and only two sparse parameters, the description should compensate by explaining the returned data shape, the meaning of artifactId and version, and how this tool relates to similar ones. It only provides the basic 'list resources' idea, leaving too much unsaid for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has two parameters (artifactId, version) with zero description coverage. The tool description adds no meaning to either parameter, leaving artifactId and version undefined. The agent must guess what 'active' means as a default and what an artifactId refers to, making parameter usage highly ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and identifies the resource type (resources inside an integration flow) plus enumerates concrete examples (scripts, XSDs, WSDLs, mappings). This clearly distinguishes it from siblings like get_integration_flow or get_flow_configurations, which target different aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to inspect the resources within a flow, but it does not explicitly state when to prefer this over alternatives, nor does it mention any exclusions or complementary tools. The context is clear enough for a basic guess but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_flowGet Integration Flow DetailsB
Get a design-time integration flow artifact by Id and Version.
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | active | |
| artifactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses only that it retrieves an artifact, but lacks details about return format, error handling, authentication requirements, or the meaning of 'design-time'. This is insufficient for an agent to understand side effects or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is appropriately front-loaded. However, it is under-specified, omitting essential context that would make it more useful. It is not overly verbose but lacks completeness for the reader.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and 0% schema coverage, the description alone is inadequate for reliable invocation. It does not clarify how 'design-time' differs from 'deployed' or indicate what data is returned, leaving critical gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only mentions 'by Id and Version', which paraphrases the property names without explaining parameter semantics, defaults (e.g., version default 'active'), or acceptable values. This adds minimal value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the specific resource 'design-time integration flow artifact' with identifying attributes 'by Id and Version'. This distinguishes it from siblings like list_integration_flows or get_deployed_artifact_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a specific integration flow artifact, but it does not explicitly state when to use this tool versus alternatives like get_flow_configurations or download_integration_flow. No exclusions or conditions are given, so guidance is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_integration_packageGet Integration PackageA
Get details of a single integration package by Id.
| Name | Required | Description | Default |
|---|---|---|---|
| packageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'Get details' with no additional context on return format, error handling, permissions, or rate limits. It essentially restates the tool's name, offering no deeper behavioral insight.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the action and resource, containing no extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of the tool (one required parameter, no output schema), the description adequately conveys the operation. It avoids over-explaining, and the context of siblings clarifies its role. Minor gap: no mention of what 'details' includes, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning by saying 'by Id,' clarifying that packageId is the identifier of the integration package. However, it does not provide additional details like format or constraints beyond what the schema already shows.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action: 'Get details of a single integration package by Id.' It identifies the resource (integration package), the operation (get details), and the unique identifier (Id), distinguishing it from sibling tools like list_integration_packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: use when you have a packageId and need details of one package. However, it does not explicitly mention alternatives or when not to use it, such as 'use list_integration_packages to list all packages.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_message_store_entriesGet Message Store EntriesB
Get persisted message store entries (payloads persisted via the 'Persist' step) for a message.
| Name | Required | Description | Default |
|---|---|---|---|
| messageGuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only states that it returns persisted payloads; it does not disclose pagination, ordering, error handling, permissions, or side effects. The behavior is not misleading, but it is largely missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, direct, front-loaded with the action and resource. Every word earns its place, and it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description should explain what the return value looks like (array, object) and any special behavior. It only states 'entries' (payloads), leaving the response format and possible error conditions unclear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, messageGuid, with no description. The tool description says 'for a message' which maps messageGuid to a message, but this is largely redundant with the parameter name. No format, example, or additional semantics are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the action (get), the resource (persisted message store entries), and the scope (for a message). It also adds context about the 'Persist' step, helping distinguish it from sibling tools like get_data_store_entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use instructions or alternatives are provided. The description implies it is used when you need persisted message payloads for a specific message, but there is no guidance on when not to use it compared to related tools such as get_data_store_entries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mpl_custom_header_propertiesGet MPL Custom Header PropertiesB
Get custom header properties (business keys, custom status) for a message.
| Name | Required | Description | Default |
|---|---|---|---|
| messageGuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure, but it only says 'Get', which weakly implies read-only. It does not explicitly state whether the operation has side effects, requires specific permissions, or what happens when no custom properties exist. No additional behavioral context is provided beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource. There is no redundant information or filler; every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description gives the essential purpose, but it lacks guidance on parameter usage and return value shape. It mentions 'for a message' but without clarifying that this refers to a message processing log (MPL), potentially causing ambiguity. Overall, it is minimally adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter, messageGuid, with no description (0% coverage). The tool description does not mention the parameter or add any meaning to it. Despite the parameter name being somewhat self-explanatory, the description fails to compensate for the schema's lack of detail, leaving the agent without additional semantic guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get custom header properties (business keys, custom status) for a message' clearly states a specific verb and resource, and differentiates from sibling tools like get_mpl_error_information or get_mpl_run_steps. The parenthetical clarifies what the properties include, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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, no mention of prerequisites, and no exclusion criteria. It simply states what the tool does without contextualizing it among the many related MPL and integration tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mpl_detailsGet MPL DetailsA
Get the full Message Processing Log entry for a specific MessageGuid.
| Name | Required | Description | Default |
|---|---|---|---|
| messageGuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly indicates a read operation and scope, but does not disclose behavior for missing/invalid GUIDs, error responses, or the exact structure of the 'full' entry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. Every word contributes to identifying the tool's purpose and primary parameter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple get-by-ID tool with one parameter and no output schema, the description is adequate. It could be more complete by mentioning what 'full entry' includes or behavior when the GUID is not found, but the low complexity mitigates this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has one parameter with 0% description coverage. The description explicitly links the parameter to a 'specific MessageGuid', which clarifies its purpose as the identifier of the log entry, even though it adds no format or constraint details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses a specific verb ('Get') and resource ('full Message Processing Log entry'), making the operation clear. The scope 'for a specific MessageGuid' distinguishes it from sibling tools that retrieve sub-details like errors or run steps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context is provided: this tool is for retrieving the complete log entry when a MessageGuid is already known. It does not explicitly name alternatives, but the use of 'full' implies it is the comprehensive option compared to siblings that return specific aspects.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mpl_error_informationGet MPL Error InformationB
Retrieve the detailed error/exception text for a failed message.
| Name | Required | Description | Default |
|---|---|---|---|
| messageGuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says what the tool does, not how it behaves (e.g., error handling, return format, permissions, or what happens if the message GUID doesn't exist). This lack of behavioral context is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no redundant information. However, while it is efficient, it may be under-specified, but that is more a completeness issue than conciseness. The structure is clean and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has only one parameter and no output schema, the description should clarify what the error text looks like and how to use the parameter. It does not explain the parameter, potential return values, or edge cases. The description is incomplete for an AI agent to invoke the tool confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter (messageGuid) with zero description coverage, and the description does not mention or explain the parameter at all. Since schema_description_coverage is 0%, the description should compensate but fails to provide any meaning for messageGuid beyond its type.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed error/exception text for a failed message. It uses a specific verb ('retrieve') and resource ('error/exception text'), making the purpose unambiguous. While it doesn't explicitly differentiate from siblings, the phrase 'detailed error/exception text' distinguishes it from related tools like get_mpl_details or get_failure_summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for failed messages but provides no explicit guidance on when to use this tool versus alternatives like get_failure_summary or get_mpl_details. There are no when-not-to-use conditions or alternative recommendations, making the guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mpl_run_stepsGet MPL Run StepsA
Get the individual run steps for a message (requires trace/step logging enabled on the flow).
| Name | Required | Description | Default |
|---|---|---|---|
| messageGuid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It mentions the prerequisite (trace/step logging) but fails to describe the return format, behavior when logging is disabled, error conditions, or any side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the tool's purpose and a key condition. Every word earns its place, with no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema and annotations, the description is too sparse. It does not describe what the run steps look like, how they are ordered, what happens if trace logging is not enabled, or any details about messageGuid. The tool is simple but still lacks essential context for an agent to use it confidently.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has zero parameter descriptions (0% coverage), so the description must compensate. It only hints that messageGuid relates to a message, but it does not explain the format, source, or constraints. This is insufficient for understanding how to populate the parameter correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action ('Get the individual run steps for a message') with a specific resource and outcome. It distinguishes itself from sibling tools like get_mpl_details and get_mpl_error_information by focusing on 'run steps' rather than general details or error information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear prerequisite ('requires trace/step logging enabled on the flow') that indicates when the tool is applicable. However, it does not explicitly name alternative tools or state when not to use it, leaving some room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_data_storesList Data StoresA
List data stores (transient/persistent message persistence used by flows).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and 'List' clearly signals a read-only operation with no destructive effects. The parenthetical adds useful behavioral context about the store types (transient vs persistent). It does not discuss permissions or response format, but these are not critical for a simple listing tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that immediately states the action and object, then adds a brief clarifying parenthesis. Every word earns its place with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description adequately defines the resource and scope. It could mention what is returned (e.g., store names/IDs) but 'List data stores' sufficiently implies a collection of data store references in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, yet the description does not mention the 'top' parameter or its effect on result size/limits. The schema provides default/max/min, but the description adds no meaning to the parameter, so the agent must infer from the name alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'List' with a clear resource 'data stores' and clarifies the domain via parenthetical 'transient/persistent message persistence used by flows'. This distinguishes it from sibling tools like get_data_store_entries, which list entries rather than the stores themselves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when needing to enumerate data stores) and gives context about what data stores are, but it does not explicitly name alternatives or state when not to use it. Sibling tools like get_data_store_entries suggest related operations, yet no comparison is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_deployed_artifactsList Deployed Runtime ArtifactsB
List all deployed runtime artifacts and their status (STARTED, ERROR, STARTING, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It fails to disclose that the 'top' parameter limits the number of results, contradicting the word 'all'. It also does not mention any ordering, filtering, or return field details beyond status.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently communicates the core function without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description misses the limiting behavior of 'top' and provides no output schema or return field details. It mentions status but not other artifact attributes, leaving some gaps for an agent invoking it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has a single optional 'top' parameter with 0% description coverage, and the description does not explain it at all. Since the description does not compensate for the low coverage, it scores a 2.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'list' and identifies the resource as 'deployed runtime artifacts' with their status. This clearly distinguishes it from sibling tools like get_deployed_artifact_status, which targets a single artifact's status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for retrieving a broad list of all deployed artifacts with statuses, but it does not explicitly state when to choose this over alternatives or any exclusions. Since it provides clear context without explicit guidance, it earns a 3.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_flowsList Integration Flows in a PackageA
List the integration flow design-time artifacts in a package.
| Name | Required | Description | Default |
|---|---|---|---|
| packageId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It adds the useful 'design-time artifacts' scoping and 'List' implies a read-only operation. However, it doesn't mention return format, authentication needs, pagination, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundancy or filler. It is appropriately sized for a simple one-parameter list tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description provides a reasonable high-level context. However, without annotations or output schema details, the agent is left without information about the expected response structure or edge cases, so it isn't fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only says 'in a package,' which merely echoes the packageId parameter name. It doesn't explain any format, constraints, or relationship beyond what the schema already shows, so the description adds little value for parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and names a concrete resource ('integration flow design-time artifacts') with a scope ('in a package'). This clearly differentiates it from siblings like list_integration_packages and get_integration_flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: an agent would use this when needing to enumerate design-time integration flows within a particular package. However, there are no explicit alternatives, exclusions, or when-not-to-use conditions, so it doesn't fully guide decision-making among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_integration_packagesList Integration PackagesB
List all integration packages in the tenant's design workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. The claim 'List all integration packages' is potentially misleading because the 'top' parameter (default 100) limits results, so it won't return 'all' if more than 100 exist. There is no mention of pagination, ordering, or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose. Every word adds value and there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has one optional parameter, no output schema, and no annotations. The description fails to explain the 'top' parameter semantics and the discrepancy between 'all' and the default limit. It also omits any detail about return format or behavior when the workspace has many packages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented 'top' parameter. The description does not mention 'top' at all, leaving the agent without any insight into what the parameter does beyond its schema type and constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List'), the resource ('integration packages'), and the scope ('tenant's design workspace'). This distinguishes it from sibling tools like list_integration_flows and get_integration_package, which focus on flows or single package details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use case (listing all packages in the design workspace) but provides no explicit guidance on when to use this tool versus alternatives like get_integration_package or list_deployed_artifacts. No exclusions or preference statements are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_jms_queuesList JMS QueuesA
List JMS queues and their state (capacity, message counts).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. 'List' implies a read-only operation, and the description mentions the return of state (capacity, message counts). However, it does not disclose potential permissions required, whether all queues are included, or any side effects. For a simple list tool, this is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the core action and resource, and every word adds value. It is concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with no output schema, the description is largely complete. It specifies the resource and the state information returned. However, it does not detail the exact return format or any limitations such as default queue scope, leaving a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so the baseline is 4. The description does not need to explain any parameters since there are none, and it adds clarity about what the tool returns without needing to describe parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'List', the resource 'JMS queues', and the additional detail about state (capacity, message counts). This distinguishes it from other list tools such as list_data_stores or list_variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is used to inspect JMS queues and their state, but it does not explicitly state when to use it versus alternatives or any exclusions. Usage is implied by the tool name and description, but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_keystore_entriesList Keystore Entries (Certificates)B
List entries (certificates / key pairs) in the tenant keystore.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the action (listing) without revealing details such as pagination, limits, or whether sensitive key material is included. The absence of any behavioral traits beyond the name leaves the agent underinformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It is concise and readable, but it misses an opportunity to include a brief mention of the parameter or return behavior without sacrificing conciseness. Overall, it is appropriately sized but slightly under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description should at least explain the meaning of 'top' and what the returned entries contain. The current description omits this, leaving the agent with incomplete guidance. The tool is simple, but the description does not fully cover its usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes a single 'top' parameter with no description (0% coverage), and the description does not mention this parameter at all. Since the description must compensate for missing schema comments but fails to do so, the agent has no understanding of how to use 'top' or what it controls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's function with a specific verb and resource: 'List entries (certificates / key pairs) in the tenant keystore.' It differentiates from sibling tools by specifying the keystore resource, making its purpose distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about what the tool does, implying it should be used when listing keystore entries. While it doesn't explicitly mention alternatives, the resource is unique enough that no exclusions are needed. The context is straightforward and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_log_filesList System Log FilesA
List available system log files (http, trace, etc.) for the tenant worker nodes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the transparency burden. It implies a non-destructive list operation but does not explicitly state that it has no side effects, authorization requirements, or that it only returns file names. The word 'list' helps, but more could be disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that directly states the action, includes relevant examples, and specifies the scope. There is no redundant information, and it is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless list operation, the description is largely complete. However, since there is no output schema, it could explicitly mention that the return is a list of file names or whether the files are grouped by node. It is adequate but leaves a small gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description needed to add no parameter-specific meaning. The context about tenant worker nodes is not a parameter but useful domain info. Per the rubric, a zero-parameter tool receives a baseline score of 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists available system log files, specifying types (http, trace, etc.) and scope (tenant worker nodes). This makes its purpose distinct from sibling tools that deal with message processing logs or integration artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context that this tool is for viewing system log files on tenant worker nodes, but does not explicitly mention alternatives or exclusions. The context is sufficient for most use cases, though it lacks explicit 'when not to use' guidance compared to related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_number_rangesList Number RangesA
List configured number range objects.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral transparency. 'List' strongly implies a read-only operation, but the description does not disclose any additional behavior such as pagination, ordering, or the exact structure of the returned objects. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasteful words. It conveys the essential purpose efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (zero parameters, no output schema), the description is mostly complete. It might benefit from specifying the return format, but the core action is unambiguous for a list operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description does not need to explain parameter semantics. Per the rubric, a baseline of 4 applies when there are no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and clearly identifies the resource ('configured number range objects'). It clearly differentiates from sibling tools like create_number_range by indicating a read-only listing of existing objects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied: use this tool to retrieve existing number range objects. However, there is no explicit guidance on when to prefer this over alternatives or any exclusions. The description does not mention 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.
list_oauth2_client_credentialsList OAuth2 Client CredentialsA
List deployed OAuth2 Client Credential security artifacts (metadata only).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the burden. It adds the useful behavioral trait 'metadata only', indicating that actual credential secrets are not returned. However, it does not disclose other behaviors such as pagination behavior, permission requirements, or how empty results are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. It efficiently conveys the action, resource, and scope ('metadata only').
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description covers the core purpose and the metadata-only restriction. However, it omits parameter semantics and does not differentiate from sibling list tools, leaving some gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'top' with 0% coverage in the description. The description does not mention the parameter or explain that it limits the number of results, failing to compensate for the lack of schema descriptions. The parameter name and constraints give some hints, but the agent is left without explicit semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists 'deployed OAuth2 Client Credential security artifacts' and specifies 'metadata only', distinguishing it from sibling tools that list other credential types or keystore entries. The verb 'List' and the resource are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the name and description, but there is no explicit guidance on when to use this tool versus alternatives like list_user_credentials or list_keystore_entries. No exclusions or alternative recommendations are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_partnersList Partner Directory PartnersC
List partners registered in the Partner Directory.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must reveal behavioral traits, but it only says 'List partners.' It does not mention the optional 'top' parameter, default behavior, pagination, or any side effects. The agent receives no information about safety, rate limits, or output structure beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence with no filler. It directly states the purpose and is easily scannable. While it could add more context without becoming verbose, the current structure is appropriately minimal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description is insufficient given the lack of an output schema and annotations. It does not explain what partner information is returned, how the 'top' limit affects results, or any usage context. A complete description would at least mention the optional limit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema defines one parameter 'top' with default/min/max, but the description provides zero explanation of this parameter. With schema description coverage at 0%, the description fails to compensate by giving any meaning or usage context for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (List) and the specific resource (partners in the Partner Directory). It is unambiguous and distinct from all sibling tools, none of which mention partners.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool versus alternatives such as list_integration_packages or list_service_endpoints. There are no scenarios, prerequisites, or exclusions provided, leaving the agent without selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_service_endpointsList Service EndpointsA
List the runtime service endpoints (URLs) exposed by deployed integration flows (HTTP, SOAP, OData, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It accurately indicates a read-only listing operation and adds context about the types of endpoints, but it does not disclose behavior like pagination (via the 'top' parameter), filtering, or whether only currently running flows are included. It adds some value but lacks deeper behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence (18 words) that is front-loaded with the action and resource. Every word earns its place with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with no output schema and no annotations, the description states the core purpose and endpoint types, but it omits explanation of the 'top' parameter and any note about the response format or potential empty results. It is minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description never mentions the only parameter 'top'. The schema provides default/min/max constraints, but the description should add meaning about its purpose (e.g., maximum number of endpoints returned). This is a gap for a single-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' with a clear resource 'runtime service endpoints (URLs)' and scopes it to 'deployed integration flows' with protocol examples (HTTP, SOAP, OData). This clearly distinguishes it from sibling tools like list_integration_flows or list_deployed_artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 (to get URLs of deployed integration flows), but it does not explicitly state when not to use it or mention alternative tools. The scoping is clear enough for most cases, so this earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_user_credentialsList User Credentials (Security Material)A
List deployed User Credential security artifacts (names/metadata only, no secrets).
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It explicitly states that only names/metadata are returned and no secrets are included, which is a key behavioral trait. However, it does not mention whether the operation is read-only, any required permissions, or other potential behaviors, leaving gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the verb and directly states the key scoping detail (no secrets). Every word contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter, the description is reasonably complete. It defines the output scope (names/metadata only) and the resource scope (deployed artifacts). The missing parameter explanation and usage context prevent a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not mention the 'top' parameter at all. The schema provides type, default, min, and max, but with 0% schema description coverage, the description should compensate. It fails to explain that 'top' is a limit for the number of returned items.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (list), the resource (deployed User Credential security artifacts), and the scope (names/metadata only, no secrets). This distinguishes it from sibling tools like list_oauth2_client_credentials and list_keystore_entries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 instead of alternatives such as list_oauth2_client_credentials or list_deployed_artifacts. It does not mention any exclusions or preferred contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_variablesList VariablesB
List global and local variables persisted by integration flows.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the operation is listing variables, which implies read-only, but does not mention what data is returned, limits, pagination, or any side effects. The 'top' parameter is not explained, leaving important behavioral characteristics undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence of eight words, front-loaded with the verb and resource. It is appropriately concise with no fluff or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity and lack of output schema, the description is too minimal to be complete. It does not explain what the response looks like, how to interpret the 'top' parameter, or any usage context. A complete description would at least mention that it returns a list and that 'top' limits the count.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter ('top') with no description (0% coverage). The description does not mention this parameter at all, so it adds no semantics beyond the schema's type and constraints. The parameter name is self-explanatory to some degree, but the tool description should still clarify its purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'List' and clearly identifies the resource as 'global and local variables persisted by integration flows.' This makes the tool's purpose unambiguous and distinct from all sibling tools, none of which mention variables.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool (when you need to see persisted variables) but provides no explicit usage context, exclusions, or alternatives. Since no sibling tool covers variables, there is no need for explicit alternatives, but the description could still be clearer about intended scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_integration_flow_as_versionSave Integration Flow as VersionA
Save the current draft ('active') of an integration flow as a new version, with an optional version comment. Requires ALLOW_WRITE. (The comment is applied to the artifact before the version is saved, since the SaveAsVersion API doesn't take one directly.)
| Name | Required | Description | Default |
|---|---|---|---|
| comment | No | Version comment / note. | |
| confirm | No | Must be true to proceed. | |
| version | Yes | New version to save, e.g. '1.0.1'. | |
| artifactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the responsibility of disclosing behavioral traits. It notes the permission requirement ('Requires ALLOW_WRITE') and reveals a non-obvious implementation detail: the comment is applied before the version is saved since the API doesn't take it directly. This exceeds baseline, though it doesn't detail all possible side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the core action, followed by a parenthetical explanatory note. Every word earns its place—no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description adequately covers the tool's purpose, prerequisite, and a unique behavioral nuance. It doesn't mention return values or error conditions, but it provides enough for an agent to correctly invoke the tool with the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 75% of parameters with descriptions, so the baseline is 3. The description adds a useful note about the comment parameter's behavior but doesn't add meaning to artifactId or version beyond what the schema already provides. Overall, it adds modest value without fully compensating for the one undocumented parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Save the current draft ('active') of an integration flow as a new version' with an optional comment. It uses a specific verb ('save') and resource ('integration flow draft'), and distinguishes this from siblings like 'deploy_artifact' or 'create_integration_flow'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning 'current draft' and requires 'ALLOW_WRITE', but it does not explicitly contrast with alternative tools (e.g., when to version vs. deploy). The context is clear enough for basic use, but an agent might need more guidance on when to choose this tool over others.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_message_processing_logsSearch Message Processing Logs (MPL)A
Search SAP CPI Message Processing Logs. Filter by status (COMPLETED, FAILED, PROCESSING, RETRY, ESCALATED, DISCARDED), integration flow name, and time window. Most recent first.
| Name | Required | Description | Default |
|---|---|---|---|
| top | No | ||
| status | No | ||
| toTime | No | ISO 8601; LogEnd less than this. | |
| fromTime | No | ISO 8601; LogEnd greater than this. | |
| integrationFlowName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses the 'Most recent first' sorting behavior and filtering options, which adds value. However, it does not mention authentication requirements, rate limits, pagination behavior, or error handling. The description is reasonable but not rich enough for a higher score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded. The first sentence states the action and resource, the second lists filters and ordering. Every sentence earns its place with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with 5 optional parameters and no output schema, the description covers the essential query dimensions but misses important details: the 'top' parameter controls result count, and the enum includes 'ABANDONED' which is not listed in the description. This is a notable gap that could lead to under-specification.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 40% (toTime and fromTime have descriptions). The description adds meaning by grouping toTime/fromTime as 'time window' and explicitly listing status values, but it omits the 'top' parameter and its result-limit semantics. It partially compensates for the schema coverage gap but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Search SAP CPI Message Processing Logs.' It specifies the verb 'Search' and the resource 'Message Processing Logs,' and lists the key filtering dimensions (status, integration flow name, time window). This distinguishes it from sibling tools like get_mpl_details, which focus on retrieving specific log details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use the tool (searching logs with filters) but does not explicitly compare it to alternatives or state when not to use it. It implies usage through the search context, but lacks direct exclusions or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
undeploy_artifactUndeploy ArtifactA
Undeploy (remove from runtime) a deployed artifact. Stops it processing messages. Requires ALLOW_WRITE and confirm=true.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| artifactId | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses that ALLOW_WRITE permission and confirm=true are required, which are critical behavioral prerequisites not apparent from the schema. However, it doesn't discuss reversibility or effects on in-flight messages.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and immediately note the permission/flag requirement. No filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no output schema or annotations, the description covers purpose, effect, and critical parameters. It could add postcondition info or error conditions, but the essentials are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%. Description adds meaning only for confirm (must be true) but leaves artifactId unexplained beyond its name. With two params and no schema descriptions, the description should elaborate more on both parameters, especially artifactId.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb 'Undeploy' with resource 'deployed artifact' and effect 'stops it processing messages', clearly distinguishing from siblings like deploy_artifact and list_deployed_artifacts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear context indicated by 'Stops it processing messages' and undeploy operation, but no explicit alternatives or when-not-to-use. The description implies usage for removing an artifact from runtime, but doesn't name alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_flow_configurationUpdate Flow Configuration ParameterA
Update a single externalized configuration parameter of an integration flow. Requires ALLOW_WRITE.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Must be true to proceed. | |
| version | No | active | |
| dataType | No | xsd:string | |
| artifactId | Yes | ||
| parameterKey | Yes | ||
| parameterValue | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the ALLOW_WRITE permission, which is useful, but does not mention the 'confirm' requirement (must be true to proceed) or any side effects such as whether the update triggers a redeployment or affects running instances. The permission note adds some transparency, but significant behavioral gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the core purpose, and contains no filler. Every word adds value; the permission note is concise and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, no output schema, no annotations), the description is somewhat minimal. It omits the confirm requirement (though that is present in the schema) and gives no indication of the response or post-condition. However, the schema does provide some parameter descriptions, and the description clearly states the tool's scope and permission, making it minimally viable but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, affecting artifactId, parameterKey, and parameterValue which have neither schema descriptions nor elaboration in the tool description. The description's mention of 'single' and 'configuration parameter' provides some context for parameterKey and parameterValue, but it does not compensate for the lack of schema descriptions for these required parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Update') and a clear resource ('a single externalized configuration parameter of an integration flow'). This precisely distinguishes the tool from siblings like get_flow_configurations and create_integration_flow. The word 'single' also clarifies scope, indicating it updates one parameter at a time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need to update a configuration parameter, but it does not explicitly state when to use this tool versus alternatives or mention any exclusions. No sibling tools are referenced, and there is no guidance on prerequisites beyond the ALLOW_WRITE permission.
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.
44 tool updates
v1.0.0- First observed
cancel_message_processing_log - First observed
copy_integration_package - First observed
cpi_api_catalog - First observed
cpi_get_entity - First observed
cpi_invoke_function - First observed
cpi_query - First observed
cpi_write - First observed
create_integration_flow - First observed
create_integration_package - First observed
create_number_range - First observed
delete_integration_package - First observed
deploy_artifact - First observed
deploy_user_credential - First observed
download_integration_flow - First observed
get_build_and_deploy_status - First observed
get_data_store_entries - First observed
get_deployed_artifact_status - First observed
get_failure_summary - First observed
get_flow_configurations - First observed
get_flow_resources - First observed
get_integration_flow - First observed
get_integration_package - First observed
get_message_store_entries - First observed
get_mpl_custom_header_properties - First observed
get_mpl_details - First observed
get_mpl_error_information - First observed
get_mpl_run_steps - First observed
list_data_stores - First observed
list_deployed_artifacts - First observed
list_integration_flows - First observed
list_integration_packages - First observed
list_jms_queues - First observed
list_keystore_entries - First observed
list_log_files - First observed
list_number_ranges - First observed
list_oauth2_client_credentials - First observed
list_partners - First observed
list_service_endpoints - First observed
list_user_credentials - First observed
list_variables - First observed
save_integration_flow_as_version - First observed
search_message_processing_logs - First observed
undeploy_artifact - First observed
update_flow_configuration
TDQS
Scored across 44 tools
Tools have clear descriptions and distinct purposes, but the large number (44) and multiple tools for similar resources (e.g., 6 for message processing logs) create some potential for confusion. Overall, descriptions help differentiate.
Most tools follow a consistent verb_noun pattern (e.g., create_integration_package, search_message_processing_logs). However, a few use a 'cpi_' prefix as a domain marker (cpi_api_catalog, cpi_get_entity), deviating slightly from the pattern.
With 44 tools, the set exceeds the 'too many' threshold (25+). While SAP CPI is a broad domain, this many tools may overwhelm agents and increase selection errors.
The tool surface extensively covers integration package/flow lifecycle, deployments, monitoring, security, and configuration. Minor gaps exist (e.g., no explicit tool for managing routing rules or alerts), but core workflows are well-supported.
Maintenance
Related MCP Connectors
A managed runtime for custom API integrations. Manage lines, endpoints, keys, logs and DLQ via MCP.
- CeligoOAuthcom.celigo
Manage your Celigo integrator.io account: integrations, flows, connections, errors, and jobs.
- OneOAuthai.withone
Search, document and execute authenticated API calls across 700+ apps via one MCP server
Governed data discovery, exact queries, decisions, simulations, and runtime utilities over MCP.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables AI assistants to manage SAP Cloud Integration (CPI) landscapes through natural language by exposing CPI OData APIs as MCP tools.12MIT
- AlicenseAqualityDmaintenanceConnects Claude to SAP Cloud Platform Integration (CPI) to diagnose failed messages, review iFlows, deploy artifacts, and check credentials directly from your conversation.136MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to interact with SAP Cloud Integration (CPI) by exposing CPI APIs as MCP tools for inspecting metadata, runtime artifacts, message logs, and failed messages.3-
- FlicenseBqualityCmaintenanceEnables managing SAP Cloud Integration iFlows, packages, configurations, deployments, and runtime artifacts via natural language through the OData API.25-