MCP-Tools Referenz
Der MCP-Server ist unter /mcp erreichbar und stellt folgende Tools bereit. Öffentliche Tools sind ohne Login nutzbar; authentifizierte Tools erfordern ein Bearer-Token (OAuth PKCE).
Öffentliche Tools
Keine Authentifizierung erforderlich.
list_items
Gibt alle aktiven Geräte zurück. Nur aufrufen wenn der Nutzer explizit die komplette Geräteübersicht möchte — für gezielte Suchen besser search_items verwenden.
id, name, pricePerDay, pricePerWeek, pricePerWeekend, deposit, description, itemUrl, thumbnailUrl search_items
Hybrid-Suche (70% semantisch via Jina + 30% lexikal). Findet Geräte nach Stichwort, Konzept oder Tag. Standard-Limit: 5 Treffer.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
query | string | ja | Suchbegriff oder -konzept |
tags | string[] | nein | Nur Geräte mit allen angegebenen Tags |
limit | number | nein | Maximale Trefferzahl (1–20, Standard: 5) |
id, name, pricePerDay, pricePerWeekend, pricePerWeek, tags, score list_sets
Gibt alle verfügbaren Gerätesets zurück. Sets sind Bündel aus mehreren Geräten zu einem gemeinsamen Tagespreis.
id, name, description, pricePerDay, deposit get_item
Zeigt alle Details eines bestimmten Geräts inkl. Bilderliste.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
id | string | ja | Geräte-ID |
id, name, pricePerDay, pricePerWeek, pricePerWeekend, deposit, description, thumbnailUrl, images[], itemUrl, productUrl check_availability
Prüft, ob ein Gerät oder Set in einem bestimmten Zeitraum verfügbar ist.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
deviceId | string | bedingt | Geräte-ID (oder setId) |
setId | string | bedingt | Set-ID (oder deviceId) |
startDate | string | ja | Startdatum YYYY-MM-DD |
endDate | string | ja | Enddatum YYYY-MM-DD |
{ available: boolean } Authentifizierte Tools
Diese Tools erfordern ein gültiges Bearer-Token. Ohne Token wird { error: "Nicht angemeldet" } zurückgegeben.
Buchungsverwaltung
create_booking
Erstellt eine Buchungsanfrage. Der Owner erhält eine E-Mail mit Approve/Reject-Link. Genau eines von deviceId oder setId ist erforderlich.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
deviceId | string | bedingt | Geräte-ID |
setId | string | bedingt | Set-ID |
startDate | string | ja | Startdatum YYYY-MM-DD |
endDate | string | ja | Enddatum YYYY-MM-DD |
firstName | string | ja | Vorname des Mieters |
lastName | string | ja | Nachname des Mieters |
phone | string | ja | Telefonnummer des Mieters |
notes | string | nein | Hinweise zur Buchung |
{ bookingId: string, status: "pending" } get_my_bookings
Zeigt alle Buchungen des eingeloggten Nutzers als Mieter. Bei genehmigten Buchungen werden Abholadresse und Telefon des Owners mitgeliefert.
id, deviceId, setId, startDate, endDate, status (+ pickupAddress, ownerPhone bei approved)
cancel_booking
Storniert eine Buchung. Mieter und Owner können jeweils stornieren. Beide Parteien werden per E-Mail benachrichtigt.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
bookingId | string | ja | ID der Buchung |
{ status: "cancelled" } approve_booking nur Owner
Bestätigt eine ausstehende Buchungsanfrage. Nur der Owner des Geräts darf genehmigen.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
bookingId | string | ja | ID der Buchung |
{ status: "approved" } reject_booking nur Owner
Lehnt eine ausstehende Buchungsanfrage ab. Nur der Owner des Geräts darf ablehnen.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
bookingId | string | ja | ID der Buchung |
{ status: "rejected" } get_owner_bookings nur Owner
Zeigt alle Buchungen auf den eigenen Geräten (alle Status).
id, deviceId, deviceName, startDate, endDate, firstName, lastName, phone, status Geräteverwaltung
create_item Uploader-Berechtigung
Legt ein neues Gerät an. Erfordert den lender-Status (kann über request_lender_status beantragt werden).
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string | ja | Name des Geräts |
pricePerDay | number | ja | Tagespreis in Euro |
pricePerWeek | number | nein | Wochenpreis in Euro |
pricePerWeekend | number | nein | Wochenendpreis in Euro |
deposit | number | nein | Kaution in Euro |
productUrl | string | nein | Link zum Produkt |
description | string | nein | Beschreibung |
tags | string[] | nein | Schlagwörter (werden klein geschrieben) |
{ itemId: string } update_item nur Owner des Geräts
Aktualisiert ein eigenes Gerät. Alle Parameter außer id sind optional.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
id | string | ja | Geräte-ID |
name | string | nein | Neuer Name |
pricePerDay | number | nein | Neuer Tagespreis |
pricePerWeek | number | nein | Neuer Wochenpreis |
pricePerWeekend | number | nein | Neuer Wochenendpreis |
deposit | number | nein | Neue Kaution |
description | string | nein | Neue Beschreibung |
active | boolean | nein | Aktiv/Inaktiv schalten |
tags | string[] | nein | Neue Schlagwörter |
thumbnailPath | string | nein | Neuer Thumbnail-Pfad |
{ success: true, item: ... } list_my_items nur Owner
Zeigt alle eigenen Geräte (auch inaktive).
id, name, pricePerDay, active, thumbnailUrl u.a.
attach_image_to_item Uploader-Berechtigung
Verknüpft ein hochgeladenes Bild (via POST /images/upload) mit einem Gerät und setzt es optional als Thumbnail.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
itemId | string | ja | Geräte-ID |
imageId | string | ja | Bild-ID (vom Upload zurückgegeben) |
setAsThumbnail | boolean | nein | Als Thumbnail setzen |
{ success: true, imageId, path, url?, thumbnailSet } Profilverwaltung
get_profile
Gibt das eigene Profil zurück, inklusive Vermieter-Status. Nutze dieses Tool,
um zu prüfen, ob der Nutzer Vermieter ist (lender) oder eine
Vermieter-Anfrage offen hat (lenderStatus: "pending").
name, email, phone,
addressStreet, addressZip, addressCity,
lender (boolean), admin (boolean),
lenderStatus ("approved" | "pending" | "none"),
lenderRequestedAt, profileComplete,
missingProfileFields update_profile
Aktualisiert das eigene Profil. Alle Parameter sind optional.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string | nein | Anzeigename |
phone | string | nein | Telefonnummer |
addressStreet | string | nein | Straße + Hausnummer |
addressZip | string | nein | Postleitzahl |
addressCity | string | nein | Stadt |
Vermieter-Flow
request_lender_status
Beantragt die Freischaltung als Vermieter. Voraussetzung: vollständiges
Profil (Telefon und Adresse). Alle Admins werden per E-Mail informiert,
und entscheiden über Freischaltung unter /admin/lender-requests/:userId.
Cooldown: 1 Stunde zwischen zwei Anfragen.
{ ok: true, message, notifiedAdmins }
oder Fehler bei unvollständigem Profil bzw. aktivem Cooldown.
Admin-Tools
admin_approve_uploader nur Admin
Gibt einen Nutzer als Vermieter frei (setzt lender = true).
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
userIdOrEmail | string | ja | User-ID oder E-Mail-Adresse |
{ ok: true, userId, email, lender: true } admin_revoke_uploader nur Admin
Entzieht einem Nutzer die Vermieter-Berechtigung.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
userIdOrEmail | string | ja | User-ID oder E-Mail-Adresse |
reason | string | nein | Begründung (optional) |
{ ok: true, userId, email, lender: false } admin_list_users nur Admin
Listet alle Nutzer auf. Optionaler Filter: all | pending (kein Vermieter) | approved (Vermieter).
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
filter | string | nein | all | pending | approved |
id, email, name, lender, admin, approvedAt