Open Source

API-dokumentation
för Agent-eran

Din OpenAPI-spec, omvandlad till tre utdata: token-optimerad llms.txt för AI-agenter, fullständig markdown för utvecklare och en semantisk HTML-landningssida. Ett kommando.

$ npm install swagent

Din dokumentation är byggd för människor.
Vem läser den nu?

LLM-agenter konsumerar också din API-dokumentation. Swagger UI, Redoc och traditionell dokumentation slösar tusentals tokens på navigeringselement, upprepade scheman och omständlig formatering. Dina AI-drivna integrationer betalar priset.

Fore: OpenAPI JSON
openapi.json ~65 KB
{
  "openapi": "3.0.2",
  "info": {
    "title": "Swagger Petstore",
    "version": "1.0.27"
  },
  "paths": {
    "/pet": {
      "put": {
        "tags": ["pet"],
        "summary": "Update an existing pet",
        "operationId": "updatePet",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Pet"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful operation",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Pet"
                }
              }
            }
          },
          "400": {
            "description": "Invalid ID"
          },
          "404": {
            "description": "Pet not found"
          },
          "422": {
            "description": "Validation exception"
          }
        },
        "security": [
          { "petstore_auth": ["write:pets"] }
        ]
      }
    }
  }
}
Efter: SWAGENT llms.txt
llms.txt ~16 KB
# Swagger Petstore - OpenAPI 3.0 v1.0.27

> A sample Pet Store Server based
> on the OpenAPI 3.0 specification.

Base: /api/v3

## Auth
- OAuth2: petstore_auth
- KEY: `api_key` in header

## Conventions
- `*` after field name = required
- All fields string unless noted
- Auth: JWT = Bearer, KEY = API Key
- Common errors: 400/401/404/500

---

## pet

### PUT /pet - Update an existing pet | OAuth2
Body: `{id:integer, name*, category:{id:integer, name},
  photoUrls*:[string], tags:[{id:integer, name}],
  status:available|pending|sold}`
200: `{id:integer, name*, category:{id:integer, name},
  photoUrls*:[string], tags:[{id:integer, name}],
  status:available|pending|sold}`
65 KB 16 KB ~75% farre tokens

One URL. Right format.

LLM agents just read your base URL. No special paths to discover, no extra configuration. Standard HTTP content negotiation delivers the right format automatically, HTML for browsers and token-optimized docs for agents.

> Tell your AI agent: "Learn https://api.example.com"
terminal
# Browser gets HTML
curl https://api.example.com/

# LLM agent gets token-optimized docs, same URL
curl -H "Accept: text/markdown" https://api.example.com/

# Check token count before downloading
curl -I -H "Accept: text/markdown" https://api.example.com/
# x-markdown-tokens: 1842

Content negotiation

Send Accept: text/markdown and GET / returns llms.txt instead of HTML. Agents read the same URL humans visit. Standard HTTP, zero discovery overhead.

#

Token budgeting

A HEAD request with Accept: text/markdown returns the x-markdown-tokens header with estimated token count. Agents check cost before downloading.

CDN-ready caching

Vary: accept ensures CDNs cache HTML and markdown variants separately. ETags are per-variant. No stale responses, no cache collisions.

Vad ar llms.txt?

En framvaxande konvention som ger AI-agenter en maskinlasbar ingangspunkt till din API-dokumentation, precis som robots.txt gjorde for sokmotorer.

?

Vad det ar

En ren textfil pa /llms.txt som beskriver ditt API i kompakt, token-effektiv notation. AI-agenter soker efter den pa samma satt som webblasare soker efter favicon.ico.

>_

Varfor det ar viktigt

LLMs slosar tusentals tokens pa att tolka HTML-dokumentation, Swagger UI-granssnittet och upprepade JSON-scheman. llms.txt ger dem exakt vad de behover till en brakdel av kostnaden.

/

Hur SWAGENT hjalper

SWAGENT laser din OpenAPI-specifikation och genererar automatiskt llms.txt med kompakt notation: typer inline, obligatoriska falt markerade, autentiseringsfortkortningar. Noll manuellt arbete.

Foreslagit av llmstxt.org som standard for AI-lasbart webbinnehall.

Dokumentation som tjänar alla

llms.txt För AI-agenter

Token-optimerad kompakt notation. Djup upplösning av $ref-, allOf-, oneOf-scheman. Autentiseringsförkortningar (JWT, KEY, OAuth2). Inbyggd ETag-caching och Cache-Control-headers.

to-humans.md För utvecklare

Fullständig markdown-referens med innehållsförteckning, parametertabeller, svarsscheman och autentiseringsguider. Läser OpenAPI 2.0 (Swagger) och 3.x, JSON eller YAML.

index.html För upptäckt

Semantisk HTML-landningssida med mörkt, ljust eller automatiskt tema. Noll JavaScript, enbart CSS-interaktioner. Visar endpoints, autentiseringsmetoder och länkar till alla format.

Byggt for team som levererar APIs

AI

AI-first SaaS

Exponera ditt API for agentkonsumtion. Lagg till llms.txt sa att AI-integrationer upptacker och anvander dina endpoints med minimal tokenkostnad.

MCP

MCP & Tool-use

Bygger du MCP-servrar eller Tool-use-integrationer? SWAGENT genererar det kompakta schema som agenter behover for att forsta dina verktyg omedelbart.

API

API Marketplaces

Gor ditt API upptackbart av AI-agenter som soker efter funktioner. llms.txt fungerar som ett maskinlasbart skyltfonster for dina endpoints.

DX

Developer Experience

Stort API-yta? Generera markdown-dokumentation, HTML-landningssidor och AI-optimerade format fran en enda OpenAPI-spec. Hall allt synkroniserat.

Hur det fungerar

1

Installera adaptern

npm install @swagent/fastify
2

Registrera pluginet

import { swagentFastify } from '@swagent/fastify';

app.register(swagentFastify, {
  baseUrl: 'https://api.example.com'
});
3

Five routes, content negotiation

GET /              → HTML landing page (default)
GET /              → llms.txt (Accept: text/markdown)
GET /llms.txt      → AI-optimized docs
GET /to-humans.md  → Markdown reference
GET /openapi.json  → Raw OpenAPI spec

Headers: Vary: accept, ETag (per-variant), x-markdown-tokens

Hur det llms.txt ser ut

llms.txt
# Pet Store API

> A sample API for managing pets and orders.

Base: https://api.petstore.io
Docs: [HTML](/) | [OpenAPI JSON](/openapi.json)

## Auth Methods
- JWT: `Authorization: Bearer <token>` via POST /auth/login
- API Key: `X-API-Key: <key>` header

## Conventions
- Auth: JWT = Bearer token, KEY = API Key, NONE = no auth
- `*` after field name = required, all fields string unless noted
- Common errors: 400/401/404 return `{success:false, error}`

---

## Auth

### POST /auth/login - Login | NONE
Body: `{email*, password*}`
200: `{token, expiresIn:number}`

## Pets

### GET /pets - List pets | JWT
Query: ?page:integer ?limit:integer ?species
200: `{data:[{id, name, species, age:number}], total:number}`

### POST /pets - Create pet | JWT
Body: `{name*, species*, age:number, vaccinated:boolean}`
200: `{id, name}`

Kompakt notation: * = obligatorisk, :type = icke-string, {...} = object. En LLM läser detta med minimal tokenkostnad och känner omedelbart till varje endpoint.

Testa själv

Klistra in en OpenAPI-specifikations-URL och förhandsgranska den genererade llms.txt-utdatan direkt.

Prova ett exempel:
llms.txt
# Din API-dokumentation visas här...

> Ange en OpenAPI-specifikations-URL eller klistra in JSON ovan,
> klicka sedan på Generera för att förhandsgranska llms.txt-utdatan.

Fungerar med din stack

Fastify

Plugin med fastify-plugin. Läser spec från @fastify/swagger automatiskt. Generering vid uppstart.

npm install @swagent/fastify

Express

Router middleware. Skicka din OpenAPI-spec, montera på valfri sökväg. Lazy caching vid första förfrågan.

npm install @swagent/express

Hono

Sub-app-instans. Nativ c.html(), c.text(), c.json(). Lättviktig och snabb.

npm install @swagent/hono

Elysia

Bun-nativt plugin for Elysia. Nativa Response-objekt med korrekta content types. Lazy caching vid forsta forfragen.

bun add @swagent/elysia

Koa

Returnerar en @koa/router-instans. Montera pa valfritt prefix, lazy caching. Fungerar med Koa 2+.

npm install @swagent/koa

h3 Nitro / Nuxt

h3-router kompatibel med Nitro och Nuxt-serverrutter. Lazy caching, setResponseHeader for content types.

npm install @swagent/h3

NestJS

Fullt NestJS-stod: SwagentModule.forRoot() med DI eller setup()-monster. Fungerar med NestJS 10+.

npm install @swagent/nestjs

Core

Fristaende generate()-funktion. Anvand i vilken Node.js-miljo som helst, serverlosa funktioner eller byggskript.

npm install @swagent/core

CLI

Generera fran valfri OpenAPI JSON/YAML-fil eller URL. Stodjer --watch for live-regenerering. Utdata till disk.

npx swagent generate ./spec.json

Vanliga fragor

Stods OpenAPI 2.0 (Swagger) och 3.x?

Ja. SWAGENT stoder bade OpenAPI 2.0 (Swagger) och OpenAPI 3.x-specifikationer. Parsern hanterar formaten swagger: "2.0" och openapi: "3.x" transparent.

Vad hander nar min API-specifikation andras?

Utdata atergenereras automatiskt. Med framework-adaptrar uppdateras dokumentationen vid omstart av servern. Med CLI, kor genereringskommandot igen. Ingen manuell redigering behovs.

Vilka autentiseringsscheman stods?

Alla OpenAPI-sakerhetsscheman: Bearer (JWT), API Key (header, query, cookie), OAuth2 (alla flodar), OpenID Connect och HTTP Basic/Digest. Varje schema mappas till kompakta fortkortningar i llms.txt.

Kan jag anpassa temat for HTML-landningssidan?

HTML-utdata ar en friestaende fil med inline CSS. Du kan overskriva stilar eller anvanda din egen mall. Det morka temat fungerar direkt utan nagon konfiguration.

Hur stor ar prestandapoverkan?

Nastan noll. Framework-adaptrar genererar dokumentation vid uppstart och cachar resultatet. Efterfoljande forfragan serverar statiskt innehall. CLI genererar filer till disk utan korningskostnad.

Kan jag inaktivera enskilda utdata?

Ja. Varje adapter accepterar konfiguration for att aktivera eller inaktivera specifika utdata (llms.txt, markdown, HTML, OpenAPI JSON). Generera bara det du behover.

Kan jag anvanda @swagent/core utan en framework-adapter?

Ja. @swagent/core ar ett friestaende paket som tar ett OpenAPI-spec-objekt och returnerar alla utdata som strangar. Anvand det i vilken Node.js-miljo som helst, serverlosa funktioner eller build-skript.

What is content negotiation and how does SWAGENT use it?

Content negotiation is a standard HTTP mechanism where the client tells the server what format it wants via the Accept header. With SWAGENT, GET / serves HTML by default, but when an LLM agent sends Accept: text/markdown, the same URL returns the llms.txt content. No special paths to discover, agents just read your base URL.

How does token estimation work?

Send a HEAD request with Accept: text/markdown to your root URL. The response includes an x-markdown-tokens header with the estimated token count, powered by estimateTokens from @swagent/core. Agents can check the cost before downloading the full document.

Redo att göra ditt API
agent-läsbart?

$ npm install swagent