NERMO

Documentation · API

One contract behind every surface.

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.

OpenAPI 3.1OAuth bearer authValidated server-side

Conventions

Four things every integration can rely on.

Contract-first, everywhere

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.

OAuth bearer tokens

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.

Validated at the door

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.

Idempotent writes

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

Build against the contract.

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.