Cloudeval AI
This server exposes Cloudeval's MCP toolset for querying cloud projects, reports, costs, architecture graphs, WAF findings, billing, recipes, credentials, config, and local CLI state through read-only, agent-safe tools.
Discover server capabilities, identity, agent profiles, and available models.
List and fetch projects, project overviews, graph snapshots, graph diffs, insights, and sync runs.
Inspect connections and cost/Well-Architected reports, including WAF rules and rule search/categories.
Review billing summary, usage, ledger, plans, top-ups, invoices, and notifications.
Access local session history, search/export sessions, and check auth/status/doctor/config/profile settings.
List credential templates and inspect existing credentials.
List and fetch reusable recipes.
The server integrates with GitHub-hosted IaC repositories and supports repository review commands with GitHub Checks and SARIF output.

Cloudeval CLI
Your cloud, in the terminal: evaluated, reported, and agent-ready.
Cloudeval CLI turns ARM templates, GitHub-hosted IaC, and live Azure context into cost, architecture, and Well-Architected signals. Use it as a terminal UI, a scriptable automation client, or an MCP server for Codex, Cursor, Claude, VS Code, and any stdio JSON-RPC client.
Why Use It
For | What you get |
Terminal users | A full TUI with chat, Agent mode, workspace tabs, thread switching, slash commands, a context rail, task ledger, artifact chips, and local SQLite session history. |
Automation | Stable |
Agents and CI | Scoped access-key credentials, redacted output by default, MCP toolsets, recipes, and machine-readable capability metadata. |
Related MCP server: AWS MCP Audit
Install
Node.js 20+ users can install from npm:
npm install -g @ganakailabs/cloudeval-cli
cloudeval --helpmacOS, Linux, WSL2, Git Bash, and PowerShell 7+ on Windows or Linux can use the standalone release installer:
curl -fsSL https://cli.cloudeval.ai/install.sh | bashirm https://cli.cloudeval.ai/install.ps1 | iexThen reload your shell and sign in:
source ~/.bashrc # or: source ~/.zshrc
cloudeval login
cloudeval status
cloudeval chatDevice login goes through cloudeval.ai and always asks the browser auth provider to show the account chooser, so users can choose the intended work email even when another account is already signed in. No local Azure app registration is needed for normal CLI use.
The installer:
downloads checksum-verified GitHub release assets and installs
cloudeval;creates the
evaandcloudaliases on non-Windows platforms;can install shell completions for bash, zsh, and fish;
can offer concise MCP setup for detected Codex, Claude Desktop, Cursor, and VS Code clients, skipping clients where Cloudeval MCP is already configured and avoiding prompts when only manual-only setup remains;
asks whether to share limited CLI telemetry, defaulting to yes; declining writes
telemetry.enabled=false;explains credential setup but does not create access keys or write secrets into MCP client config;
shows compact labeled progress bars in interactive terminals;
uses connect/stall timeouts so slow CDN transfers fail clearly.
Useful controls:
curl -fsSL https://cli.cloudeval.ai/install.sh | CLOUDEVAL_INSTALL_AGENT_SETUP=0 bash
curl -fsSL https://cli.cloudeval.ai/install.sh | CLOUDEVAL_INSTALL_MCP_CLIENTS=codex,cursor bash
curl -fsSL https://cli.cloudeval.ai/install.sh | CLOUDEVAL_TELEMETRY=0 bash$env:CLOUDEVAL_ASSUME_YES = "1"
irm https://cli.cloudeval.ai/install.ps1 | iexThe bash installer can also detect agent clients and offer MCP setup. The
PowerShell installer installs the verified binary, yoga.wasm, license
notices, PATH, and optional PowerShell tab completions. Run cloudeval mcp setup afterward when you want MCP client configuration.
Telemetry
Cloudeval CLI sends curated custom events to Azure Application Insights by default. Events cover command family, success, duration, safe option enums, CLI version, Node/runtime version, OS major version, architecture, install source, update/install outcomes, MCP tool names, and TUI launch/exit metadata. After login, events may include the signed-in email and first/last/full name.
Telemetry never sends raw prompts, command output, tokens, local paths, project or resource identifiers, account/session/tenant identifiers, cloud resource names, stack traces, or raw error messages. Disable or re-enable it anytime:
cloudeval config set telemetry.enabled false
cloudeval config get telemetry.enabled --format json
cloudeval config set telemetry.enabled true
cloudeval config unset telemetry.enabledEnvironment overrides take precedence for a single run:
CLOUDEVAL_TELEMETRY=0 cloudeval status --format json
CLOUDEVAL_TELEMETRY=1 cloudeval --helpUpdate later with:
cloudeval update --check
cloudeval update --yesAfter an update, restart or reload configured MCP clients when you are ready to load newly exposed Cloudeval tools, resources, or prompts. Cloudeval does not restart Codex, Claude, Cursor, VS Code, or other MCP hosts automatically.
Uninstall local installer-owned artifacts while keeping Cloudeval config, sessions, and auth by default:
cloudeval uninstall --dry-run
cloudeval uninstall --yes
cloudeval uninstall --yes --remove-config # also removes ~/.config/cloudeval
npm uninstall -g @ganakailabs/cloudeval-cli # if installed through npmStart Here
cloudeval # Terminal UI
cloudeval tui --graph-diagram ascii
cloudeval ask "Summarize my cloud risk" --format json
cloudeval agent "Find cost and architecture risks" --format json
cloudeval agents list
cloudeval agents run cost --project <project-id> --format json
cloudeval recipes list
cloudeval projects list
cloudeval uninstall --dry-run
cloudeval projects graph insights <project-id> --focus impact --resource <resource-id> --format json
cloudeval validate template --template-file template.json --parameters-file parameters.json --rule <check-id> --details --wait --progress stderr --wait-timeout 600000 --format json
cloudeval validate tests --template-file template.json --parameters-file parameters.json --wait --progress stderr --wait-timeout 600000 --format json
cloudeval rules search "public network" --format json
cloudeval reports list
cloudeval actions list --type architecture,cost,unit-tests --format json
cloudeval actions open --print-url --no-open
cloudeval review --repo owner/repo --ref feature/infra-change --commit-sha <sha> --github-checks --sarif --output cloudeval-review --format json --non-interactive
cloudeval capabilities --format json
cloudeval doctor --deepFull docs: Get started with the CLI and CLI command reference.
Inside the Terminal UI, use the Thread control or /thread to switch open chat
sessions, recent Cloudeval chat threads, and local CLI sessions. /thread new
starts another independent open session, and /open jumps to the same chat
thread in Cloudeval when the active session has a thread id. Roomy terminals show
a context rail with project, thread, model, mode, profile, report artifact
chips; narrower terminals keep the
chat first and expose the same controls through the composer and slash commands.
Typing / opens a bottom command completion strip; use Tab or Up/Down to move,
Right to accept the ghost text, and Enter to choose the highlighted command.
Streaming work appears as a task ledger in the thread, and the bottom composer
stays docked so prompt entry does not compete with the transcript. Grounded
answers show numbered citations and a Sources section instead of raw
[S_tool_...] tags, with citation numbers highlighted inline; /copy copies
the latest assistant response and /download writes a Markdown transcript with
the same references. Graph insight blocks render as bordered terminal cards
instead of exposing raw graph-insight markers; when a card contains a
conservative Mermaid flowchart, --graph-diagram auto renders a terminal
diagram in roomy TTYs, unicode or ascii force a mode, and off keeps the
Mermaid source fallback. Unsupported Mermaid syntax stays visible as source
instead of breaking the transcript. Negotiated chat visualizations render
directly in the TUI:
line/area trends use Unicode plots; bar, column, histogram, pie, doughnut,
radar, and polar data use width-aware bars; scatter and heatmap data use compact
terminal grids; unsupported chart families use the artifact's table fallback.
Mermaid flow edges render as an edge list, with bounded Mermaid source as the
fallback when no edges can be extracted. HITL approval prompts require an
explicit option selection or typed answer; pressing Enter on a blank approval
prompt does not choose the recommended option. Project and Connection tabs show
a selected-item detail pane for backend fields, report coverage, sync state, and
linked records; use J/K or Up/Down on Projects and Connections to move the
selected row, then Enter to confirm it. The billing header separates credits left from observed
credits used so usage does not look like the current budget. Use the Profile
control or /profile cost to run the current prompt with an Agent Profile;
selecting a profile switches the TUI to Agent mode, and selecting Ask mode
clears the profile back to the default chat flow. Starter prompts stay hidden
until you run /starter. Press Esc from the prompt to leave text editing so
tab, arrow, and number shortcuts move through controls and tabs; type again to
resume editing. Busy loaders and the input cursor can be disabled with
--no-anim. The banner details
include the logged-in user. Focused controls and the active top tab use the
shared warm banner-yellow accent, with the active tab filled across its full
button interior.
The CLI advertises cloudeval.visualization/v1, flint-v1, and
mermaid-v11 capabilities on chat requests. The backend compiles chart intent;
the CLI validates the bounded artifact and renders terminal-safe output without
a browser or native SVG helper. ask and agent JSON results include
data.visualizations when present, and NDJSON emits a visualization event as
well as including the artifacts in the final result. Final JSON/NDJSON responses,
Markdown output, and local conversation history retain validated artifact fences
even when streamed prose omits or corrupts the chart payload. Text output remains
the live prose stream. See the
visualization artifact contract.
Core Workflows
Goal | Terminal UI | Script or CI | MCP |
Grounded cloud chat |
|
|
|
Deeper analysis | Agent mode in the TUI |
| planner-style tool flows |
Agent Profiles | TUI Profile control and Chat picker |
|
|
Reusable workflow | prompt suggestions |
|
|
Projects and reports | workspace panels |
|
|
Issues |
|
| n/a (use CLI; MCP has report/deeplink tools) |
Graph intelligence | project graph views |
|
|
Template validation | n/a |
|
|
Billing | billing panel and links |
|
|
Automation discovery | n/a |
|
|
Agent Profile ids include architecture, cost, triage, remediation,
visual-explainer, scripter, change-reviewer, evidence-auditor, and
security-reviewer. Display names may contain spaces. The Architecture profile
includes the Well-Architected review lens, so there is no separate Well-Architected
Agent Profile. When agents run omits a prompt, the CLI uses a starter prompt for
the selected project source and profile mode: template or live sync, ask or
agent. The choice is deterministic for automation. Profile runs send only
agent_profile_id; Cloudeval applies profile instructions, planning lens, and
response defaults on the backend. agents list and agents show first try the
backend profile catalog; if the profile catalog endpoint requires sign-in or is
not available, they fall back to the bundled public catalog so discovery still
works. agents run still requires authenticated backend access. In the TUI,
the Profile selector uses the same canonical IDs and sends the selected
agent_profile_id with chat streams.
Run cloudeval <command> --help for exact flags.
Access Keys For CI And Agents
Use cloudeval login for humans. The browser approval page requests an
account chooser on every login. Use scoped access keys for CI, hosted agents,
and long-running automation.
Stored device-login sessions refresh automatically before authenticated
requests. If the TUI or cloudeval ask receives an expired-token response from
the chat stream, the CLI refreshes the stored session and retries that request
once. If the refresh token is revoked or expired, run cloudeval login again.
Create an access key after login and project selection:
cloudeval projects list
cloudeval credentials templates --format json
cloudeval credentials create \
--template ci \
--name github-actions-prod \
--project <project-id> \
--expires 90d \
--idempotency-key "$(uuidgen)" \
--format github-actions--format github-actions prints CLOUDEVAL_ACCESS_KEY and CLOUDEVAL_PROJECT_ID once. The raw key is not shown again by credentials list or credentials inspect.
Test a scoped access key without putting it in shell history:
printf '%s\n' "$CLOUDEVAL_ACCESS_KEY" | cloudeval projects list \
--access-key-stdin \
--format json \
--non-interactiveCredential rules:
prefer
--access-key-stdinorCLOUDEVAL_ACCESS_KEY;--access-keyis accepted but warns because process arguments and shell history can leak;old beta names
--api-key,--api-key-stdin, andCLOUDEVAL_API_KEYfail with a migration error;access-key-shaped strings, authorization headers, and sensitive URL query parameters are redacted by default;
credential create output files are written with private permissions on POSIX systems.
MCP For Coding Agents
Start MCP after signing in, or provide a scoped CLOUDEVAL_ACCESS_KEY in the host environment:
cloudeval login
cloudeval mcp serve
cloudeval mcp serve --toolset readonlyClient setup examples:
codex mcp add cloudeval -- cloudeval mcp serve --toolset readonly
cloudeval mcp setup cursor --dry-run --toolset reports --format json
cloudeval mcp setup vscode --dry-run --toolset readonly --format jsonMCP rules:
tool names use underscores such as
projects_list,recipes_list, andbilling_summary;dotted tool names remain compatibility aliases;
stdout is JSON-RPC only and
[cloudeval-mcp]diagnostics go to stderr;MCP tool schemas do not accept per-call access-key arguments;
mcp servedoes not support--access-key-stdinbecause stdin is the protocol stream.readonlyincludes safe inspection tools for projects, reports, billing, connections, credentials, config, models, sessions, auth, status, doctor, and recipes; generation, downloads, checkouts, credential mutation, browser opens, and diagram file writes stay explicit.
For billing inspection, use billing_ledger for individual usage attempts and
credit charges, billing_usage for aggregates, and billing_summary for current
entitlement. Ledger filters default to 30 calendar days; startAt and endAt
override their corresponding range bounds. Pass data.next_cursor back as
cursor with the same filters while data.has_more is true. Ledger page size
defaults to 25 and is clamped to 1–100.
billing_invoices returns subscription invoices, paid top-up history and
billing-cycle status. Fetching this data can create missing provider invoice
records for already-paid top-ups and persist receipt links. It therefore
requires explicit --toolset billing or --toolset all selection and is
excluded from readonly. Its result limit defaults to 25, is clamped to 1–50
per collection, and has no pagination cursor. These tools require billing read
access through the server's configured credential; they do not initiate a
purchase or change the subscription.
Developer setup details: cli.cloudeval.ai/developer/.
Recipes And Skills
Cloudeval recipes are reusable workflows for agents and humans. Current recipes cover cost review, WAF triage, architecture review, template project review, report summaries, report generation planning, report export packs, billing review, top-up readiness, project inventory and healthchecks, connection audit, credential setup and rotation, model selection, session recovery, CLI onboarding checks, frontend workspace links, architecture/dependency diagram exports, and MCP setup.
cloudeval recipes list
cloudeval recipes show cloudeval-cloud-cost-review
cloudeval recipes run cloudeval-cloud-cost-review --project <project-id> --format json --non-interactive
cloudeval recipes show cloudeval-architecture-diagram-export
cloudeval recipes run cloudeval-dependency-diagram-export --project <project-id> --output-path ./dependency.svgAsk/agent-backed recipes may consume model credits. Recipes that would create projects, write report or diagram files, change MCP config, mutate credentials, open browsers, or start checkout flows print explicit commands instead of performing those side effects implicitly. Portable agent instructions live under skills/; MCP remains the preferred execution path for Codex, Cursor, Claude, and other agents.
Project Example
curl -L -o template.json \
https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.compute/1vm-2nics-2subnets-1vnet/azuredeploy.json
cloudeval projects create \
--name "Azure VM network review" \
--provider azure \
--template-file ./template.json \
--format jsonUse --template-url when you do not want a local file. Follow with reports run, reports download, and projects export-diagram as needed.
Output, Auth, And Privacy
cloudeval login
cloudeval login --headless
cloudeval auth status
cloudeval auth status --show-sensitive-ids
cloudeval help agents
cloudeval agents listOutput contract:
cloudeval loginopens or prints acloudeval.ai/device/loginapproval URL with an account chooser hint for the web auth provider;machine-readable commands write payloads to stdout;
prompts, progress, browser-open messages, and warnings go to stderr;
askandagentsupport--progress none,--quiet, or--format ndjson --progress ndjson;validate templateandvalidate testssupport--progress stderror--progress ndjsonwith--wait; validation progress always goes to stderr so final JSON/NDJSON remains parseable on stdout. Completed progress includes failing check/test details such as message, recommendation, severity, and file/template or resource location when available. If a completed backend result only has a worker-local temp file path, Cloudeval reports the submitted template filename instead;with
--non-interactive, human approval exits with code6and returnsHITL_REQUIRED;interactive HITL prompts require an explicit option number, yes/no-style answer, or typed response; blank Enter does not approve the recommended option;
--show-sensitive-idsshows full account/session-style IDs only on trusted machines. It does not unredact tokens.
Docs
Link | Purpose |
Install, login, create a project, and ask a grounded question | |
Full command and flag list | |
TUI navigation and keyboard model | |
Codex, Cursor, Claude, VS Code, and generic MCP hosts | |
Safe automation conventions | |
Sign-in, onboarding, reports, and billing |
Build From Source
Read AGENTS.md before touching auth, credentials, smoke artifacts, or user-facing command behavior.
git clone https://github.com/ganakailabs/cloudeval-cli.git
cd cloudeval-cli
pnpm install
pnpm build
pnpm -C packages/cli dev --helpBuild a standalone binary for the current OS:
pnpm --filter @ganakailabs/cloudeval-cli build:executable:current
./packages/cli/dist/bin/cloudeval --helpRun checks:
pnpm lint
pnpm test
pnpm test:npm-package
(cd packages/cli && npm pack --dry-run)
pnpm -C packages/cli test:cli:noninteractive
pnpm security:scanCommunity
License
Cloudeval CLI is proprietary software provided under the Cloudeval CLI License.
Production third-party package attribution is tracked in
THIRD_PARTY_NOTICES.md, with a release SBOM in
sbom.spdx.json. Published installer releases also download
these notice files under ~/.local/share/cloudeval/licenses. The release
policy is documented in License compliance.
Available Tools
45 toolsagent_profiles_getGet Agent ProfileARead-only
Fetch one Cloudeval Agent Profile by id.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| profileId | Yes | Agent Profile id, for example cost. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no behavioral context beyond the basic fetch operation, such as not-found behavior, error handling, or response characteristics, even though the output schema exists.
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 wasted words. It front-loads the core action and object, making it immediately scannable for an agent.
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 operation, the combination of a precise description, fully documented schema, read-only annotations, and an output schema is sufficient for an agent to call it correctly. The only real gap is the lack of explicit usage guidance relative to sibling tools, but for this low-complexity operation the description remains adequately 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 100%, so all four parameters are thoroughly documented in the input schema itself. The description adds no additional parameter meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
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 ('Fetch') and resource ('Cloudeval Agent Profile by id'), making the operation immediately clear. It distinguishes itself from the sibling agent_profiles_list because it targets a single profile by ID rather than listing all profiles.
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 phrase 'by id' implicitly tells an agent to use this tool when it has a specific profile ID, as opposed to agent_profiles_list. However, it does not explicitly state when to prefer this tool over alternatives or mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
agent_profiles_listList Agent ProfilesBRead-only
List backend-owned Cloudeval Agent Profiles such as Architecture, Cost, Change Reviewer, Evidence Auditor, and Security Reviewer.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds a scoping detail ('backend-owned') and examples, which helps set expectations, but it does not discuss return format, pagination, or authorization. No contradiction with annotations.
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 action and resource, and uses examples to clarify scope without adding unnecessary bulk. 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?
For a zero-required-parameter list tool with full schema coverage, an output schema, and read-only annotations, the description is nearly sufficient. The only minor gaps are lack of explicit mention of authentication requirements or the practical significance of 'backend-owned,' but these do not hinder correct 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?
Schema description coverage is 100%, so the schema fully documents all three optional parameters (baseUrl, profile, frontendUrl). The description adds no additional parameter-level meaning, so the baseline 3 applies.
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 ('List') and a specific resource ('backend-owned Cloudeval Agent Profiles') with concrete examples, making the tool's purpose unambiguous. It does not explicitly name the sibling tool agent_profiles_get, but the 'List' verb inherently distinguishes it from a get-single operation.
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 like agent_profiles_get or other listing tools. There are no exclusions, prerequisites, or context cues beyond the basic purpose, leaving the agent to infer usage from the name and examples alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_statusAuth StatusBRead-only
Return local Cloudeval authentication status.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the 'local' qualifier, indicating this checks local authentication state rather than performing a remote mutation, which is useful context. It does not, however, describe any side effects or environmental dependencies beyond what annotations and the output schema convey.
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 that says exactly what the tool returns without any filler. Every word contributes to the 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 read-only tool with zero required parameters, full schema documentation, and an output schema, the description is nearly complete. The only gap is the lack of guidance distinguishing it from similar status/identity tools, but that is more of a usage-guideline concern than a completeness one.
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 all three parameters (baseUrl, profile, frontendUrl) are already fully documented in the schema. The description does not add parameter-level detail, but with full schema coverage the baseline of 3 is appropriate.
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 ('Return') and names a concrete resource ('local Cloudeval authentication status'), which clearly identifies the tool's function. It does not explicitly contrast with sibling tools like 'status' or 'identity_get', but the resource is specific enough to avoid confusion.
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 such as 'status', 'identity_get', or 'doctor'. There is no mention of conditions, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_ledgerBilling LedgerARead-only
Inspect individual Cloudeval usage attempts and credit charges for the authenticated account. Use billing_usage for aggregates or billing_invoices for payment receipts. Defaults to the last 30 calendar days; explicit timestamps override the corresponding range bounds. Returns data.items, data.has_more and data.next_cursor; reuse the cursor with the same filters to read the next page. Requires billing read access; does not initiate purchases or evaluations.
| Name | Required | Description | Default |
|---|---|---|---|
| endAt | No | Exclusive ISO 8601 upper bound; overrides the range end. | |
| limit | No | Page size; the MCP handler floors and clamps it to 1–100. | |
| model | No | Exact model_name or operation value from a ledger row. Omit to include all models. | |
| range | No | Calendar-day window ending now. Use all for no implicit date bounds. | 30d |
| cursor | No | Opaque data.next_cursor from the previous response. Omit for the first page; retain the same filters while paging. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| outcome | No | Usage outcome filter, such as success, failure, blocked or skipped. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| startAt | No | Inclusive ISO 8601 lower bound, for example 2026-09-01T00:00:00Z; overrides the range start. | |
| actionType | No | Exact action_type value from a ledger row. Omit to include all action types. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. | |
| chargeStatus | No | Charge disposition filter: charged, not_charged or bypassed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds meaningful context beyond that: the auth requirement ('Requires billing read access'), an explicit no-side-effects disclaimer ('does not initiate purchases or evaluations'), and pagination behavior via cursor reuse. This fully discloses the tool's behavioral profile.
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?
Four sentences, each earns its place: purpose, sibling differentiation, default/override behavior, response shape, and auth/safety caveat. Information is front-loaded with the verb and resource first, followed by routing. No filler or repetition of schema 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?
With an output schema present, return values need no extra description beyond the pagination fields already mentioned. The description covers purpose, alternatives, default window, parameter interactions, pagination, permissions, and side-effect safety. For a 12-parameter optional tool, all non-obvious decision points are addressed.
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 covers 100% of parameters, so baseline is 3. The description adds semantic value by relating range to startAt/endAt ('explicit timestamps override the corresponding range bounds') and by explaining cursor usage ('reuse the cursor with the same filters'), which deepens understanding without restating schema 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 states a specific verb and resource: 'Inspect individual Cloudeval usage attempts and credit charges for the authenticated account.' It also explicitly differentiates from sibling billing_usage by noting that tool is for aggregates, so an agent can distinguish them without opening schemas.
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 explicit routing guidance: 'Use billing_usage for aggregates or billing_invoices for payment receipts.' It also provides conditional context like the default 30-day window and how timestamps override range bounds, making the when-to-use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_notificationsBilling NotificationsARead-only
Return Cloudeval billing notifications for the authenticated account.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read behavior is covered structurally. The description adds account scoping but does not mention pagination, sorting, notification state, or rate limits. With annotations covering the safety profile, this is adequate but not rich.
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 declarative sentence that is front-loaded with the core action and object. There is no filler, repetition of schema fields, or redundant explanation of annotations.
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 low-complexity read tool with an output schema and safety annotations, the description states the core purpose and scope. However, it omits any relation to sibling billing tools or what kind of notifications are included, leaving some ambiguity about when an agent should invoke 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 description does not discuss parameters, but the schema already documents baseUrl, profile, and frontendUrl (75% coverage). The one undocumented parameter, limit, is reasonably inferable from its name and default. The description adds no parameter-level meaning and does not compensate for the limit gap, but schema coverage is strong enough.
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 ('Return'), a concrete resource ('billing notifications'), and a scope ('for the authenticated account'). It is semantically distinct from sibling billing tools such as billing_usage, billing_ledger, and billing_invoices by naming notifications explicitly.
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?
There is no guidance on when to use this tool versus alternatives like billing_usage or billing_ledger, no prerequisites, and no exclusions. The phrase 'for the authenticated account' provides scope but not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_plansBilling PlansARead-only
Return Cloudeval billing plan configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Return' wording is consistent with a read-only getter. The description adds little behavioral detail beyond the annotations, such as authentication needs, rate limits, or what the returned configuration actually contains.
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 action, the resource, and the scope 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?
For a zero-required-parameter, read-only getter with an output schema and safety annotations, the description is mostly sufficient. It is slightly thin because it does not clarify what 'billing plan configuration' includes or how it maps to the plural tool name 'billing_plans,' but the output schema can cover return-shape 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?
All three parameters (baseUrl, profile, frontendUrl) are fully documented in the input schema with their default resolution behavior, so schema coverage is 100%. The description itself adds no parameter information, which is acceptable because the schema carries the burden.
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 ('Return') and a clear resource ('Cloudeval billing plan configuration'). The 'configuration' qualifier helps distinguish it from usage/ledger/invoice siblings like billing_usage and billing_invoices, though it does not explicitly name alternatives or state whether this returns the current plan or available plans.
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 use case is implied: call this when you need the billing plan configuration. There are no required parameters and no prerequisites to call it. However, the description gives no explicit guidance about when not to use it or which of the many billing_* siblings might be more appropriate for related tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_summaryBilling SummaryARead-only
Return Cloudeval billing entitlement, credit status, and subscription status.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only (readOnlyHint=true, destructiveHint=false), so the description does not need to repeat that. The description adds useful scoping about which billing facts are returned, but it does not discuss behavior such as auth requirements, data freshness, or what happens when values are absent. With annotation coverage this is adequate but not rich.
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 leads with the verb and immediately names the resource and return values. There is no filler, repetition, or irrelevant context, so 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?
For a simple read-only summary tool with no required parameters, a rich output schema, and self-describing optional parameters, this description is nearly complete. The only notable gap is the absence of any explicit relationship to the closely named billing_* siblings, which an agent would have to infer from the return fields.
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 parameters (baseUrl, profile, frontendUrl) are already fully documented in the schema. The description does not add any extra meaning about how these parameters affect the response, so the baseline score of 3 is appropriate.
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 clear action verb ('Return') and names the exact resource ('Cloudeval billing') plus the specific data points: entitlement, credit status, and subscription status. It is clear about what the tool exposes, but it does not explicitly contrast with the related billing_* siblings, so it stops short of full differentiation.
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 listed return fields imply when this tool is appropriate—when an agent needs billing entitlement, credit, or subscription status. However, it gives no explicit guidance about when to choose billing_summary over billing_usage, billing_ledger, or billing_plans, leaving the routing decision mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_topupsBilling Top-upsARead-only
Return available Cloudeval credit top-up packs.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false. The description adds no extra behavioral context such as data source, caching, or authentication requirements, but it is consistent with the annotations.
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 with the action and resource front-loaded. No filler, repetition, or irrelevant detail.
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?
A simple read-only list operation with no required parameters, a full input schema, and an output schema. The description is sufficient for an agent to select and invoke the tool 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 100%, and all three optional parameters are fully documented in the schema. The description itself adds no parameter-level semantics beyond what the schema already provides.
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: 'Return available Cloudeval credit top-up packs.' It is distinct from siblings like billing_plans or billing_invoices, though it does not explicitly name any sibling for differentiation.
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 intended use is implied by the description: call this when you need available credit top-up packs. However, there is no explicit guidance on when to use this tool versus billing_plans or other billing-related tools, and no exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billing_usageBilling UsageBRead-only
Return Cloudeval billing usage summary with date, granularity, and model filters.
| Name | Required | Description | Default |
|---|---|---|---|
| endAt | No | End timestamp. | |
| model | No | ||
| range | No | 30d | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| outcome | No | ||
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| startAt | No | Start timestamp. | |
| actionType | No | ||
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. | |
| granularity | No | day | |
| chargeStatus | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the scope of a usage summary and filter dimensions, but gives no additional behavioral context such as aggregation behavior, external API dependence, or link generation 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, direct sentence that front-loads the action and resource before listing key filters. Every word earns its place, and there is no redundant or filler 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?
With 11 parameters, multiple undocumented fields, and an ambiguous sibling relationship, this description is too thin to support confident tool selection and invocation. While the output schema helps with return values, the description does not address selection criteria, alternative tools, or parameter semantics sufficiently.
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 45%, so the description partially compensates by clarifying that date, granularity, and model are filters—helpful especially because 'model' has no schema description. However, it leaves several other undocumented parameters (outcome, actionType, chargeStatus) unexplained and does not clarify date formats or filter combinations.
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 action (Return), the resource (Cloudeval billing usage summary), and the primary filter dimensions (date, granularity, model). However, it does not differentiate this from the sibling billing_summary, which likely has an overlapping purpose, so sibling distinction is missing.
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?
There is no guidance on when to use this tool versus alternatives such as billing_summary or billing_ledger. The description only states what the tool does, leaving the agent to infer the appropriate selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
capabilities_getGet Cloudeval CapabilitiesARead-only
Return Cloudeval CLI and MCP capability metadata for agent planning.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds no extra behavioral context such as return format or error cases, but the output schema exists and no contradictions are present.
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 states the verb, resource, and purpose with no filler. It is appropriately sized for the tool's simplicity.
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 full parameter documentation in the schema, an output schema present, and annotations conveying the read-only nature, the description supplies the remaining contextual purpose ('agent planning'). Nothing essential for correct invocation is missing.
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 provides 100% coverage with detailed descriptions for all three optional parameters. The description itself adds no parameter-level meaning, so the schema carries the burden, which is acceptable.
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 ('Return') and a clear resource ('Cloudeval CLI and MCP capability metadata'), and adds the purpose 'for agent planning.' This clearly distinguishes it from sibling tools like config_show or status, which address different concerns.
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 phrase 'for agent planning' provides clear context on when this tool is relevant. It does not explicitly name alternatives or exclusion criteria, but the intended usage is evident and distinct from other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_getGet Config ValueARead-only
Return one setting from the selected Cloudeval CLI profile.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Config key. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the source context ('selected Cloudeval CLI profile') but does not disclose fallback behavior, local-vs-remote semantics, or error handling. Minimal additional behavioral context beyond the annotations.
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 action and result. There is no filler or redundant content, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only config getter, the description, combined with fully described schema parameters, annotations, and an output schema, provides enough to invoke the tool correctly. The main gap is the lack of explicit differentiation from config_show, but this is a minor omission given the overall simplicity.
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 does not add meaningful parameter semantics beyond the schema; the 'one setting' wording loosely maps to the key parameter but provides no new detail. The schema descriptions already explain defaults and precedence.
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 ('Return') and the resource ('one setting from the selected Cloudeval CLI profile'). The phrase 'one setting' helps distinguish it from sibling tools like config_show, though it does not explicitly name alternatives. It is specific enough for an agent to understand the core operation.
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 single-setting lookup use case but provides no explicit guidance about when to use this tool over siblings like config_show or config_profiles. There are no exclusions or alternative suggestions, so the agent must infer routing from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_profilesList Config ProfilesARead-only
Return Cloudeval CLI config profile names.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds that the tool returns only profile names, which is mildly useful scope information, but it doesn't disclose additional behaviors such as configuration-reading details or failure modes. No contradiction with annotations.
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 focused sentence that states exactly what the tool returns. There is no filler or redundant restating of the title, and the core resource and action are 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 read-only listing tool with fully documented optional parameters and an output schema, the description is nearly complete. It could have added one sentence about when to choose this over config_get/config_show, but nothing essential for invoking it correctly is missing.
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 input schema already documents all three optional parameters well. The description contributes no parameter-specific meaning beyond what the schema provides, so the baseline score of 3 is appropriate.
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 ('Return') and resource ('Cloudeval CLI config profile names'), making the tool's basic function clear. It doesn't distinguish itself from sibling config tools like config_get or config_show, but the title and description are unambiguous enough for basic selection.
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 intended use is implied: call this when you need the list of CLI config profile names. However, there is no explicit guidance about when to prefer this over related tools such as config_get, config_show, or agent_profiles_list, and no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
config_showShow ConfigBRead-only
Return the selected Cloudeval CLI profile configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds minimal contextual scope by saying 'selected profile configuration' and does not contradict the annotations, but it does not disclose additional behavioral traits such as default resolution behavior or error handling.
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 with no filler, and the core action and object are front-loaded. It is concise without being a tautology.
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 read-only tool with full parameter documentation, zero required parameters, and an output schema, the description is mostly sufficient for invoking the tool correctly. The main gap is the unresolved relationship with config_get and config_profiles, which affects tool selection more than 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 input schema provides complete descriptions for all three parameters (100% coverage), so the description does not need to repeat parameter details. The description's mention of 'selected' adds little beyond what the 'profile' parameter documentation already conveys.
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 action ('Return') and a concrete resource ('the selected Cloudeval CLI profile configuration'), so it clearly indicates what the tool does. However, it does not distinguish itself from the sibling tools config_get and config_profiles, which could plausibly overlap with 'show config'.
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?
There is no guidance on when to use this tool versus alternatives like config_get or config_profiles. The word 'selected' implies a profile is already chosen, but the description does not explain what 'selected' means or when this tool should be preferred over its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_getGet ConnectionARead-only
Fetch one Cloudeval connection by id from the authenticated account's connection list.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. | |
| connectionId | Yes | Cloudeval connection id to fetch. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only and non-destructive nature, so the description carries a lighter burden. It usefully adds that the fetch is scoped to the authenticated account's connection list, but it does not describe behavior for missing IDs, errors, or returned payloads.
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 action, the resource, the uniqueness of the result, the lookup key, and the authentication scope. This is appropriately compact 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?
For a simple get-by-id operation, the description, combined with the full input schema, output schema, and read-only annotations, provides sufficient context for an agent to invoke it correctly. Error behavior and response details are not essential here given the output schema and low 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 100%, so all four parameters, including connectionId, baseUrl, profile, and frontendUrl, are already documented in the schema. The description reinforces that connectionId is the lookup key but adds no extra parameter-level 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?
States a specific verb ('Fetch'), resource ('Cloudeval connection'), and selection criterion ('by id'). 'One' clearly distinguishes this from a list operation, and the sibling connections_list is implicitly differentiated.
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 already have a connectionId and need that single connection. However, it provides no explicit guidance about when to prefer connections_list or other alternatives, so the agent must infer routing from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connections_listList ConnectionsARead-only
List Cloudeval cloud/template connections visible to the authenticated account.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the authenticated-account visibility scoping, which aligns with openWorldHint and is useful behavioral context. No contradictions exist, but the description contributes only modest value beyond the annotations.
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 13-word sentence that front-loads the verb and resource, states the scope, and contains zero filler. Every word earns its place, and nothing important is buried.
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 an output schema, full parameter documentation in the schema, and annotations covering the safety profile, the description is nearly complete. The authenticated-account scope and resource type are stated. A minor gap is the lack of detail about result ordering or pagination, but the output schema covers return shape.
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%, with all three optional parameters (baseUrl, profile, frontendUrl) already documented with their default-resolution chains. The description adds nothing about parameters, but with full schema coverage the baseline of 3 is appropriate.
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 ('Cloudeval cloud/template connections') and a scoping qualifier ('visible to the authenticated account'). It differentiates cleanly from the sibling connections_get, which targets a single connection, and from other list tools like agent_profiles_list and projects_list by naming the resource type.
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 enumeration use ('List...connections visible to the authenticated account') but provides no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as connections_get for retrieving a single connection. The agent must infer the appropriate context from sibling names and the verb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
credentials_inspectInspect CredentialARead-only
Inspect a Cloudeval access-key credential by id.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. | |
| credentialId | Yes | Credential id. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe read-only nature is covered. The description labels the resource as an 'access-key credential', which adds minor context, but it does not disclose additional behavioral traits such as sensitive-data exposure, required permissions, or behavior for non-existent ids.
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 concise sentence with no filler. The key selection criterion ('by id') is placed prominently, and every word contributes to 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?
This is a simple single-required-parameter read operation, with an output schema available and annotations covering safety. The description, while brief, is fully sufficient for an agent to know what the tool does and when to invoke 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?
Schema description coverage is 100%, so the input schema already documents all 4 parameters. The description's 'by id' wording reaffirms the role of the required credentialId but adds no extra meaning beyond what the schema already provides.
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 ('Inspect'), a specific resource ('Cloudeval access-key credential'), and a specific selection mechanism ('by id'). This clearly distinguishes it from sibling tools like credentials_list and credentials_templates, which serve listing or templating purposes.
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 tool should be used when you already have a credential id and need to inspect a specific credential. However, it does not explicitly say when not to use it or point to alternatives like credentials_list for enumeration, so usage guidance is left mostly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
credentials_listList CredentialsARead-only
List Cloudeval access-key credentials, optionally scoped by project.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the read-only nature is covered. The description adds that results are optionally scoped by project, but otherwise discloses no additional behavioral traits such as pagination, ordering, or authentication requirements. No contradiction exists.
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 that states the resource, the action, and the optional scope with no wasted words. It earns its place 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?
For a simple read-only list tool with a full input schema, an output schema, and safety annotations, the description is sufficient. Nothing an agent needs to call it correctly is missing.
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 four parameters are fully documented in the schema. The description's mention of project scoping maps to projectId but does not add meaning beyond what the schema already provides; the baseline of 3 applies.
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?
States a specific verb ('List') and resource ('Cloudeval access-key credentials'), and adds the optional project scoping. The phrase 'access-key credentials' distinguishes this from sibling tools like credentials_templates and credentials_inspect.
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 a caller wants to list access-key credentials, optionally filtered by project. However, it does not explicitly name alternatives or state when not to use it, leaving differentiation from credentials_templates and credentials_inspect to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
credentials_templatesCredential TemplatesARead-only
List Cloudeval access-key credential templates.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The 'List' verb aligns with the annotations (readOnlyHint=true, destructiveHint=false), so the safety profile is clear. However, the description adds no additional behavioral context such as ordering, filtering, or scope limitations, which is acceptable given the annotation coverage.
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 states the action and resource immediately with no filler. The description is highly front-loaded and every word contributes to clarity.
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?
This is a simple read-only list operation with an output schema, fully described optional parameters, and annotations covering the safety profile. Nothing an agent needs to call it correctly is missing.
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?
All three parameters (baseUrl, profile, frontendUrl) are already fully documented in the input schema with 100% description coverage. The description adds no extra parameter semantics, so the schema carries the full burden.
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?
States a specific verb ('List') and resource ('Cloudeval access-key credential templates'), making the operation unambiguous. The resource qualifier 'access-key credential templates' clearly distinguishes it from sibling tools like credentials_list and credentials_inspect.
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 does not provide any guidance on when to use this tool versus alternatives such as credentials_list or credentials_inspect. There is no mention of prerequisites, conditions, or exclusions, leaving the agent to infer usage solely from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doctorCLI DoctorBRead-only
Return local Cloudeval CLI diagnostic checks.
| Name | Required | Description | Default |
|---|---|---|---|
| mcp | No | Include MCP metadata checks. | |
| deep | No | Check backend reachability as well as local setup. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds the 'local CLI diagnostic' scope but does not disclose additional behavioral details such as whether it executes CLI commands, reads config files, or performs any network checks beyond what the parameters imply.
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 fluff or redundant information. It is appropriately concise for a simple diagnostic tool, though it could be slightly richer without becoming verbose.
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 zero required parameters, 100% parameter schema coverage, an output schema, and read-only annotations, the structured data covers most operational details. The main missing context is when to prefer this over related status/configuration tools, which is not addressed in the description.
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%, and every parameter already has a detailed description explaining defaults and precedence. The tool description adds no parameter-level meaning beyond the schema, which is acceptable given the high 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 clearly states the verb 'Return' and the resource 'local Cloudeval CLI diagnostic checks,' making the core purpose immediately understandable. It distinguishes itself from server-side or API status tools by emphasizing 'local CLI,' though it does not explicitly name any sibling tool.
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 word 'local' implies the tool is for diagnosing the local CLI environment rather than server status, but there is no explicit when-to-use guidance or comparison with alternatives such as status, auth_status, or config_show. Usage context is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identity_getGet IdentityBRead-only
Return Cloudeval identity and capability metadata for the active credential.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that results are scoped to the active credential, but it does not reveal additional behavior beyond that scope.
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 states the resource, the action, and the scoping all in one clause. 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?
The tool is simple, has no required parameters, has an output schema, and has annotations that cover safety and mutability. The main gap is the lack of sibling differentiation, but the definition is otherwise complete for a read-only identity metadata lookup.
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 baseUrl, profile, and frontendUrl are each already explained structurally. The description adds no parameter-level specifics, which is acceptable because the baseline is 3 when the schema documents all 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 ('Return') and clearly names the resource: Cloudeval identity and capability metadata for the active credential. It is clear about what the tool does, though it does not explicitly distinguish itself from the similar-sounding capabilities_get sibling beyond adding 'identity.'
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 given about when to use this tool versus alternatives such as capabilities_get, auth_status, or status. The description implies it is the way to inspect the current credential, but it never states a selection condition or exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
models_default_getGet Default ModelARead-only
Return the configured default model for the selected CLI profile.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=false, and destructiveHint=false, covering the safety profile. The description adds minimal behavioral context beyond that ('configured default model', 'selected CLI profile'), but does not disclose edge-case behavior such as what happens when no default is configured or when a profile is 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?
A single, front-loaded sentence with zero redundancy. Every word adds meaning and the primary action and target resource are immediately clear.
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 low-complexity read-only tool with full schema coverage, strong annotations, and an output schema present, the description is sufficient. No critical information needed for the agent to invoke the tool correctly is missing.
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%, and each parameter (baseUrl, profile, frontendUrl) already has a clear explanation with defaulting behavior. The description itself adds no parameter-level detail, so it relies appropriately on 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 uses a specific verb ('Return') and resource ('configured default model') and ties it to the selected CLI profile. This clearly differentiates it from siblings like models_list, which lists all models, and config_profiles, which manages profiles.
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: use this to retrieve the default model associated with a CLI profile. It does not explicitly name alternatives or exclusion cases, but the context is specific enough for an agent to select this tool for the intended read operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
models_listList ModelsARead-only
List backend-supported Cloudeval models for the active account or access key.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds useful scoping context ('active account or access key') but does not disclose additional behavioral traits such as whether authentication is required or how the list might vary. This is adequate but not exceptional.
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, tightly worded sentence with no filler. It front-loads the action, resource, and scope, making it easy for an agent to parse and use.
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, has no required parameters, annotations already convey safety and open-world behavior, and an output schema exists. The description plus structured information is sufficient for correct invocation without being overly verbose.
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%, with each parameter (baseUrl, profile, frontendUrl) already documented in detail including default resolution. The description adds no parameter-specific meaning, which is acceptable because the schema carries the full burden.
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 the exact verb ('List'), resource ('backend-supported Cloudeval models'), and scope ('for the active account or access key'). This clearly differentiates it from sibling tools like models_default_get, which focuses on a single default model.
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 for when to use the tool: when you need a list of models available to the active account or access key. It does not explicitly name alternatives or exclusions, but for this simple read-only list operation the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_getGet ProjectARead-only
Fetch one Cloudeval project by id from the authenticated account's project list.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | Yes | Cloudeval project id to fetch. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, and open-world hints. The description adds the useful context that the project must come from the authenticated account's own project list. It does not discuss error cases or missing-ID behavior, but the annotations and output schema reduce the need for that detail.
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, tightly worded sentence that leads with the action and resource. It contains no filler, does not restate schema details, and is easy to scan.
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 read tool with one required parameter, full schema documentation, annotations, and an output schema, the description provides enough context to invoke it correctly. It could additionally mention that project IDs come from projects_list, but nothing critical is missing.
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?
All four parameters are fully documented in the input schema with 100% coverage, so the description does not need to repeat parameter details. It adds no parameter-specific meaning beyond the schema, which meets the baseline for high 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 uses a specific verb ('Fetch'), names the exact resource ('one Cloudeval project'), and qualifies the scope ('by id from the authenticated account's project list'). This clearly distinguishes it from sibling tools like projects_list by emphasizing a single-ID lookup.
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 clearly states this is for fetching one project by ID within the authenticated account's scope, which gives an agent solid context for when to use it. However, it does not explicitly mention alternatives like projects_list for enumeration or projects_overview for high-level summaries, so it stops short of explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_graph_diffProject Graph DiffBRead-only
Compare two retained project graph snapshots.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. | |
| toSyncVersion | No | Target sync version. | |
| fromSyncVersion | No | Baseline sync version. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds a small amount of context by specifying that snapshots must be 'retained' and that exactly two are compared, but it does not disclose behavior such as ordering semantics, error conditions, or what happens when snapshots are unavailable.
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 or redundant restatement of the tool name. Every word contributes to the core meaning, making it efficient and 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?
The output schema and parameter schema cover return values and parameter meaning, so the description does not need to repeat those. However, it lacks operational context such as how to identify retained snapshots, how the from/to sync versions map to the comparison order, and when this tool should be preferred over related graph 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 description coverage is 100%, so all six parameters are already self-documenting. The description does not add any additional meaning about fromSyncVersion, toSyncVersion, projectId, or URL defaults, which is acceptable given the schema carries the full burden.
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 names a specific verb ('Compare') and resource ('retained project graph snapshots'), making the core action clear. It is distinguishable from sibling tools like projects_graph_get or projects_graph_timeline because it explicitly targets a comparison of two snapshots, though it does not name those alternatives.
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?
There is no guidance on when to use this tool versus the many related graph tools such as projects_graph_get, projects_graph_timeline, or projects_graph_insights. No prerequisites, exclusions, or alternative routing are mentioned; the only implied context is the bare action of comparing snapshots.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_graph_getGet Project GraphBRead-only
Fetch project graph nodes and relationships for automation.
| Name | Required | Description | Default |
|---|---|---|---|
| asOf | No | Optional replay timestamp. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. | |
| includeDiff | No | ||
| syncVersion | No | Optional sync version. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered by structured data and the description's 'Fetch' is consistent. The description adds no additional behavioral context beyond that—no mention of what 'nodes and relationships' includes, whether data is time-snapshotted via asOf, or how openWorldHint affects results. The bar is lower because of annotations, but no extra context is contributed.
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 zero filler. 'Fetch project graph nodes and relationships for automation' communicates the core purpose immediately and 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?
The presence of an output schema means return-value details are covered elsewhere, and annotations handle the safety profile. Given the moderate complexity (7 optional parameters, several graph sibling tools), the description is adequate for basic selection but lacks usage guidance and any behavioral explanation of the graph scope or how asOf/syncVersion affect the result. It is minimally complete 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?
Schema description coverage is 86%, so the input schema already documents six of seven parameters with meaningful defaults and fallback chains. The description adds no parameter-level detail, but with such high schema coverage the baseline of 3 applies; the only undocumented parameter (includeDiff) has a default value, so the omission is minor.
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 ('Fetch') and a clear resource ('project graph nodes and relationships'), which distinguishes it from the other graph siblings (timeline, diff, insights, sync_runs) that target different aspects. However, it does not explicitly name any of those siblings or contrast itself with them, so the differentiation is implied rather than stated.
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 phrase 'for automation' hints at a programmatic read use, but there is no explicit guidance on when to choose this tool over projects_graph_timeline, projects_graph_diff, or projects_graph_insights. No alternatives, exclusions, or conditions are provided, leaving an agent to infer the appropriate scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_graph_insightsProject Graph InsightsBRead-only
Fetch graph intelligence for overview, impact, critical paths, security, cost, or changes.
| Name | Required | Description | Default |
|---|---|---|---|
| focus | No | overview | |
| limit | No | ||
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| resourceId | No | Resource id for impact analysis. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. | |
| syncVersion | No | Optional sync version. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, openWorldHint=true, and destructiveHint=false, and the description's 'fetch' wording is consistent with read-only behavior. The description does not add meaningful behavioral context beyond the annotations, such as how open-world resolution or generated links behave.
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 appropriately concise, though it leans on the enum values for semantic weight and does not use the space to clarify sibling distinctions.
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?
An output schema exists and annotations cover the safety profile, reducing the burden on the description. Still, the description is minimal for a tool with eight parameters and many overlapping siblings; an agent cannot tell how the 'overview' focus relates to projects_overview or when impact analysis needs resourceId.
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 75%, so most parameters are documented in the schema. The description adds the 'graph intelligence' framing and repeats the focus enum values, but it does not clarify limit semantics, which focus requires resourceId, or the meaning of syncVersion beyond what the schema already provides.
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: 'Fetch graph intelligence' and enumerates the main focus areas. It is clear about what the tool does, but it does not explicitly differentiate it from sibling tools like projects_overview or projects_graph_get.
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 focus list implicitly signals when the tool is relevant, e.g., for overview, impact, security, cost, or changes. However, there is no explicit guidance about when to choose this tool over the many graph-related siblings, nor any stated alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_graph_sync_runsProject Graph Sync RunsARead-only
List recent graph-producing sync runs for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds 'recent' and 'graph-producing' context, but it does not disclose ordering, status filtering, pagination, or whether failed runs are included.
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. Every word contributes to identifying the operation: list, recent, graph-producing sync runs, project.
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 output schema and read-only annotations, the description is adequate for a simple list operation. However, it does not clarify the meaning of 'sync runs' or provide guidance on which graph-related sibling tool to choose, so an unfamiliar agent may still hesitate.
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 the schema explains most parameters including projectId, baseUrl, profile, and frontendUrl. The description adds no parameter-level detail, and the 'limit' parameter lacks a description in both the schema and the description.
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 clear resource ('recent graph-producing sync runs') scoped to a project. It is distinguishable from sibling graph tools like projects_graph_get or projects_graph_timeline, though it does not explicitly name them.
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 tool is appropriate when the agent needs recent sync-run history for a project. However, it provides no explicit guidance on when to prefer this over related graph tools or what conditions would make a sibling more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_graph_timelineProject Graph TimelineBRead-only
List retained graph snapshots for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the contextual detail that the listed data is retained snapshots rather than the live graph, but it says nothing about ordering, pagination, or whether only some snapshots are retained.
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 with no filler, and it front-loads the action and object. 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?
For a simple read-only list with an output schema and strong annotations, the core invocation is clear. However, the description leaves ambiguity about what distinguishes a graph timeline from the other graph tools and what 'retained' excludes, so it is only minimally 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 80%, so the parameter schema carries most of the meaning; the description adds no parameter-level detail. The 'limit' parameter is documented only via its default, which is acceptable but not enriched by the description.
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 names a specific verb ('List'), a resource ('retained graph snapshots'), and a scope ('for a project'). It differentiates from sibling graph tools like projects_graph_get by emphasizing retained/historical snapshots, though it never explicitly names a sibling to contrast with.
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?
There is no guidance on when to call this tool instead of projects_graph_get, projects_graph_diff, or projects_graph_insights. The word 'retained' and the title 'Timeline' hint at historical use, but no explicit condition or alternative is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_listList ProjectsARead-only
List Cloudeval projects visible to the authenticated account.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, non-destructive, and open-world behavior. The description adds the useful auth-scoping detail that results are limited to the authenticated account, which is beyond the annotations. It does not mention pagination or rate limits, but these are minor given the annotations.
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 with no filler, and the core action is front-loaded. It is appropriately sized for a simple, zero-required-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?
Given the zero required parameters, complete schema documentation, output schema, and annotations, the description is nearly sufficient for correct invocation. It could mention a related sibling, but the essential invocation details are already covered elsewhere.
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?
All three optional parameters are fully documented in the input schema, so the schema carries the parameter-semantics burden. The description provides no additional parameter-level detail, so the baseline of 3 is appropriate.
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?
States a specific verb ('List'), resource ('Cloudeval projects'), and scope ('visible to the authenticated account'), making the primary purpose clear. It does not explicitly contrast with sibling tools like projects_get or projects_overview, so it lacks full sibling differentiation.
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 scope clause implies this tool is for listing projects the authenticated account can see, but there is no explicit guidance about when to choose it over alternatives such as projects_get or projects_overview. No exclusions or alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
projects_overviewGet Project OverviewARead-only
Fetch a Cloudeval project cockpit overview with graph, report, connection, credit, and deep-link metadata for IDE and agent workflows.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id to inspect. Defaults to the configured project when omitted. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds useful behavioral context by specifying that the overview aggregates graph, report, connection, credit, and deep-link metadata, setting clear expectations for what the agent will receive.
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 efficiently states the action, resource, and relevant content categories. Every component listed adds value, and there is no filler or redundant repetition of schema details.
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 read-only tool with no required parameters, full schema documentation, and an output schema present, the description covers purpose, composition, and audience sufficiently. Defaults and return values are already handled by the schema and output schema; the only minor gap is explicit sibling-routing guidance, which is penalized under usage guidelines.
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 100% of the four parameters with meaningful descriptions, so the baseline is 3. The tool description itself adds no parameter-level semantics, but none are needed because the schema already documents each parameter's defaults and behavior.
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 ('Fetch') and identifies a distinct resource ('Cloudeval project cockpit overview') with concrete components: graph, report, connection, credit, and deep-link metadata. This distinguishes it from more granular sibling tools, though it does not explicitly name a sibling to differentiate from.
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 'cockpit overview' phrasing implies a consolidated, at-a-glance use case, and 'for IDE and agent workflows' signals intended context. However, there is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named, leaving the agent to infer selection criteria among many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipes_getGet RecipeARead-only
Fetch one Cloudeval recipe by id.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| recipeId | Yes | Cloudeval recipe id. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds the granularity of 'one recipe by id' but does not disclose additional behaviors like error handling for missing ids, response shape, or any URL-related side effects. This is acceptable for a simple read tool but not notably rich.
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, focused sentence that states the essential action and object with no wasted words. It is very easy to parse and remember.
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 straightforward get-by-id tool, the description provides sufficient context: it identifies the resource, the identifying key, and the singleton nature of the result. The output schema covers return-value structure, and annotations cover safety. Only a brief note about not-found behavior or response format would make it 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 100%, so the schema fully documents all four parameters. The description only reinforces that fetching is by id, which aligns with the 'recipeId' parameter but adds no new semantic detail 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 states a specific verb ('Fetch'), a specific resource ('one Cloudeval recipe'), and the retrieval criterion ('by id'). It clearly distinguishes this tool from siblings like recipes_list, which would be used for multiple recipes.
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: fetching a single known recipe by its id. However, it does not explicitly state when to use this tool versus alternatives such as recipes_list, nor does it mention any exclusion or fallback conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipes_listList RecipesARead-only
List Cloudeval reusable recipes and their safety metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true and destructiveHint=false, so the description is not burdened with safety disclosure. It adds only that the tool returns 'safety metadata', a minor output-scope detail, but no behavioral specifics like pagination, ordering, or required authentication are disclosed. No contradiction exists.
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 is front-loaded with the verb and resource and contains no filler. 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?
For a zero-required-parameter list tool with an output schema and safety annotations, the definition is near complete. It could be slightly richer by mentioning that this returns all recipes and pointing to recipes_get for single-recipe details, but nothing critical is missing.
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%: all three optional parameters (baseUrl, profile, frontendUrl) are documented with default-resolution behavior. The description adds no parameter-level meaning, so the baseline 3 applies.
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 resource ('Cloudeval reusable recipes') and adds 'safety metadata' to indicate the output scope. It is clear, though it does not explicitly contrast with the sibling recipes_get tool, relying on the plural vs singular naming.
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 imperative 'List ... recipes' implies when to call the tool but gives no explicit guidance about when not to use it or to prefer recipes_get instead. There is no mention of alternatives or exclusions, so the agent must infer usage from the name and sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reports_costLatest Cost ReportBRead-only
Fetch the latest normalized Cloudeval cost report for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | Cost view hint such as overview or raw. | |
| period | No | 30d | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare the tool read-only and non-destructive, so the description does not need to restate safety. It adds a small amount of behavioral context by saying the report is 'latest' and 'normalized,' but it does not disclose behavior such as default period handling or output shape.
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 states the action and resource with no filler or repetition. 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 the read-only annotations, a rich output schema, and well-documented parameters, the description is minimally sufficient for a basic fetch. Its main gap is the absence of routing context: an agent has no help distinguishing this from similar report/billing siblings or understanding when 'latest' is constrained by the period parameter.
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 high (83%), so the schema carries most of the parameter meaning. The description adds no parameter-specific detail beyond implying a project scope; it does not explain how 'period' or 'view' interact with 'latest.'
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 action ('Fetch') and resource ('latest normalized Cloudeval cost report for a project'), so an agent can tell it is about cost reporting. However, it does not explicitly differentiate it from closely related siblings like reports_show or billing_summary, so it stops short of full sibling discrimination.
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 given about when to choose this tool over reports_show, reports_list, or billing_summary, nor are any exclusions or prerequisites stated. The only contextual hint is 'for a project,' which is too weak to route an agent reliably.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reports_listList ReportsARead-only
List cost and Well-Architected reports for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Report kind filter. | all |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false; the description adds that the listing is scoped to a project and covers cost and Well-Architected reports. It does not disclose pagination, ordering, or default behavior, but the output schema covers return shape, which is acceptable for a read-only list 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 or repeated title content. Every phrase — cost, Well-Architected, project — adds meaningful scope 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?
With full schema coverage, an output schema, and safety annotations, the definition contains the core facts an agent needs: resource type, scope, and filterable categories. The only noticeable gap is explicit sibling routing, which is already accounted for in usage_guidelines.
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?
All five parameters are fully described in the input schema (100% coverage), so the description does not need to restate them. It adds no parameter-specific meaning beyond the schema's enum and default 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 states a precise action ('List') and resource ('cost and Well-Architected reports') scoped to a project. The plural 'reports' and the named kinds distinguish it from the singular reports_show and the focused reports_cost/reports_waf 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?
No guidance is provided about when to prefer this tool over reports_show, reports_cost, reports_waf, or reports_rules. The description conveys the basic action but does not state exclusions or mention alternative tools, leaving the agent to infer selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reports_rulesWAF RulesARead-only
Return WAF rule findings from the latest Cloudeval WAF report.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| severity | No | Optional severity filter. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint=true and destructiveHint=false, and the description is consistent with those. It adds the useful behavioral detail that only the latest report is consulted, not a user-selected report. It does not disclose other behavioral traits such as empty-result behavior or pagination, but annotations lower the bar.
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 clear sentence with no redundant filler. The core action, resource, and source are all front-loaded, making the tool's purpose immediately evident.
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 read-only annotations, fully self-documenting schema, and existing output schema, the description is complete enough for an agent to select and invoke the tool correctly. The 'latest report' scoping is stated explicitly, which is the main behavior an agent needs to know.
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 itself does not add parameter-level meaning. All five parameters, including optional severity filtering and URL defaults, are already documented in 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 uses a specific verb ('Return'), a specific resource ('WAF rule findings'), and a precise source ('the latest Cloudeval WAF report'). This clearly distinguishes the tool from siblings like reports_waf, reports_show, rules_search, and rules_get by combining 'WAF' and 'latest report'.
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: if you need WAF rule findings from the most recent Cloudeval WAF report, use this tool. However, it does not explicitly mention when to prefer this over siblings such as reports_waf, rules_search, or reports_show, nor does it state any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reports_showShow ReportBRead-only
Fetch one Cloudeval report by id for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | formatted | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| reportId | Yes | Cloudeval report id. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds only that the report is fetched 'for a project,' which is a mild scoping detail; it doesn't disclose view-format behavior, response characteristics, or projectId defaulting beyond what schema already says.
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, front-loaded sentence with no filler or repetition of structured fields. Every word adds meaning, and the core verb/resource is immediately visible.
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 read-only get-by-id tool with output schema and strong annotations, much is covered structurally. However, the description gives no usage context vs sibling report tools and doesn't mention the view parameter's role in the response format, leaving an agent without enough context to select 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?
Schema description coverage is 83%, so the input schema documents most parameters (reportId, view, baseUrl, profile, projectId, frontendUrl). The description doesn't add parameter-level meaning beyond the 'for a project' hint, and with high schema coverage the baseline of 3 is appropriate.
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?
States a clear verb ('fetch') and resource ('one Cloudeval report by id'), and the 'one ... by id' phrasing differentiates it from sibling list/report-type tools like reports_list. However, it doesn't explicitly name alternatives or explain how this relates to reports_waf/reports_rules, so it falls short of a fully differentiated 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?
Provides no guidance on when to choose this tool over siblings such as reports_list, reports_waf, or reports_rules. There are no stated conditions, exclusions, or alternative routing, leaving the agent to infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reports_wafLatest WAF ReportBRead-only
Fetch the latest normalized Well-Architected report for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | WAF view hint such as overview, rules, or raw. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| reportId | No | Optional report id. | |
| severity | No | Optional severity filter. | |
| projectId | No | Cloudeval project id. Defaults to active profile defaultProjectId, then Playground/first project where supported. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is read-only and non-destructive. The description adds 'latest' and 'normalized' as behavioral hints, but does not disclose further behavior such as how the latest report is selected, pagination, or response shaping. There is no contradiction with annotations.
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 or redundant detail. Every part of it contributes to identifying 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?
Given that the input schema documents every parameter and an output schema exists, the one-sentence description is mostly sufficient for invoking the tool correctly. The main missing element is contextual guidance for choosing this tool among the many report-related siblings, but that gap is primarily covered by the usage-guidelines dimension.
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 all seven parameters are already documented. The description adds little beyond implying project context; it does not provide additional semantics for parameters like view, severity, or reportId.
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 clear verb ('Fetch') and a specific resource: the latest normalized Well-Architected report for a project. It is not tautological, but it does not explicitly distinguish itself from sibling report tools such as reports_show or reports_rules; differentiation is only implicit through 'Well-Architected report.'
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?
There is no guidance on when to use reports_waf versus the many sibling report tools or how to choose between report types. No when/when-not conditions, alternatives, or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rules_categoriesRule CategoriesARead-only
List cloud validation check categories.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, covering the safety and mutability profile. The description adds no further behavioral detail such as config resolution, pagination, or link generation, but it is consistent with the read-only annotations and introduces no contradiction.
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: 'List cloud validation check categories.' It contains no filler, no repeated schema information, and 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 zero-required-parameter, read-only list tool with an output schema, the one-line description is nearly complete. It could slightly improve by indicating that these categories organize or filter the cloud validation checks exposed by sibling rule tools, but nothing essential is missing for an agent to invoke it 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 100%, so baseUrl, profile, and frontendUrl are already fully documented in the input schema. The description contributes no parameter-specific meaning, which is acceptable because the schema carries the complete parameter 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 uses a specific verb ('List') and a specific resource ('cloud validation check categories'), making the tool's function immediately clear. It is also distinct from sibling tools like rules_search and rules_get, which operate on individual rules rather than their categories.
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 tool is for retrieving categories, but it does not explicitly state when to prefer it over rules_search, rules_get, or reports_rules. There is no exclusion or alternative routing guidance, so the agent must infer usage from the name and sibling context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rules_getGet RuleARead-only
Show one cloud validation check by id.
| Name | Required | Description | Default |
|---|---|---|---|
| ruleId | Yes | Validation check id. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Show' is fully consistent with those. The description adds the domain context 'cloud validation check' but discloses nothing extra about not-found behavior, error handling, or response shape. With annotations covering safety, a neutral 3 is appropriate.
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 seven-word sentence that front-loads the verb and resource, contains zero filler, and conveys the essential operation completely. The description earns its place with no redundant phrasing.
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, the description is nearly complete: output schema covers return values, annotations cover the safety profile, and schema covers all parameters. The only minor gap is unstated behavior for invalid or missing IDs, which is a small omission for a read-only retrieval tool of this simplicity.
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 all four parameters are already documented in the schema. The description adds 'by id', which reinforces ruleId as the lookup key, but provides no additional semantic detail beyond what the schema already offers. Baseline 3 is correct given full 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 uses a specific verb ('Show') with a well-defined resource ('one cloud validation check by id'). It clarifies that 'rule' means a cloud validation check, which removes domain ambiguity. The 'by id' scoping distinguishes it from sibling tools like rules_search and rules_categories without needing to inspect their schemas.
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 phrase 'by id' implies this tool is for fetching a single known rule, and the sibling list offers search/category alternatives. However, the description never explicitly states when to prefer this over rules_search, nor does it mention exclusions. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rules_searchSearch RulesBRead-only
Search cloud validation checks.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query. | |
| pillar | No | Architecture pillar filter. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| category | No | Category filter. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already disclose readOnlyHint=true, openWorldHint=true, and destructiveHint=false, and the description adds no behavioral context beyond the bare search action. It does not contradict the annotations, but it also provides no extra detail about result scoping, pagination, or other runtime 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 front-loaded sentence with no filler, repetition, or unnecessary detail. It earns its place by stating the core action and resource immediately.
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 schema is well documented, an output schema exists, and annotations cover the safety profile, the description is minimally adequate. However, it omits what makes this search distinct from sibling rule/report tools and does not explain the scope of 'cloud validation checks,' leaving an agent to infer 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 input schema has full (100%) coverage with descriptions for all six parameters, so the baseline is 3. The main description only clarifies that the query targets cloud validation checks; it does not add meaningful semantics 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 uses a specific verb ('Search') and a concrete resource ('cloud validation checks'), so an agent can tell it is a read-oriented lookup tool. It does not explicitly contrast with sibling tools like rules_get or rules_categories, so it stops short of full sibling differentiation.
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?
There is no guidance about when to use this tool versus sibling tools such as rules_get, rules_categories, or reports_rules. The word 'Search' implies a broad query use case, but no alternatives, exclusions, or conditions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_exportExport SessionsARead-only
Return local Cloudeval CLI session history for the selected profile.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds useful context that the history is local to the CLI and profile-specific, but it does not disclose output format or whether it returns a full snapshot. Given the annotations cover the safety profile, a 3 is appropriate.
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. Every word contributes meaning, and it is easy to parse quickly without any unnecessary 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?
For a read-only tool with zero required parameters and an output schema, the description conveys the core action. However, it does not explain what 'export' adds over sessions_list or whether the returned history is complete or filtered. This gap in usage context prevents 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?
Schema description coverage is 100%, so all three parameters (baseUrl, profile, frontendUrl) are fully documented in the input schema. The description adds no parameter-specific details, but none are needed because the schema carries the burden.
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 ('Return') and a specific resource ('local Cloudeval CLI session history'), and qualifies it with 'for the selected profile.' The word 'local' helps distinguish this from server-side or remote session tools, and it does not merely restate the title.
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?
There is no mention of when to use this tool versus sibling tools like sessions_list, sessions_get, or sessions_search. The description only states what the tool does, so an agent gets no guidance on selection criteria or when this is the appropriate choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_getGet SessionARead-only
Return one local Cloudeval CLI session by thread id.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| threadId | Yes | Local session thread id. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'local' scoping detail, which is useful, but does not disclose behavior such as error handling or whether an unknown thread id returns null or throws.
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. Every word contributes to identifying what the tool returns and how it identifies the resource.
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 read operation with a complete input schema, an output schema, and read-only annotations, the description is largely sufficient. It could be slightly richer by explicitly noting that this targets a locally stored CLI session and should be used with a pre-known thread id, but those are implied.
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 provides full descriptions for all 4 parameters (100% coverage), so the description does not need to re-explain them. The only parameter echo in the description is 'thread id', which adds no new semantic 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 uses a specific verb ('Return') with a specific resource ('one local Cloudeval CLI session') and the identifying criterion ('by thread id'). This clearly distinguishes it from siblings like sessions_list or sessions_search, which return collections or perform search.
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 when a known thread id is available, but it never explicitly states when to prefer this tool over sessions_list, sessions_search, or sessions_export. The usage context is only implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_listList SessionsBRead-only
List local Cloudeval CLI session history summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), lowering the burden on the description. The description adds useful scoping context beyond annotations ('local' scope, 'summaries' instead of full sessions), but it does not disclose ordering, pagination behavior, or what a summary contains. This is adequate but not rich.
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 zero wasted words: verb first, then scope qualifier, then resource. It is appropriately sized for a tool whose schema already documents most parameter semantics.
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 an output schema present, annotations covering safety, and strong schema param coverage, the description need not explain return values or side-effect risk. However, the lack of sibling differentiation is a real gap: an agent cannot tell when to choose this over sessions_search, sessions_get, or sessions_export without inspecting those tools as well.
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 75%: baseUrl, profile, and frontendUrl all have detailed descriptions with fallback chains, so the schema carries most of the parameter burden. The description itself adds no parameter meaning, and the single undocumented parameter (limit) is largely self-evident from its type and default of 20. This lands at the baseline of 3.
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 (List) and a specific resource ('local Cloudeval CLI session history summaries'). The 'local' and 'summaries' qualifiers help distinguish it from siblings like sessions_search, sessions_get, and sessions_export, but it stops short of explicitly contrasting with them.
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 given on when to use this tool versus its session-related siblings (sessions_search, sessions_get, sessions_export). There are no exclusions, context cues, or alternative recommendations, so an agent must infer the selection criteria entirely from the tool name and one-line description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sessions_searchSearch SessionsARead-only
Search local Cloudeval CLI session titles and messages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Search query. | |
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the scoping detail that search operates on local CLI session titles and messages, but it does not disclose matching behavior, result limits, or other runtime characteristics beyond what annotations and schema already convey.
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, compact sentence with no filler. It front-loads the action, resource, and scope without unnecessary detail.
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 search tool with an output schema and read-only annotations, the description is adequately complete: it names the resource, scope, and search target. It does not discuss return values or when to use alternatives, but those gaps are partially mitigated by the output schema and sibling 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?
With 80% schema description coverage, the parameter surface is mostly well-documented. The description adds valuable meaning for the required 'query' parameter by stating that it searches session titles and messages, which is more specific than the schema's generic 'Search query.'
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 ('Search') and a clear resource ('local Cloudeval CLI session titles and messages'), making the tool's scope unambiguous. It also distinguishes itself from sibling tools like sessions_list and sessions_get by focusing on search over titles and messages rather than plain listing or retrieval.
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 search use case but gives no explicit guidance on when to choose sessions_search over sibling tools such as sessions_list or sessions_get. No exclusions, prerequisites, or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
statusCLI StatusBRead-only
Return local Cloudeval CLI status and active configuration metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| baseUrl | No | Cloudeval API base URL. Defaults to the MCP server --base-url, active profile, CLOUDEVAL_BASE_URL, or the public API. | |
| profile | No | Cloudeval CLI config profile to read defaults from. Defaults to the server --profile or CLOUDEVAL_PROFILE. | |
| frontendUrl | No | Cloudeval frontend base URL for generated links. Defaults to --frontend-url, active profile, CLOUDEVAL_FRONTEND_URL, or public frontend. |
Output Schema
| Name | Required | Description |
|---|---|---|
| ok | Yes | |
| data | Yes | Tool-specific result payload. |
| command | Yes | |
| traceId | No | |
| frontendUrl | No | |
| filesWritten | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, and the description's 'Return' wording is consistent with that. It adds some useful scope ('local ... status', 'active configuration metadata') but does not explain nuances such as whether this is entirely offline or how it reflects the current profile state.
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 states the action and resource with no filler. Every word adds information, and the most important term ('status') appears early.
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 read-only, optional-parameter tool with an output schema, the description is nearly sufficient. It tells the agent the tool is local, that it reports status and active config metadata, and the schema covers parameters and return shape; only sibling differentiation and a bit more behavioral context are missing.
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% and every optional parameter (baseUrl, profile, frontendUrl) is individually documented with defaults. The description does not add parameter-level meaning, but it does not need to because the schema carries that burden.
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 clear verb ('Return') with a specific resource ('local Cloudeval CLI status and active configuration metadata'), so an agent understands what the tool does. It does not explicitly differentiate from sibling tools like config_show or auth_status, so it falls 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?
There is no guidance about when to call this tool versus alternatives; no alternatives are named and no conditions are given. The only implicit signal is the tool's name/status, so an agent must infer use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
2 tool updates
v0.38.5- Removed
billing_invoices - Changed
billing_ledger9 fields changed- added
Input schema / properties / actionType / descriptionAdded value: +"Exact action_type value from a ledger row. Omit to include all action types." - added
Input schema / properties / chargeStatus / descriptionAdded value: +"Charge disposition filter: charged, not_charged or bypassed." - added
Input schema / properties / cursor / descriptionAdded value: +"Opaque data.next_cursor from the previous response. Omit for the first page; retain the same filters while paging." - changed
Input schema / properties / endAt / descriptionPrevious value: -"End timestamp."New value: +"Exclusive ISO 8601 upper bound; overrides the range end." - added
Input schema / properties / limit / descriptionAdded value: +"Page size; the MCP handler floors and clamps it to 1–100." - added
Input schema / properties / model / descriptionAdded value: +"Exact model_name or operation value from a ledger row. Omit to include all models." - added
Input schema / properties / outcome / descriptionAdded value: +"Usage outcome filter, such as success, failure, blocked or skipped." - added
Input schema / properties / range / descriptionAdded value: +"Calendar-day window ending now. Use all for no implicit date bounds." - changed
Input schema / properties / startAt / descriptionPrevious value: -"Start timestamp."New value: +"Inclusive ISO 8601 lower bound, for example 2026-09-01T00:00:00Z; overrides the range start."
46 tool updates
v0.38.3- First observed
agent_profiles_get - First observed
agent_profiles_list - First observed
auth_status - First observed
billing_invoices - First observed
billing_ledger - First observed
billing_notifications - First observed
billing_plans - First observed
billing_summary - First observed
billing_topups - First observed
billing_usage - First observed
capabilities_get - First observed
config_get - First observed
config_profiles - First observed
config_show - First observed
connections_get - First observed
connections_list - First observed
credentials_inspect - First observed
credentials_list - First observed
credentials_templates - First observed
doctor - First observed
identity_get - First observed
models_default_get - First observed
models_list - First observed
projects_get - First observed
projects_graph_diff - First observed
projects_graph_get - First observed
projects_graph_insights - First observed
projects_graph_sync_runs - First observed
projects_graph_timeline - First observed
projects_list - First observed
projects_overview - First observed
recipes_get - First observed
recipes_list - First observed
reports_cost - First observed
reports_list - First observed
reports_rules - First observed
reports_show - First observed
reports_waf - First observed
rules_categories - First observed
rules_get - First observed
rules_search - First observed
sessions_export - First observed
sessions_get - First observed
sessions_list - First observed
sessions_search - First observed
status
TDQS
Scored across 45 tools
Most tools are clearly separated by resource domains such as projects, reports, billing, sessions, credentials, and recipes. A few pairs could be confused—capabilities_get vs identity_get and status vs auth_status vs doctor—but the descriptions provide enough context to choose correctly.
The dominant pattern is <resource>_<operation>, e.g. projects_list, projects_get, sessions_search, credentials_inspect. Minor deviations like config_profiles, billing_ledger, status, and doctor break the pattern slightly, but overall the naming is predictable and readable.
With 45 tools, this is well beyond the 15-25 range that would still feel manageable. The high count comes from many read-only subdomains, but the sheer number makes tool selection and discovery heavier than necessary.
The read-side coverage is broad: projects, reports, billing, sessions, connections, credentials, recipes, and configuration are all represented. However, the surface is almost entirely read-only with no create, update, delete, execute, or configuration-changing tools, leaving significant lifecycle gaps for agents that need to take action.
Maintenance
Related MCP Connectors
CloudOracle - 14-tool multi-cloud compliance MCP: AWS, Azure, GCP posture, IAM, configs.
- ZopDev MCPOAuthdev.zop
Cloud cost, inventory and governance on AWS/Azure/GCP. Read-only by default, optional scoped writes
A paid remote MCP for AI SDK eval dashboard, built to return verdicts, receipts, usage logs, and aud
Free MCP tools: the only MCP linter, health checks, cost estimation, and trust evaluation.
Related MCP Servers
AlicenseAqualityAmaintenanceLets you use Claude Desktop, or any MCP Client, to use natural language to accomplish things on your Cloudflare account.21,5474,145Apache 2.0- FlicenseDqualityDmaintenanceEnables read-only assessment of AWS environments by inventorying resources, running security and operational checks, and generating actionable reports with cost analysis. Designed for contractors with support for assume-role authentication using external IDs.10-
- FlicenseAqualityCmaintenanceAI-powered code review tool that detects AI-generated code defects invisible to traditional linters — hallucinated packages, deprecated APIs, cross-file contradictions, hidden security anti-patterns, and over-engineering. Works as a standalone CLI, GitHub Action, or MCP server. Supports TypeScript, Python, Java, Go, and Kotlin. Free for individuals, no API key required.437-
- AlicenseNot gradedqualityCmaintenanceEnables natural language analysis of AWS costs, automated FinOps waste audits, and budget monitoring across multiple profiles and regions while keeping credentials secure locally.182MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ganakailabs/cloudeval-cli'
If you have feedback or need assistance with the MCP directory API, please join our Discord server