Skip to main content
This page is for developers building scripts, internal tools, or agents on top of CloudEval.

Start with safe defaults

Use these defaults unless you have a good reason not to:
  • cloudeval capabilities --format json
  • cloudeval doctor --format json
  • cloudeval doctor --mcp --format json before MCP client setup
  • --format json
  • --non-interactive
  • --profile <name>
  • --print-url --no-open
  • stored cloudeval login --headless auth, or --machine when service-principal credentials are configured
  • --output <file> when the result must be persisted
These defaults reduce ambiguity and make the CLI easier to compose with other systems.

Stdout and stderr contract

For machine-readable commands:
  • stdout is the data channel
  • stderr is for prompts, warnings, auth flow text, and browser-open messages
Do not parse terminal UI output. If you need automation, use explicit subcommands such as setup, config, doctor, status, models, sessions, projects, reports, ask, agents, connections, billing, validate, rules, or open.

CLI profiles for agents

Use named profiles when multiple agents, environments, or workspaces share the same host. A profile can hold default CloudEval service URL, app URL, project, model, and output preferences.
Then pass the same profile to automation commands:
Explicit flags still override profile defaults, so scripts can pin a project or model for one run without changing the stored profile.

Agent Profiles

Agent Profiles are CloudEval-owned reviewer roles. They help the same project evidence produce different kinds of answers without every client rebuilding its own prompt logic. Use Agent Profiles when the question is not just “what did CloudEval find?” but “who is reading this, and what decision are they trying to make?”
  • Architecture reviews topology, dependencies, blast radius, availability, and Well-Architected tradeoffs.
  • Cost reviews spend drivers, waste signals, savings confidence, and cost validation checks.
  • Triage reviews likely failure domains, impact, containment, and rollback signals.
  • Remediation turns findings into ordered fixes with owners, dependencies, rollout cautions, and validation checks.
The public profile ids are architecture, cost, triage, and remediation. Architecture includes the Well-Architected review lens, so there is no separate Well-Architected Agent Profile.
Agent Profiles work across the web app, CLI, and MCP. CloudEval applies the profile on the backend, so clients do not need to maintain separate prompt templates or local fallback logic.
Expected output from agents run:
Agent Profiles are distinct from local CLI config profiles:
  • An Agent Profile is the reviewer role sent to CloudEval: architecture, cost, triage, or remediation.
  • A CLI config profile is local machine configuration: CloudEval service URL, app URL, default project, model, output format, and local hooks.

How Agent Profiles behave

CloudEval owns the profile catalog. Chat, CLI, and MCP all use the same public profile ids, labels, starter prompts, capability hints, and server-side answer contracts.

How profiles shape a run

Agent Profiles do not create a separate product workflow. They shape the normal CloudEval review path:
  1. The user chooses architecture, cost, triage, or remediation.
  2. CloudEval keeps the selected profile separate from selected resources.
  3. CloudEval applies the profile’s focus, starter prompt, response style, output contract, and tool priorities.
  4. The run uses the same project evidence, grounding rules, and safety checks as normal chat.
  5. The final answer is shaped by the selected role without overriding user intent, accuracy, or citation expectations.
No selected Agent Profile means the normal chat path remains in control. CloudEval does not treat Default as a profile id.

Same question, different lens

Use the same plain-English question and choose a different profile when the decision context changes.
Expected answer shape: For example, a generic question such as “Can we trust this readout?” should not produce four copies of the same response:
  • architecture should explain whether the topology and dependency evidence is enough to trust the architecture conclusion.
  • cost should explain whether the spend or savings evidence is strong enough to trust the financial conclusion.
  • triage should explain whether the evidence is enough to act during an incident or investigation.
  • remediation should explain whether the evidence is strong enough to assign work, sequence fixes, and validate completion.

Web app report prompts

Report prompt chips in the web app can launch chat with a profile already selected. The visible chat message should stay short, such as:
Report details, evidence references, tab state, and prompt metadata should travel as chat context, not as a large visible message. That keeps the conversation readable while preserving grounding. When a prompt comes from a report, the selected profile should match the report area: For report-triggered prompts, prefer one-shot controls: apply the profile, mode, project, and hidden context to that request, then return the chat input to the user’s previous selection.

Starter prompts by project source and mode

When a user launches a profile from the Developer workspace or runs cloudeval agents run <profile-id> without a prompt, CloudEval picks a starter prompt based on the selected project source and selected mode. CloudEval can expose multiple starter variants for each source/mode pair. The Developer workspace randomizes the visible launch prompt when opening a profile. The CLI stays deterministic so scripts are repeatable and uses the first matching variant when no explicit prompt is passed. Pass an explicit prompt when you want the profile behavior but not the default starter text:

MCP tools

MCP-compatible agents can use the same catalog without shelling out to the CLI. The public tools are:
  • agent_profiles_list
  • agent_profiles_get
  • agent_profiles_run
Use MCP when the agent already has a tool-calling loop and needs CloudEval as a live evidence source. Use the CLI when the workflow is a script, CI job, or terminal session.

Common mistakes

  • Do not send default as an Agent Profile id. Leave the profile selector empty for the normal chat flow.
  • Do not create a separate Well-Architected profile in integrations. Use architecture.
  • Do not confuse --profile codex with agents run cost. The first selects local CLI config. The second selects CloudEval reviewer behavior.
  • Do not paste long report contracts into visible chat messages. Send the short question as the message and attach report details as context.
  • Do not assume local hooks are CloudEval-hosted automation. Hooks run on the CLI host only and can be bypassed with --no-hooks.

Local CLI hooks

Local hooks are opt-in commands stored in the active CLI config profile. They run on the local machine only; CloudEval does not store, execute, or report hook runs in v1. Supported hook events:
  • cli.command.before
  • cli.command.after
  • cli.command.error
  • agent_profile.run.before
  • agent_profile.run.after
  • agent_profile.run.error
Use --no-hooks on supported commands to bypass local hook execution for one run. Hook output goes to stderr so JSON and NDJSON stdout remain parseable.

MCP server for agents

Use cloudeval mcp serve when your agent framework already supports MCP and you want CloudEval as a live tool server instead of a shell command wrapper. Check local MCP discovery first:
Example client configuration:
CloudEval can also generate setup guidance for common clients:
mcp setup --toolset accepts all, readonly, projects, reports, or billing. Use mcp serve --toolset graph or --toolset validation when the agent needs those surfaces. Use generic for MCP-compatible clients that expect an mcpServers JSON entry. For Ollama-powered agents, configure the MCP host launched by Ollama with that generated CloudEval stdio entry. Use focused toolsets when an agent only needs part of the CloudEval surface:
Important rules:
  • The server uses stdio.
  • Authenticate with stored cloudeval login credentials, stored cloudeval login --headless credentials, or --machine.
  • Run login before starting mcp serve; stdin is reserved for MCP protocol messages.
  • Treat MCP tool results as the same CloudEval data contract you would expect from the CLI: stable envelopes, returned IDs, and explicit errors.
  • Prefer focused MCP toolsets for assistants that should only inspect projects, reports, billing, or read-only data.
  • MCP clients that support resources and prompts can discover CloudEval capabilities, project context, billing summaries, latest reports, and review-oriented prompt templates.
  • Agent Profile MCP tools are agent_profiles_list, agent_profiles_get, and agent_profiles_run; they use the same architecture, cost, triage, and remediation ids as the CLI.

Graph and validation automation

Use graph commands for project intelligence that should not require opening the workspace UI:
Use template validation commands before deployment-oriented automation:
--parameters-file is optional for both validation and parsing. Agents should pass it when a parameter file is present and omit it when defaults are enough. Use rules search or rules show to resolve check ids, then pass repeatable --rule values when an automation should run only specific checks. Use --wait for deployment gates that need final validation results instead of only a queued job id, and include --wait-timeout so the gate fails instead of hanging indefinitely. Add --progress stderr when a human should see queued/running/completed status while the command waits. Progress is written to stderr; final JSON remains on stdout for automation. Completed progress includes failing check/test details when the backend returns message, recommendation, severity, and location fields. Worker-local temp file paths are replaced with the submitted template filename so automation logs do not point at inaccessible backend files. Do not block automation solely because a parameters file is missing.

Stable JSON envelope

CloudEval uses a stable JSON envelope for machine-readable success and error responses:
Some commands also include fields such as:
  • warnings
  • filesWritten
  • traceId
When you use ndjson, arrays are emitted one JSON object per line instead of one wrapped array payload.

Ask mode vs agent mode

CloudEval supports two practical usage patterns:
  • ASK mode is best for one grounded answer, usually through cloudeval ask.
  • AGENT mode is best for multi-step workflows that may inspect projects, run reports, open deeplinks, or create CloudEval artifacts when explicitly requested.
Important guardrails:
  • ASK flows should stay read-first and should not silently create or change CloudEval artifacts.
  • AGENT workflows can be broader, but they still need explicit intent before taking write actions.
  • Do not claim CloudEval mutates customer cloud infrastructure unless a separately verified feature explicitly supports that behavior.

Session continuity for agents

Successful ask runs create local, profile-scoped session history. Use it when an agent needs to find or continue recent CloudEval work on the same machine.
Rules for session use:
  • Session history is local to the machine and scoped by profile.
  • Use sessions search before assuming a thread ID.
  • Use sessions rename to make important threads easy to find later.
  • Use ask --thread only when a one-shot follow-up should stay attached to an existing conversation.

Grounding model

CloudEval answers are expected to be grounded in the data the product actually has access to. That can include:
  • project metadata
  • connection metadata
  • ARM or Bicep-derived ARM template content
  • resource graph and diagram relationships
  • saved cost reports
  • saved architecture or Well-Architected reports
  • report history and trend data where available
  • pricing and product metadata
  • chat thread history
  • local CLI session history for one-shot ask runs
If the evidence is missing, the right behavior is to say what is missing and suggest the next useful command.

Authentication and permissions

  • cloudeval login uses a browser-based login flow.
  • cloudeval login --headless uses a device-code flow for headless sessions.
  • Browser-based CLI login is restricted to loopback redirect targets on the local machine.
  • Use cloudeval login --headless for SSH, containers, or remote terminals.
  • Use stored login state or --machine when you run cloudeval mcp serve.
  • Always use IDs returned by CloudEval responses. Do not guess project, report, connection, or thread IDs.

Practical limits

  • Azure is the primary supported provider today.
  • ARM JSON is the strongest current IaC path.
  • AWS and GCP should not be treated as full-parity live sync or reporting paths unless current capabilities confirm it.
  • Diagram freshness depends on the latest successful import or sync.
  • Cost outputs can be estimates, not final billing truth.
  • Architecture and security findings are evaluations, not compliance attestations.
  • Some browser workflows are still easier or only available in the web app.

Verification before production use

Before shipping a new integration:
  1. Run cloudeval capabilities --format json.
  2. Run cloudeval doctor --format json for the profile or environment you will use.
  3. Run cloudeval doctor --mcp --format json if an MCP client is part of the workflow.
  4. Test the exact commands you plan to automate with --format json --non-interactive.
  5. Confirm the target project, report, connection, or thread IDs come from CloudEval output.
  6. Check that your workflow handles auth-required, service-unavailable, and not-found failures cleanly.

Next step

Use llms.txt and llms-full.txt for the public context files, or CLI command reference for the exact command groups and flags.
Last modified on July 3, 2026