> For the complete documentation index, see [llms.txt](/llms.txt)

# Glotto — SDKs, docs, and MCP from one API spec

**Spec → SDKs · Docs · MCP**

**Spec in. Best-in-class SDKs, docs, and an MCP server — out.**

Glotto keeps your entire developer surface — idiomatic SDKs in 13 languages (mobile-first), a docs site you own, and a multi-mode MCP server — provably correct and in lockstep with your spec, forever.

The authored input is `petstore.openapi.yaml`: `operationId: listPets` names the call, and `nextCursorPath: next_cursor` tells the generated paginator where to find its next cursor.

## Built for what the others skip

**The wedge**

Where Stainless, Speakeasy, and Fern stop, Glotto keeps going.

### Machine-guaranteed correctness

Every regeneration is compile-verified and contract-tested across each language, drift-gated, and preserves your custom code — provably in lockstep with your spec.

### Mobile-first SDKs

A React Native / Expo spearhead plus Kotlin Multiplatform and native Android/iOS — the mobile targets no rival ships first-class.

### Deploy on your terms

Self-host or single-tenant, with managed release PRs across GitHub, GitLab, and Bitbucket — not a GitHub-cloud-only box.

## Three things, from one spec

**The output**

Every push regenerates all three, in lockstep with your API.

### SDKs

13 languages, mobile-first, with a hand-crafted feel and machine-guaranteed correctness — not generated boilerplate.

### Docs

A standalone Astro docs site you own — multi-language snippets, search, and an MCP-ready index.

### MCP server

Dual-mode (Code Mode + per-operation) so AI agents can drive your API safely.

## Push a spec. Merge to publish. Then keep being right.

**How it works**

Five steps take your spec to published SDKs. The sixth is the one that matters: every push after the first re-runs the whole pipeline, proves the result still compiles and still honours your contract in every language, and preserves the code you wrote by hand.

1. **API spec** — Point Glotto at an OpenAPI, AsyncAPI, or GraphQL document — a file, a URL, a git ref in another repo, or your own exporter command.
2. **Glotto IR** — Your spec normalizes to one canonical, byte-stable intermediate representation, so every language generates from the same reading of your API rather than from its own.
3. **Codegen** — Every declared target emits at once — SDKs across 13 languages, your docs site, and the MCP server — from that single IR.
4. **Verify** — Before anything opens, each SDK is compiled in its own real toolchain and run against a shared contract suite, so "it generated" and "it works" are not the same claim.
5. **Release PR** — A reviewable pull request lands on GitHub, GitLab, or Bitbucket — your repos, your review, your history. Nothing is force-pushed and nothing publishes itself.
6. **Every push after** — The loop. Regeneration is drift-gated against the committed output, your hand-written code survives via a three-way merge, and a breaking change is reported before it ships, not after.

## Migrating from Stainless?

**Switching costs, near zero**

Stainless is winding down its hosted platform. Glotto picks up where it leaves off — a superset of its SDK languages, the same Astro docs approach, and a multi-mode MCP server including Code Mode and dynamic tools. One command converts your `stainless.yml`.

- [Read the migration guide →](/docs/migrate-from-stainless)

## Ship the SDKs your users deserve.

One spec. 13 languages. Docs and MCP included.

- [Get started](/docs/getting-started)
- [Read the docs](/docs)

## Auto-paginated, typed, retried — in the idiom of each language.

This page renders emitted samples for every supported language. They are reproduced in full — emitted bytes, not hand-written prose — on [pagination](/docs/pagination/).

## What Codegen emits — authentication, in every language

This page renders emitted samples for every supported language. They are reproduced in full — emitted bytes, not hand-written prose — on [authentication](/docs/authentication/).

## What Verify catches — drift between your spec and the committed SDK

This page renders one artifact Glotto's own machinery emitted — one word changed in the spec — `summary: List pets` became `summary: List every pet`. It was emitted by renderDriftReport (@glotto/core-vcs) over packages/cli/tests/fixtures/drift-gate (files compared 81, out of sync 11), and is reproduced in full — real output, not hand-written prose — on [drift-detection](/docs/drift-detection/).

## Sections

- [Documentation](/docs/): Configuration reference, generated SDK guides, and the glotto.yml schema.
- [Changelog](/changelog/): Customer-facing changes to the generated SDKs, docs, and MCP server.
- [Engineering blog](/blog/): How the correctness engine is built, and what we learned building it.
