--allow-writes is set. Setup examples always include that flag. HTTP MCP lists writes when the identity has Admin (org_admin).
Timestamps in tool JSON are UTC (Zulu) RFC3339 and end in Z (for example 2026-09-04T04:23:00Z). If you name a calendar day, clock time, or age, convert that UTC instant to the local machine’s timezone first. Do not say “today” or “yesterday” from the UTC date digits. That calendar day can be a day ahead of local time.
List tools return a page (default 20, max 100) plus has_more. They do not keep fetching until the full set is loaded. If has_more is true, tell the user there are more results and only pass offset=next_offset when they need the next page.
For prompts to paste into a client, see Sample queries. To connect, see Setup. For skills covering specific tasks, see Skills.
Catalog
Organization
Org-scoped tools readX-Nuon-Org-ID on that request. whoami and list_orgs work without the header. whoami returns the account, the org on that request, and an org count. list_orgs returns only orgs the account belongs to. It is paged and accepts query to match a name or id.
The stdio proxy sends the CLI config org as X-Nuon-Org-ID. Pass x_nuon_org_id on a tool call to use a different org for that request. The proxy removes x_nuon_org_id before forwarding and does not store it. Direct HTTP clients set X-Nuon-Org-ID themselves.
Install summary
install_summary is the entry point for investigating or updating one install. Do not use get_install for that request. If the user did not name an install, ask whether to use the CLI-selected install or pick one from list_installs, and wait for the answer. When no install is selected, go straight to the list. A named install skips that question. Render the summary like the install detail page, in this order: identity, applied commit (and the expected commit when it differs), each component, health, any failing workflows, then inputs grouped by name with their redacted values. Present next_actions after that page and wait. Health, Resources, and Deployments match the detail-page tabs. Inspect failing workflow appears only when a workflow is failing.
The Make an update choice contains a second menu. Its choices prepare an existing write flow by loading current inputs or available IAM roles; opening either menu does not mutate the install. After an inspection, offer Back to install summary or Do nothing. Back calls install_summary again.
App config
get_app_config_schema returns the file schema. When validation is done for this MCP server, use the Nuon CLI binary that started it, for example nuon-dev apps validate when the server command is nuon-dev, and the same -C value when that server was started with -C. That match is only for local CLI work done for the MCP server. There is no MCP tool that accepts config file contents.
Fallback
When you need the HTTP API calls you can make, fetch the OpenAPI schema at{api host}/oapi/v3 (for example https://api.nuon.co/oapi/v3). Use an MCP tool when one covers the operation. When none does, use the Nuon CLI that started this server, including the same -C value. When the CLI has no command for it, use nuon api --raw if that command is already available. Ask before installing the api extension if missing. Call the HTTP API with curl only as a last resort. The stdio proxy repeats this in its server instructions, with the binary, -C, and schema URL filled in.
Writes
Mutating tools are prefixed withWRITE OPERATION: in their descriptions. The stdio proxy hides them unless you pass --allow-writes. The identity still needs Admin (org_admin), not Read-only.
Destructive tools
These tools carry the MCPdestructiveHint annotation. The annotation is advisory: your client decides whether to prompt.
The two deprovision calls are rejected until the agent passes
confirm: true, and their descriptions tell it to ask you first. plan_only: true is exempt, since nothing is applied. You cannot turn this off: confirm is an argument on those two tools, not a proxy flag or a client setting.
Write tools that take role use an IAM role name from the install’s stack. Call list_available_roles first (with the matching operation_type / principal_type) and pass a returned name, or omit role to use the default. A role the install cannot assume is rejected before any workflow starts, and the error lists the names that are available.