# DADL: REST-APIs als MCP-Tools in YAML beschreiben

> DADL ist ein YAML-Format, das jede REST-API als MCP-Tools beschreibt — 30 Zeilen ersetzen einen ganzen MCP-Server. Dokumentiert Schema, Auth-Typen, Composites.

Canonical: https://www.toolmesh.io/de/dadl/

30 Zeilen DADL ersetzen einen ganzen MCP-Server. DADL (Dunkel API Description Language) ist ein YAML-Format, das REST-APIs deklarativ als MCP-Tools beschreibt — kein Custom-Code, keine Runtime, kein Deployment, keine Wartung.

```
Vorher:    Claude → ToolMesh → MCP Server → REST API
Mit DADL:  Claude → ToolMesh → REST API (via .dadl-Datei)
```

## Warum DADL?

Für jede REST-API bauen Entwickler heute einen dedizierten MCP-Server — Hunderte von Node.js/Python-Projekten auf GitHub, die alle das gleiche Muster wiederholen: HTTP-Client + JSON-Schema + Tool-Registrierung. Ein MCP-Server ist strukturell immer eine Teilmenge der API, die er wrapt.

DADL ersetzt das durch eine einzige YAML-Datei.

## LLM-native Erstellung

DADL-Dateien werden nicht von Hand geschrieben — sie werden von LLMs generiert. Ein Prompt wie *„Erstelle eine DADL für die Hetzner Cloud API — Server auflisten, erstellen, löschen und Power-Aktionen"* reicht aus. Damit ist DADL das erste API-Beschreibungsformat, das KI-nativ erstellt und KI-nativ konsumiert wird.

Besuche [dadl.ai](https://dadl.ai) für die vollständige Spezifikation, Registry und How-to-Guides.

## Format-Übersicht

| Feld | Pflicht | Beschreibung |
|------|---------|--------------|
| `spec` | ja | URL der DADL-Spezifikation |
| `backend.name` | ja | Eindeutiger Backend-Bezeichner (Slug) |
| `backend.type` | ja | Immer `rest` |
| `backend.base_url` | ja | Basis-URL für API-Requests |
| `backend.auth` | ja | Authentifizierungskonfiguration |
| `backend.tools` | ja | Map der Tool-Definitionen |
| `backend.defaults` | nein | Standard-Header, Pagination, Fehler, Response |
| `backend.types` | nein | Typ-Definitionen (JSON-Schema-Subset) |
| `backend.composites` | nein | Serverseitige Multi-Endpoint-Tools |

## Authentifizierungstypen

| Typ | Beschreibung |
|-----|--------------|
| `bearer` | Token im Authorization-Header |
| `basic` | Base64-kodierter Username:Passwort |
| `oauth2` | Client-Credentials-Flow mit Token-Caching |
| `session` | Login → Token extrahieren → bei Requests injizieren → Auto-Refresh |
| `apikey` | Key in Header oder Query-Parameter |

## Pagination-Strategien

| Strategie | Beschreibung |
|-----------|--------------|
| `cursor` | Cursor-basiert (Stripe, Slack) |
| `offset` | Offset-basiert |
| `page` | Seitennummer-basiert |
| `link_header` | RFC 8288 Link Header (GitHub) |

Pagination ist standardmäßig `auto` — ToolMesh ruft alle Seiten transparent ab. Mit `expose` steuert das LLM die Pagination über Code Mode.

## Response-Transformation

- `result_path` — JSONPath zur Extraktion des relevanten Teils
- `transform` — jq-Filter zur Reduktion/Restrukturierung
- `max_items` — Array-Begrenzung gegen Context-Overflow
- `allow_jq_override` — LLM kann Ad-hoc-Filter übergeben

## Composite Tools

Serverseitiges TypeScript für Multi-Endpoint-Orchestrierung:

- Zugriff auf `api.*` (alle Tools des Backends) und `params` (Input)
- Sandboxed: kein `fetch()`, kein `require()`, kein Dateisystem-Zugriff
- Maximal 50 `api.*`-Aufrufe pro Ausführung, 120s Timeout
- Jeder interne Aufruf wird einzeln im Audit-Trail erfasst

## Beispiel

```yaml
spec: "https://dadl.ai/spec/dadl-spec-v0.1.md"
backend:
  name: github
  type: rest
  base_url: https://api.github.com
  auth:
    type: bearer
    credential: github_token
  defaults:
    headers:
      Accept: application/vnd.github+json
    pagination:
      strategy: link_header
      mode: auto
  tools:
    list_repos:
      method: GET
      path: /user/repos
      description: "List repositories for the authenticated user"
      params:
        sort:
          type: string
          enum: [created, updated, pushed, full_name]
```

## Mehr erfahren

- [DADL-Spezifikation](https://dadl.ai/specs) — vollständiges Spezifikationsdokument
- [DADL Registry](https://dadl.ai/browse) — verfügbare API-Definitionen durchsuchen
- [How to Write a DADL](https://dadl.ai/howto/write-a-dadl) — Schritt-für-Schritt-Anleitung
