Developers & agents

# Salus Cloud developer and agent resources.

Salus runs team-built apps and agents under IT’s rules, so more teams can ship while IT stays in control. This page is the reference for the builders doing it, and for the agent working on your behalf. The interface is **MCP**: connect the Salus MCP server and your assistant can create projects, deploy from a repository, provision databases, read logs and metrics, and roll back releases, all within the roles and release rules your organization sets.

[Connect the MCP server ](https://salus.cloud/docs/mcp/)[OpenAPI spec](https://salus.cloud/openapi.json)

Predictable URLs

## Resource index

Every machine-readable document Salus Cloud publishes, at a stable path. All of them are listed in llms.txt too.

| Resource | URL | Format | What it is |
| --- | --- | --- | --- |
| MCP server descriptor | [/mcp.json](https://salus.cloud/mcp.json) | JSON | MCP registry `server.json` for the Salus MCP server — name, version and how to obtain it. |
| MCP tool catalog | [/mcp-tools.json](https://salus.cloud/mcp-tools.json) | JSON | All 52 tools the server exposes, each with its capability tier, plus the authorization model. Schema at `/mcp-tools.schema.json`. |
| OpenAPI specification | [/openapi.json](https://salus.cloud/openapi.json) | OpenAPI 3.1 | The public, unauthenticated discovery surface of salus.cloud. Also served as `/openapi.yaml`. |
| Documentation | [/docs/](https://salus.cloud/docs/) | HTML | Quickstart, projects, pipelines, deployments, databases, observability, billing — and the CLI. |
| MCP reference | [/docs/mcp/](https://salus.cloud/docs/mcp/) | HTML | Install the `salus` binary, run it as an MCP server, and choose how much access your assistant gets. |
| Authentication | [auth.salus.cloud/realms/salus/.well-known/openid-configuration](https://auth.salus.cloud/realms/salus/.well-known/openid-configuration) | OpenID Connect | OIDC discovery document. Authorization code flow with PKCE (S256); short-lived, refreshable tokens. |
| llms.txt | [/llms.txt](https://salus.cloud/llms.txt) | Markdown | What Salus Cloud is, what it does for agents, pricing, and an index of every page on this site. |
| llms-full.txt | [/llms-full.txt](https://salus.cloud/llms-full.txt) | Markdown | The complete prose of every page in one fetch, each chapter stamped with its source URL — the whole site without crawling it. |
| Sitemap | [/sitemap-index.xml](https://salus.cloud/sitemap-index.xml) | XML | Every indexable URL on salus.cloud. |

[Install scriptdownload.salus.cloud/install.shDetects your OS and architecture, installs the salus binary to /usr/local/bin.](https://download.salus.cloud/install.sh)[Claude Desktop extensiondownload.salus.cloud/salus-mcp.mcpbThe MCP server as a one-click .mcpb bundle — no terminal needed.](https://download.salus.cloud/salus-mcp.mcpb)

Two minutes

## Connect the Salus MCP server

One binary, one config block. There is no separate login step — the first time your assistant calls a Salus tool, it walks you through browser sign-in.

1 · Install

```
curl -fsSL https://download.salus.cloud/install.sh | bash
```

Prefer not to use a terminal? Install the [Claude Desktop extension](https://download.salus.cloud/salus-mcp.mcpb) instead.

2 · Point your assistant at it

```
{
  "mcpServers": {
    "salus": {
      "command": "/usr/local/bin/salus",
      "args": ["mcp"]
    }
  }
}
```

Shown for Claude Code (`.mcp.json`). OpenAI Codex, Cursor and OpenCode run the same `salus mcp` command — see the [configuration for each](https://salus.cloud/docs/guides/deploy-with-an-ai-agent/).

52 tools

## Scoped by what it can break

Every tool carries a capability tier. You pick how far your assistant reaches — Read-only, Standard, Operator or Full — when you set the server up, and you can narrow it to an explicit list of tools.

read

29

View only, no side effects

list\_projects, get\_app\_logs, get\_deployment\_metrics

write

9

Create or modify — additive, reversible

create\_project, create\_database, update\_project

operate

9

Act on running workloads

deploy\_repo, rollback\_deployment, set\_deployment\_offline

destructive

5

Delete — irreversible

delete\_project, delete\_database, delete\_space

**How access works.** An agent acts on behalf of the person who invoked it, using that person's own access — so anything that person cannot reach, the agent cannot reach either, and the agent needs no seat of its own. Roles are scoped by organization, space and project. Being explicit, because it matters when you evaluate us: an agent does not hold an identity separate from the human, so platform records name that person, not the agent. The tier preset above is a guardrail on the machine running the server — it decides which tools that server offers. Platform roles and permissions apply to every call regardless.

What can change, and how you'll know

## Versioning, deprecation and rate limits

Stated so you can integrate against these URLs without watching them. The same policy is machine-readable in /openapi.json under info.x-versioning, info.x-deprecation and info.x-rate-limits.

### Additive only, dated, and never silently removed

The documents on this page are versioned by date, not by URL path. Paths are stable and new fields may appear without notice; nothing is removed or renamed without first carrying a `Deprecation` header (RFC 9745) and a `Sunset` header (RFC 8594) for at least 90 days, with a `Link rel="successor-version"` pointing at the replacement. Nothing is deprecated today, so those headers are absent — their presence is the signal.

There is deliberately no `/v1/` prefix and nothing to negotiate on the way in. To tell one snapshot from another, read the `Salus-Discovery-Version` response header — it carries the same date as `info.version` in the OpenAPI document, so you can detect a change without refetching and diffing. The platform's own HTTP API is separate, versioned in its URL path, and not covered by this policy.

### No rate limits, and no rate-limit headers

Every URL in the resource index is a static file. Nothing is metered, so there are no `RateLimit` headers to read — we don't emit them, because a limit nobody enforces is a number you'd throttle against for no reason. Polling is safe. DDoS protection at the CDN may still refuse abusive volumes; those thresholds aren't published and aren't expressed as rate-limit headers.

Prefer caching anyway: `/mcp-tools.json` changes on CLI releases and the rest change on site deploys, not per request. MCP tool calls run against the platform API, which is a different surface with its own limits.

### Unknown paths return a real 404

Not a 200 with an error page. The body is negotiated from `Accept`: an RFC 9457 `application/problem+json` document with a machine-readable `code` and recovery URLs, markdown, or HTML. URLs here end in a trailing slash; an unslashed path 301s to the slashed form in one hop.

What isn't here

## So you don't go looking

Four things developers reasonably expect that we don't publish yet. We'd rather you know now than find out mid-integration.

### No public REST API contract

The platform is driven by a versioned HTTP API that the CLI and console use, but it is not publicly specified and carries no compatibility commitment — so it is not documented in `/openapi.json`, which covers the public discovery surface only. Use MCP or the CLI. If you need a supported REST contract, [tell us what you're building](https://salus.cloud/talk-to-sales/).

### No outbound webhooks

There is no webhook subscription API. To follow a build, poll `get_pipeline` after triggering a deploy; for organization-wide activity, read `list_organization_events`.

### No sandbox, and no API keys

There is no test or sandbox environment — every environment is a real one, so treat a Hobby deploy as production. And there is no key to generate: authentication is browser-based OAuth with PKCE, driven by the MCP server itself (`auth_login`, then poll `auth_status`). Signing up is self-serve and free, and new organizations earn up to $25 in starter credit: $5 on creating an organization, $5 on connecting a Git provider (GitHub, GitLab or Azure DevOps), $10 on connecting an AI assistant through the Salus MCP server and $5 on the first successful deploy, once per organization and once per person. Credits do not expire.

### A connected Git provider is required

Salus builds from a clone, so a connected GitHub, GitLab or Azure DevOps repository is needed before a project can be created or deployed. There is no archive-upload or image-only path, and Salus does not create the repository for you.

## Start with read-only. Widen when you trust it.

Install the CLI, connect it to your assistant, and give it the narrowest tier that gets the job done.

[Read the MCP docs ](https://salus.cloud/docs/mcp/)[Talk to our team](https://salus.cloud/talk-to-sales/)
