Documentation · API
The portals, the MCP tools, and your integration all consume the same canonical API, defined in a single OpenAPI 3.1 contract. If you can see it in a portal, there is an operation for it.
Conventions
Every route, entity, enum, and error shape is defined in the OpenAPI 3.1 contract before it exists in code. The MCP tools are a projection of the same operations — nothing on any surface is off-contract.
Requests authenticate with JWTs issued by NERMO's identity provider and verified against its published keys. Humans get sessions through the portals; unattended integrations get service accounts with explicit permission keys and vessel scopes.
The server validates every request against the contract schema before your call reaches business logic — wrong types, missing fields, and out-of-range values are rejected with structured errors that name the offending field.
Write operations accept an idempotency key. Mint a UUID once per intent and resend it on retry: the API replays the original result instead of repeating the side effect, and a key reused with different arguments is rejected as a conflict.
Getting the spec. The full contract document is public — fetch it any time at api.nermo.io/openapi.json, no credentials needed. It is served down-converted to OpenAPI 3.0, so generators that do not read 3.1 yet consume it directly. Credentials and a real environment to hit ship with onboarding — request access and the integration pack comes with your verified account. Connecting an AI assistant instead? That path needs no SDK at all: see the MCP guide.
Documentation
The contract is already public. Get your operator verified and the rest of the integration pack is yours — credentials and a real environment to hit.