Entwickler
Maschinenlesbarer Zugang zu KONDEVS: der MCP-Server, Seiten als Markdown, Feeds und die Content API. Fehler, Limits und Versionierung sind dokumentiert.
KONDEVS ist ein Beratungsunternehmen für Integration, BPM und KI. Diese Website ist so gebaut, dass KI-Agenten sie ebenso lesen und nutzen können wie Menschen: Alles, was hier beschrieben ist, ist in Betrieb, und für das meiste brauchen Sie keinen Schlüssel.
Schnellstart: ohne Schlüssel
Listen Sie die Tools des MCP-Servers auf und durchsuchen Sie dann die Artikel:
curl -s https://www.kondevs.com/mcp -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://www.kondevs.com/mcp -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_articles","arguments":{"query":"webMethods","limit":3}}}'
Lesen Sie jede Seite als Markdown oder listen Sie die HTTP-Endpunkte auf:
curl -s https://www.kondevs.com/services/eai-integration/ -H "Accept: text/markdown"
curl -s https://www.kondevs.com/api/
Öffentliche Schnittstellen
| Schnittstelle | Adresse | Zugang | Was sie liefert |
|---|---|---|---|
| MCP-Server | POST /mcp, Server Card server-card.json | ohne Schlüssel | JSON-RPC 2.0 über Streamable HTTP. Tools: search_articles, get_article, list_services, get_company_info. |
| A2A-Agent | POST /api/a2a, Agent Card agent-card.json | ohne Schlüssel | message/send: Fragen zu KONDEVS und zum Content Hub. |
| Markdown | jede Seite | ohne Schlüssel | Senden Sie Accept: text/markdown: YAML-Frontmatter und der Inhalt der Seite, ohne Navigation und Fußzeile. Eine unbekannte Adresse antwortet auch in Markdown mit 404. |
| Feeds | feed.xml (RSS), feed.json (JSON Feed) | ohne Schlüssel | Die 50 neuesten deutschsprachigen Artikel im Volltext: das Wichtigste in Kürze, Text, häufige Fragen, Quellen. |
| Leitfäden zur Website | llms.txt, llms-full.txt, sitemap.xml | ohne Schlüssel | Was die Website enthält, wofür sie sich eignet, alle Seiten. |
| API-Beschreibungen | openapi.json, api-catalog, /api/ | ohne Schlüssel | OpenAPI 3.1, der Katalog nach RFC 9727 und ein JSON-Index aller Endpunkte. |
| Discovery | ai-catalog.json, Agent Skills | ohne Schlüssel | Der ARD-Katalog und der Index der Agent Skills. |
| Betriebsstatus | GET /api/health | ohne Schlüssel | Liveness-Probe. |
Content API für Publishing-Partner
Die Content API veröffentlicht, aktualisiert und entfernt Artikel im Content Hub. Sie dient Content-Partnern wie der Plattform VISIBILIO; eine offene Self-Service-API ist sie nicht.
- API-Schlüssel. Eine Selbstregistrierung gibt es nicht. KONDEVS vergibt Schlüssel an geprüfte Partner: Schreiben Sie an info@kondevs.com und nennen Sie Ihre Organisation, den Zweck der Integration, das erwartete Volumen und den benötigten Scope (
content:readodercontent:write).GET /api/oauth/registerliefert dieselben Hinweise als JSON. - Authentifizierung. Senden Sie
Authorization: Bearer <key>, oder tauschen Sie den Schlüssel per OAuth 2.0client_credentialsüberPOST /api/oauth/tokengegen ein Token, das eine Stunde gilt (ES256, Schlüssel unter jwks.json). Die vollständige Anleitung steht in auth.md. - Endpunkte.
GET /api/content/catalog,POST /api/content/,PUT /api/content/{slug},DELETE /api/content/{slug}und das öffentlicheGET /api/content/version. Schemas und Beispiele stehen in openapi.json. - Testen ohne Nebenwirkungen. Eine separate Sandbox-Umgebung gibt es nicht.
POST /api/content/?dry_run=1(oder"dry_run": trueim Body) durchläuft Authentifizierung, Limits und die vollständige Validierung und speichert nichts; so testen Sie einen Payload gefahrlos. Die Antwort zeigt, was angelegt würde:slug,url,status_afterundexists, wenn der Slug bereits vergeben ist (ein echter POST würde mit 409 antworten). - Inhaltliche Hinweise. Die Antwort auf ein erfolgreiches Anlegen, Aktualisieren oder einen Dry Run kann
warningsenthalten: Hinweise nach den AEO-Regeln für den Artikeltext (ein relatives Datum, ein Superlativ ohne Quelle im selben Satz, keine Antwort in den ersten 60 Wörtern, ein Abschnitt, der mit einem Rückverweis beginnt, weniger als drei Fragen aus Käufersicht). Es sind nur Hinweise: Der Artikel wird trotzdem gespeichert, und ein einwandfreier Text löst keine aus. - Sichere Wiederholungen. Senden Sie mit
POST /api/content/einenIdempotency-Key-Header: Eine Wiederholung mit demselben Schlüssel und demselben Body erhält 24 Stunden lang erneut die erste Antwort (markiert mitIdempotent-Replayed: true); derselbe Schlüssel mit einem anderen Body wird mit 422 abgelehnt.PUTundDELETEsind per Definition idempotent.
curl -s -X POST "https://www.kondevs.com/api/content/?dry_run=1" \
-H "Authorization: Bearer $KONDEVS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1c0b8e-2d4a-4f7e-9a51-3c2e8d7b1a90" \
-d @article.json
Alle Endpunkte
Dieselbe Liste wie GET /api/ und die Pfade in openapi.json: Alle drei entstehen aus einer einzigen Tabelle.
| Endpunkt | Zugang | Zweck |
|---|---|---|
GET /api/ | ohne Schlüssel | Der API-Index: jeder Endpunkt mit Methode, Zugang und Zweck, und wo die Dokumentation steht. |
GET /api/health | ohne Schlüssel | Liveness-Probe. |
POST /mcp | ohne Schlüssel | MCP-Server (JSON-RPC 2.0, Streamable HTTP): Artikel suchen und lesen, Leistungen auflisten, Fakten zum Unternehmen. |
POST /api/a2a | ohne Schlüssel | A2A-Agent (JSON-RPC 2.0, message/send). |
GET /api/content/version | ohne Schlüssel | Version der Content API und die Rendering-Fähigkeiten dieser Website. |
GET /api/content/catalog | Token (content:read) | Veröffentlichte Artikel, Kategorien und Tags. |
POST /api/content/ | Token (content:write) | Einen Artikel veröffentlichen; dry_run validiert, ohne zu speichern; akzeptiert Idempotency-Key. |
PUT /api/content/{slug} | Token (content:write) | Einen Artikel ersetzen. |
DELETE /api/content/{slug} | Token (content:write) | Die Veröffentlichung eines Artikels zurücknehmen. |
POST /api/oauth/token | Client-Zugangsdaten | OAuth 2.0 client_credentials: ein ausgegebenes Secret gegen ein Bearer-Token tauschen, das eine Stunde gilt (Fehler nach RFC 6749). |
GET /api/oauth/register | ohne Schlüssel | Wie Sie Zugangsdaten erhalten (Vergabe nach Prüfung durch einen Menschen, kein Self-Service). |
POST /api/oauth/register | ohne Schlüssel | Antwortet wie GET: Die Registrierung erfolgt manuell, es wird kein Client angelegt und es werden keine Zugangsdaten ausgegeben. |
POST /api/contact | ohne Schlüssel | Das Kontaktformular (CSRF-Token, Einwilligung); antwortet mit { success, message }. |
Fehler
Jeder Fehler unter /api/* ist JSON mit einem stabilen Code, einer Meldung, einem Hinweis und, als docs, dem Eintrag des Codes weiter unten. Bei Validierungsfehlern kommt die Liste der Felder in errors hinzu.
HTTP/1.1 404 Not Found
Content-Type: application/json; charset=utf-8
{
"status": "error",
"code": "not_found",
"message": "No API endpoint at /api/nope.",
"hint": "Check the path. GET /api/ lists the endpoints; /openapi.json describes them.",
"docs": "https://www.kondevs.com/developers/#error-not_found"
}
bad_requestHTTP 400- Die Anfrage ist fehlerhaft aufgebaut. Prüfen Sie die Anfrage anhand der OpenAPI-Beschreibung unter /openapi.json.
validation_failedHTTP 400- Der Payload hat die Validierung nicht bestanden; errors[] nennt jedes betroffene Feld. Korrigieren Sie die in
errorsaufgeführten Felder; das Payload-Schema steht in /openapi.json. Mit ?dry_run=1 validieren Sie, ohne zu speichern. unsupported_versionHTTP 400- Der Header X-Content-API-Version verlangt eine Hauptversion, die dieser Server nicht bedient. Senden Sie X-Content-API-Version: 1 oder lassen Sie den Header weg.
invalid_idempotency_keyHTTP 400- Der Header Idempotency-Key besteht nicht aus 1-255 sichtbaren ASCII-Zeichen. Senden Sie pro Anfrage einen eindeutigen Wert, zum Beispiel eine UUID.
- Kein gültiger Bearer-Schlüssel und kein gültiges Token. Senden Sie Authorization: Bearer <token>. Schlüssel erhalten Publishing-Partner; siehe /auth.md.
forbiddenHTTP 403- Schlüssel oder Token ist gültig, trägt aber nicht den Scope, den dieser Aufruf braucht. Schreibzugriffe brauchen content:write, der Katalog content:read (write schließt read ein); siehe /auth.md.
not_foundHTTP 404- Unter dieser Adresse gibt es weder einen Endpunkt noch einen Artikel. Prüfen Sie den Pfad. GET /api/ listet die Endpunkte auf, /openapi.json beschreibt sie.
method_not_allowedHTTP 405- Dieser Pfad akzeptiert diese Methode nicht. Verwenden Sie eine der Methoden aus dem Allow-Header.
conflictHTTP 409- Ein Artikel mit diesem Slug existiert bereits. Aktualisieren Sie ihn mit PUT /api/content/{slug} oder veröffentlichen Sie unter einem anderen Slug.
idempotency_in_progressHTTP 409- Eine Anfrage mit diesem Idempotency-Key läuft noch. Wiederholen Sie die Anfrage in einigen Sekunden (Retry-After).
payload_too_largeHTTP 413- Der Body überschreitet das Limit. Senden Sie einen kleineren Body: Ein Artikel-Payload darf höchstens 30 MB groß sein, Bilder eingeschlossen.
unsupported_media_typeHTTP 415- Der Body ist kein JSON. Senden Sie Content-Type: application/json.
idempotency_key_reusedHTTP 422- Dieser Idempotency-Key wurde bereits mit einem anderen Body verwendet. Verwenden Sie für eine andere Anfrage einen neuen Idempotency-Key.
rate_limitedHTTP 429- Zu viele Anfragen von dieser Adresse. Warten Sie die im Retry-After-Header genannten Sekunden ab und wiederholen Sie dann die Anfrage.
internal_errorHTTP 500- Im Server ist ein Fehler aufgetreten. Versuchen Sie es später erneut. Hält der Fehler an, schreiben Sie an info@kondevs.com.
bad_gatewayHTTP 502- Ein vorgelagerter Dienst ist ausgefallen. Versuchen Sie es später erneut. Hält der Fehler an, schreiben Sie an info@kondevs.com.
- Der Dienst ist nicht verfügbar. Versuchen Sie es später erneut. Hält der Fehler an, schreiben Sie an info@kondevs.com.
Zwei Protokolle behalten ihr eigenes Format: Die OAuth-Endpunkte antworten wie in RFC 6749 festgelegt (error, error_description), /mcp und /api/a2a mit Fehlern nach JSON-RPC 2.0.
Rate Limits
| Endpunkt | Limit | Gezählt |
|---|---|---|
POST /mcp | 120 pro Minute | pro IP-Adresse |
POST /api/a2a | 60 pro Minute | pro IP-Adresse |
GET /api/content/catalog | 60 pro Minute | pro IP-Adresse |
POST /api/content/ | 30 pro Stunde | pro IP-Adresse |
PUT /api/content/{slug} | 30 pro Stunde | pro IP-Adresse |
DELETE /api/content/{slug} | 30 pro Stunde | pro IP-Adresse |
POST /api/oauth/token | 30 pro Minute | pro IP-Adresse |
POST /api/oauth/register | 30 pro Minute | pro IP-Adresse |
POST /api/contact | 5 pro 10 Minuten | pro IP-Adresse |
Antworten mit Rate Limit enthalten RateLimit-Policy und RateLimit (die IETF-Header-Felder für Rate Limits: Kontingent, Zeitfenster, verbleibende Anfragen, Sekunden bis zum Zurücksetzen) sowie X-RateLimit-Limit, X-RateLimit-Remaining und X-RateLimit-Reset (Unix-Zeit). Eine 429-Antwort enthält zusätzlich Retry-After in Sekunden.
Versionierung
Die Content API hat die Version 1.1.0: Jede Antwort der Content API trägt X-Content-API-Version, und GET /api/content/version liefert sie zusammen mit den Rendering-Fähigkeiten dieser Website. Änderungen innerhalb der Hauptversion 1 fügen nur Felder hinzu. Ein Client kann die Hauptversion mit X-Content-API-Version: 1 festlegen (auch 1.1, v1); eine Anfrage nach einer anderen Hauptversion wird mit 400 unsupported_version abgelehnt, bevor irgendetwas ausgeführt wird. Eine inkompatible Änderung bekommt eine neue Hauptversion. Alles, was entfernt werden soll, wird vorher auf dieser Seite und mit den Response-Headern Deprecation und Sunset angekündigt. Derzeit ist nichts abgekündigt.
Fragen
Schreiben Sie an info@kondevs.com. Was KONDEVS macht und wann Sie KONDEVS hinzuziehen sollten, lesen Sie in llms.txt.