MCP-Tools Referenz
Maschinchenring ist auch ein MCP-Server. Du kannst die Plattform also direkt aus einem LLM-Client wie Claude Desktop nutzen statt über die Webseite — suchen, Verfügbarkeit prüfen, buchen, alles per Chat.
Diese Seite beschreibt die verfügbaren Tools aus Sicht eines MCP-Clients: welches Tool was macht, welche Parameter es erwartet und was es zurückgibt. Die MCP-Server-URL findest du nach dem Login unter /konto; der Login läuft über OAuth (PKCE) mit Magic-Link oder GitHub.
Öffentliche Tools
Diese Tools kannst du ohne Login aufrufen — nützlich, um sich erst mal einen Überblick zu verschaffen.
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
Findet Geräte nach Stichwort oder Konzept. Die Suche versteht auch freiere Formulierungen („etwas um Unkraut zu entfernen"). 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 brauchen ein gültiges Bearer-Token. Ohne Token wird
{ error: "Nicht angemeldet" } zurückgegeben.
Mit dem orangen Rahmen markierte Tools sind zusätzlich nur für den
Vermieter eines bestimmten Geräts nutzbar.
Buchungsverwaltung
create_booking
Erstellt eine Buchungsanfrage. Der Vermieter erhält eine E-Mail mit einem Bestätigungs- und einem Ablehnungs-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 bestätigten Buchungen werden Abholadresse und Telefonnummer des Vermieters mitgeliefert.
id, deviceId, setId, startDate, endDate, status (+ pickupAddress, ownerPhone bei approved)
cancel_booking
Storniert eine Buchung. Sowohl Mieter als auch Vermieter 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 Vermieter
Bestätigt eine ausstehende Buchungsanfrage. Nur der Vermieter des betreffenden Geräts darf bestätigen.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
bookingId | string | ja | ID der Buchung |
{ status: "approved" } reject_booking nur Vermieter
Lehnt eine ausstehende Buchungsanfrage ab. Nur der Vermieter des betreffenden Geräts darf ablehnen.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
bookingId | string | ja | ID der Buchung |
{ status: "rejected" } get_owner_bookings nur Vermieter
Zeigt alle Buchungen auf den eigenen Geräten (alle Status).
id, deviceId, deviceName, startDate, endDate, firstName, lastName, phone, status Zeiträume sperren
Als Vermieter kannst du Zeiträume auf deinen Geräten sperren, wenn du das Gerät selbst brauchst oder wenn du es gerade über eine andere Plattform vermietet hast. Gesperrte Zeiträume erscheinen im öffentlichen Kalender als belegt und verhindern neue Buchungsanfragen.
block_period nur Vermieter des Geräts
Sperrt einen Zeitraum auf einem deiner Geräte. Überschneidet sich der Zeitraum mit einer bestehenden Buchung oder Sperre, wird abgelehnt.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
deviceId | string | ja | Geräte-ID |
startDate | string | ja | Startdatum YYYY-MM-DD |
endDate | string | ja | Enddatum YYYY-MM-DD |
reason | string | nein | Interner Grund (z.B. „Eigennutzung", nur für dich sichtbar) |
{ blockId, deviceId, startDate, endDate, reason } unblock_period nur Vermieter des Geräts
Hebt eine eigene Sperre wieder auf. Fremde Sperren können nicht aufgehoben werden.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
blockId | string | ja | ID der Sperre |
{ ok: true } list_my_blocks nur Vermieter
Zeigt alle eigenen Sperren auf allen eigenen Geräten.
id, deviceId, deviceName, startDate, endDate, reason Geräteverwaltung
create_item nur Vermieter
Legt ein neues Gerät an. Erfordert den Vermieter-Status (einmalig zu beantragen über request_lender_status).
| 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 Vermieter 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 Vermieter
Zeigt alle eigenen Geräte (auch inaktive).
id, name, pricePerDay, active, thumbnailUrl u.a.
attach_image_to_item nur Vermieter
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. Nützlich,
um zu prüfen, ob du schon Vermieter bist (lender) oder
eine Vermieter-Anfrage offen hast
(lenderStatus: "pending").
name, email, phone,
addressStreet, addressZip, addressCity,
lender (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 werden
request_lender_status
Beantragt die einmalige Freischaltung als Vermieter. Voraussetzung: vollständiges Profil (Name, Telefon, Adresse). Danach schaut ein Mensch kurz drüber und schaltet dich frei oder meldet sich zurück. Zwischen zwei Anfragen liegt ein 1-Stunden-Cooldown.
{ ok: true, message }
oder Fehler bei unvollständigem Profil bzw. aktivem Cooldown.