GUIDE · GETTING STARTED

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

  1. 01

    Create an account

    Open /sign-in and 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.

  2. 02

    Create a project

    Go to /projects/new and 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.

  3. 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.

  4. 04

    Review the endpoint inventory

    Visit /projects/<slug>/endpoints to 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.

  5. 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.
  6. 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.

  7. 07

    Install the SDK locally

    bash
    unzip 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.tgz

    The package is plain TypeScript with no required runtime dependencies beyond fetch.

  8. 08

    Run the MCP server locally

    bash
    unzip 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 start

    Wire the server into an MCP-compatible client (Claude Desktop, Cursor, etc.) by registering its stdio command. Read the generated README.md for the exact client snippet.

Use the SDK

typescript
import { 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&rsquo;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 &ldquo;already running&rdquo;
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

Getting started with Ajolla