Server provides 28 tools for SAP BTP Cloud Foundry management with consistent naming (cf_* prefix), reasonably detailed descriptions, and proper input schemas. However, there are significant gaps: no output schema documentation, missing descriptions for several parameters across many tools, no error handling guidance, no tool annotations (destructiveHint, readOnlyHint), and inconsistent parameter detail. The descriptions are generally adequate (50-150 chars) but lack context around when to use tools or what downstream effects occur. Parameter descriptions are present but often generic (e.g., 'Name of the application'). Schemas use proper JSON Schema structure with types, but lack constraints (enums, patterns, ranges) that would guide LLM reasoning. The server correctly avoids exposing credentials in parameters and uses environment variables, which is a security plus. Overall, this is a solid domain-specific toolkit that falls short of production-grade quality due to missing output documentation and tool annotations.
Tools (28)
cf_appread onlyauthsource verified75/100
Get detailed information about a specific application
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared. LLMs cannot determine which tools are safe to retry, which are read-only, which are destructive without reading descriptions carefully.
cf_login
Recommendations
Add output schemas for all 28 tools. Document the JSON structure, field types, and meaning. E.g., cf_app should document { appName: string, state: string, instances: number, memory: string, urls: string[] }. Reference arcade.dev/patterns/tool.
Add tool annotations to the registerTool calls: use readOnlyHint=true for cf_get_target, cf_app, cf_apps, cf_logs, cf_get_env, cf_services, cf_service, cf_marketplace, cf_orgs, cf_spaces; use destructiveHint=true for cf_delete_app and cf_delete_service. Reference arcade.dev/patterns/tool.
Add confirmation/dry-run step for destructive tools. E.g., cf_delete_app should accept a 'confirm' parameter defaulting to false, with description: 'If false, shows what would be deleted without actually deleting. Set to true to proceed with deletion.'
Constrain numeric parameters: instances (1 - 100), add min/max bounds; memory and disk enums ('256M', '512M', '1G', '2G', '4G') or regex pattern (\d+(M|G)).
Enrich error messages with recovery guidance. E.g., if cf_login fails with 'Invalid credentials', respond: 'Authentication failed. Verify CF_API_ENDPOINT, CF_USERNAME, and CF_PASSWORD in environment variables or pass them as parameters. Use cf_target to check current target.'
Add pagination to list tools. E.g., cf_apps and cf_services should accept 'limit' (default 50, max 100) and 'offset' (default 0) parameters; return { items: [...], total: number, limit: number, offset: number }.
Document parameter relationships and constraints in descriptions. E.g., cf_push: 'path and manifest are mutually exclusive, if manifest is provided, path is ignored. memory and disk default to 1G each; instances defaults to 1.'
Score history
Overall score trend
↑ 21 points across a rubric change (v1 → v2)
56/100
Scored
Grade
Overall
Spec posture
Rubric
2026-09-22
D
56
2026-07-28+
v2
2026-03-09
F
35
-
v1
cf_get_envread onlyauthsource verified75/100
Get all environment variables for an application
cf_get_targetread onlyauthsource verified77/100
Get current Cloud Foundry target information (API endpoint, org, space, user)
cf_loginwriteauthsource verified77/100
Authenticate with Cloud Foundry using provided credentials. Use environment variables if no parameters provided.
cf_logsread onlyauthsource verified75/100
Get application logs
cf_map_routewriteauthsource verified73/100
Map a route to an application
cf_marketplaceread onlyauthsource verified73/100
List available services in the marketplace
cf_orgsread onlyauthsource verified75/100
List all organizations
cf_pushwriteauthsource verified73/100
Deploy (push) an application to Cloud Foundry
cf_restagewriteauthsource verified75/100
Restage an application (re-run staging without changing code)
Parameter descriptions are generic and lack constraints. E.g., 'instances' lacks min/max bounds, 'memory' and 'disk' lack format guidance (512M vs 0.5G confusion), 'config' lacks JSON schema details. No enums for optional named parameters.
No error recovery guidance. Tools have no descriptions of failure modes (e.g., 'app not found', 'insufficient quota', 'authentication failed') or what the LLM should do next.
No pagination support or result limits documented for list tools. cf_apps, cf_services, cf_orgs, cf_spaces, cf_marketplace could return very large result sets with no guidance on batching or limiting.
Parameter descriptions lack practical guidance. E.g., cf_marketplace 'service' param says 'Filter by specific service name (optional)' but does not explain whether it accepts partial names, exact match, or IDs.
cf_login and cf_target descriptions do not make dependencies explicit. E.g., cf_target does not state 'You must call cf_login first' or explain what happens if targeting fails.
cf_logincf_target
Add dependency hints in tool descriptions. E.g., cf_target: 'You must call cf_login first. Use cf_get_target to verify the new target after switching.'
Add 'format' field to 'config' parameters (cf_create_service, cf_bind_service). Document expected JSON schema or link to SAP documentation. E.g., 'JSON string; must be valid JSON that complies with the service plan's configuration schema.'
Provide example success responses in documentation (separate from code comments). E.g., cf_app might return { appName: 'my-app', state: 'started', instances: 2, memory: '512M', disk: '1G', urls: ['my-app.cfapps.us10.hana.ondemand.com'] }.
Consider batch variants for multi-step operations. E.g., set_env_vars taking an array of { varName, varValue } instead of requiring sequential cf_set_env calls.