Entwickler und KI-Agenten
Loonaut hat eine kostenlose HTTP-API und einen kostenlosen MCP-Server. Beide finden öffentliche Toiletten. Du brauchst kein Konto und keinen API-Schlüssel.
Schnellstart
Frag nach den Toiletten in der Nähe eines Ortes. Die Antwort ist JSON. Das Feld results listet die Toiletten nach Entfernung. Das Feld attribution enthält die Namensnennung, die du zeigen musst.
curl "https://loonaut.com/api/v1/toilets/nearest?place=Luisenplatz%20Darmstadt&limit=3"Die Antwort, gekürzt:
{
"status": "ok",
"origin": {
"lat": 49.8731921,
"lon": 8.6506765,
"label": "Luisenplatz, Stadtzentrum, Darmstadt-Mitte, Darmstadt, Hessen, 64283, Deutschland",
"source": "place"
},
"results": [
{
"id": "lt_6a0bfcab63bd23128f7e",
"name": null,
"distance_m": 117,
"walk_min": 1,
"access_rule": "fee",
"open_now": "unknown",
"wheelchair": "yes",
"url": "https://loonaut.com/toilets/lt_6a0bfcab63bd23128f7e"
}
],
"attribution": {
"text": "© OpenStreetMap contributors",
"license": "ODbL-1.0",
"url": "https://www.openstreetmap.org/copyright"
}
}Füge den MCP-Server zu Claude Code hinzu:
claude mcp add --transport http loonaut https://loonaut.com/mcpHTTP-API
Jeder Endpunkt antwortet auf GET. Die Version ist Teil des Pfads.
GET /api/v1/toilets/nearest: Toiletten in der Nähe eines Ortes oder einer Position, nach Entfernung sortiert. Filter: open_now, wheelchair, changing_table, free, no_purchase_needed.GET /api/v1/toilets: Toiletten in einem Kartenausschnitt. Der Parameter bbox ist West,Süd,Ost,Nord in Grad.GET /api/v1/toilets/{id}: Eine Toilette nach ihrer ID.
Das OpenAPI-Dokument listet auch Operationen für die Seiten dieser Website und für Stripe. Sie brauchen eine Prüfung auf Menschen, ein angemeldetes Konto oder eine Stripe-Signatur. Agenten rufen sie nicht auf.
MCP-Server
Der Server nutzt Streamable HTTP und braucht keine Authentifizierung. Er hat zwei lesende Tools: find_toilets_near und get_toilet. Die Server-Karte listet ihre Ein- und Ausgabeschemas.
Authentifizierung
Loonaut hat keine Entwicklerkonten, keine API-Schlüssel und kein OAuth. Sende keinen Authorization-Header.
Limits
Jede IP-Adresse darf 60 Anfragen pro Minute an die API und den MCP-Server senden. Der Endpunkt für den Kartenausschnitt erlaubt 300. Antworten der API tragen RateLimit-Header. Bei Status 429 warte so lange, wie Retry-After sagt.
Es gibt keine getrennte Testumgebung. Die lesenden Endpunkte ändern keine Daten. Du kannst also gegen die echte API testen.
Kopiere nicht den ganzen Datenbestand über die API. Lade stattdessen die offenen Daten herunter.
Fehler
Fehler nutzen application/problem+json (RFC 9457). Das Feld detail sagt dir, was du ändern musst.
{
"type": "https://loonaut.com/problems/invalid-parameters",
"title": "Invalid parameters",
"status": 400,
"detail": "Fix the listed parameters and send the request again. The OpenAPI document lists the allowed values.",
"invalid_params": [{ "name": "bbox", "reason": "Required" }]
}Versionen und Abkündigung
Die Version ist Teil des Pfads, zum Beispiel /api/v1. Eine Änderung, die ein Feld entfernt oder seine Bedeutung ändert, bekommt einen neuen Pfad, zum Beispiel /api/v2.
Bevor Loonaut eine Operation entfernt, markiert es sie im OpenAPI-Dokument als veraltet. Die Antworten dieser Operation tragen dann die Header Deprecation und Sunset. Heute ist keine Operation veraltet.
So nennst du die Quelle
Zeige „© OpenStreetMap contributors“, ODbL 1.0, neben den Toilettendaten. Jede Antwort enthält den Text und die Links im Feld attribution.