Sign in, upload a spec, and ship a typed SDK in one session.
Ajolla turns an OpenAPI document into three things: a typed TypeScript SDK, a documentation site, and a Model Context Protocol (MCP) server. This guide walks through every step from creating an account to downloading the first generated zip, and ends with a checklist you can apply on every subsequent regeneration.
Before you start
- An OpenAPI document (3.0, 3.1, or Swagger 2.0) in YAML or JSON, up to 25 MB.
- A web browser. There is no CLI or local install required.
- An email address, Google account, or GitHub account for sign-in.
- Node.js 20+ on your machine if you plan to install the downloaded SDK locally (optional).
Step-by-step
- 01
Create an account
Open
/sign-inand authenticate with email (or Google / GitHub, where enabled). The email path sends a single-use magic link; OAuth paths redirect to the provider and back to/auth/callback.On first sign-in, a workspace is created automatically; nothing else needs to be configured.
- 02
Create a project
Go to
/projects/newand give the project a clear, human-readable name. The slug used in URLs and the npm package name in the generated SDK are derived from this value.A project corresponds to one API contract. If you operate the same API in multiple environments, create one project per environment so the base URLs and credentials stay separated.
- 03
Upload a spec
From the project page, click Upload. You can drop a local file or paste a public HTTPS URL. The URL path is restricted to public hosts only — internal IP ranges and redirects to internal IPs are blocked at the fetch layer.
The parser stores the raw document, a parsed intermediate representation, an endpoint inventory, and any validation issues. You can re-upload at any time; only the most recent spec drives the generators.
- 04
Review the endpoint inventory
Visit
/projects/<slug>/endpointsto see every operation, grouped by tag and method. Validation issues raised during parsing appear in the right-hand sidebar.Resolve structural issues (missing operationIds, undocumented responses) before relying on the generated artifacts in production — they directly shape the SDK’s function names and the MCP server’s tool registry.
- 05
Preview the generated outputs
Three preview routes render live from the parsed spec — no extra generation step is required to inspect them:
- /projects/<slug>/sdk — TypeScript SDK file tree and source viewer.
- /projects/<slug>/docs — browsable docs site (also downloadable as a self-contained zip).
- /projects/<slug>/mcp — MCP tool registry with the safety classification per tool.
- 06
Regenerate and download
From the SDK or MCP preview, click Regenerate. A server action generates the package, writes a zip to private storage, and records a row in the generation history. Click Download zip to receive a short-lived signed URL.
The downloaded package is owner-scoped and the URL expires in 60 seconds.
- 07
Install the SDK locally
bashunzip my-api-typescript-sdk.zip -d my-api-sdk cd my-api-sdk npm install npm run build npm pack # yields my-api-sdk-1.0.0.tgz that you can install in any project: # npm install /path/to/my-api-sdk-1.0.0.tgzThe package is plain TypeScript with no required runtime dependencies beyond
fetch. - 08
Run the MCP server locally
bashunzip my-api-mcp-server.zip -d my-api-mcp cd my-api-mcp npm install export API_BASE_URL="https://api.example.com" export API_KEY="sk_…" npm run startWire the server into an MCP-compatible client (Claude Desktop, Cursor, etc.) by registering its stdio command. Read the generated
README.mdfor the exact client snippet.
Use the SDK
typescriptimport { PetstoreClient } from "petstore-sdk"; const client = new PetstoreClient({ baseUrl: "https://api.example.com", apiKey: process.env.API_KEY!, }); const pet = await client.pets.create({ name: "Otto", tag: "dog", }); // Every request and response is typed against the spec.
What each route does
- /dashboard
- Workspace overview — recent projects, recent activity, and quick actions.
- /projects
- Every project you own, with the latest spec metadata at a glance.
- /projects/<slug>
- Project detail — spec metadata, generation history, and the per-artifact entry points.
- /projects/<slug>/upload
- File or URL ingestion. URL ingestion is SSRF-resistant by design.
- /projects/<slug>/endpoints
- Inventory of every operation in the latest spec, with validation issues surfaced inline.
- /projects/<slug>/sdk
- TypeScript SDK preview, regenerate button, and download.
- /projects/<slug>/mcp
- MCP server preview, tool registry (safe / destructive / admin / disabled), regenerate, and download.
- /projects/<slug>/docs
- Browsable docs site rendered from the parsed spec, plus a downloadable static-HTML zip you can host on any static host.
Pre-release checklist
- Re-run the regenerate step after any spec change. Do not hand-patch generated files.
- Review the MCP tool registry and explicitly allowlist destructive or admin tools before exposing the server to an autonomous agent.
- Confirm the SDK’s base URL, auth scheme, and error model match real backend behavior, especially pagination and validation errors.
- Pin the spec revision that produced the artifact and record it in the release notes for the consuming repo.
- Treat any spec that contained a live credential or example secret as compromised; rotate the credential.
Troubleshooting
- Upload failed
- Check the file is valid YAML or JSON and under 25 MB. The endpoint page’s issue list highlights structural errors (missing required fields, unresolvable refs).
- URL fetch blocked
- We resolve and inspect every IP a URL points to. Hosts in private, loopback, link-local, or carrier-grade NAT ranges are rejected, as are redirects that hop into those ranges. Use a public HTTPS URL.
- Magic link did not arrive
- Check your spam folder. Each email + IP pair is rate-limited; if you hit the limit, the form tells you when to retry. Re-using a magic link more than once invalidates the token.
- Generation says “already running”
- A concurrent regenerate request is in flight. The action coalesces duplicate clicks so they don’t race; the existing run will complete and the preview will refresh.
- SDK, docs, or MCP zip 404
- Download URLs are signed and expire after 60 seconds. Click Download zip again to mint a fresh URL.
Next steps
- OpenAPI readiness guide — Patterns that make the generated outputs materially higher-quality.
- Shipping SDKs and MCP servers — The operational checklist before exposing artifacts in production.
- Using the CLI — Skip the dashboard — log in, sync, and trigger generations from the terminal.
- Security policy — The boundaries you are operating inside.