TMRS für Agenten · Berlin und Brandenburg

Arbeitsbühnen mieten
per KI-Agent.

Über TMRS können KI-Agenten Arbeitsbühnen, Baumaschinen und Mietgeräte registrierter Vermieter in Deutschland finden, die benötigten Mietangaben erfragen und für unterstützte Konfigurationen ein schriftliches Mietangebot als PDF erhalten. Der Einstieg ist ohne TMRS-Plugin oder Anmeldung möglich.

TMRS for agents: find heavy equipment and machinery from registered rental companies in Germany, clarify rental requirements, and obtain a written PDF quote for supported configurations. No TMRS plugin or sign-in is required.

Starten Sie mit dem öffentlichen Maschinenkatalog (JSON). Er liefert die aktuell anfragbaren Maschinen und ihre IDs. Die OpenAPI-Beschreibung dokumentiert Rückfragen, Angebotssuche und PDF-Abruf. Preise und Verfügbarkeit werden für den konkreten Mietbedarf geprüft.

MCP · ohne Anmeldung / no sign-in

Remote-MCP-Server.

Agenten ohne eigene HTTP-Werkzeuge binden https://www.themachinerentalscam.com/mcp als MCP-Server (Streamable HTTP, ohne Authentifizierung) ein. Werkzeuge: list_rental_catalog, get_quote_requirements, search_rental_offers, issue_rental_quote (mit Nebenwirkungen) und get_quote_document. Sie nutzen dieselben Prüfungen und Limits wie die HTTP-API.

Agents without raw HTTP tools connect https://www.themachinerentalscam.com/mcp as an MCP server (Streamable HTTP, no authentication). Tools: list_rental_catalog, get_quote_requirements, search_rental_offers, issue_rental_quote (side effects) and get_quote_document. They share the HTTP API's checks and limits.

Nur-Lese-Agenten (nur GET) berechnen Preise mit GET /api/v1/offers/search?equipmentId=…&startDate=…&endDate=…&jobsiteAddress=…&deliveryType=…. Kontaktdaten gehören nie in eine URL und sind für die Preissuche nicht nötig. Ist der Bedarf vollständig, enthält die Antwort humanConfirmationUrl: Diesen Link gibt der Agent dem Nutzer. Dort prüft der Nutzer den Preis, ergänzt seine Kontaktdaten und fordert das PDF-Angebot selbst an.

GET-only agents calculate prices with GET /api/v1/offers/search?equipmentId=…&startDate=…&endDate=…&jobsiteAddress=…&deliveryType=…. Contact data never goes into a URL and is not needed for price search. A complete need returns humanConfirmationUrl: the agent gives this link to the user, who checks the price, adds contact details and requests the PDF quote.

Automatic MCP discovery (SEP-2127): /.well-known/ai-catalog.json lists the server card.

Deutsch · HTTP & WebMCP

Vom Mietbedarf zum Angebot.

Agenten können ohne TMRS-Plugin, Clerk-Login oder Browser-Cookies den Bedarf prüfen, öffentliche Maschinen suchen und für unterstützte Konfigurationen in Berlin/Brandenburg ein tatsächliches Angebot ausstellen lassen. Verwenden Sie ausschließlich die IDs und Angaben aus dem aktuellen Katalog. Recherchierte Anbieter sind keine Zusage für sofortige Angebote.

  1. GET /api/v1/catalog: anfragbare Auswahl und vorhandene Maschinen lesen. Weitere Maschinen mit dem zurückgegebenen nextCursor über den cursor-Parameter laden.
  2. POST /api/v1/quote-requirements: auch einen unvollständigen Bedarf senden. Fehlende, ungültige und nicht unterstützte Felder werden mit Pfad, Rückfrage auf Deutsch/Englisch, gegebenenfalls Einheit und Auswahlmöglichkeiten zurückgegeben. Gültige Angaben bei weiteren Rückfragen erhalten. Keine preisrelevanten Werte annehmen.
  3. POST /api/v1/offers/search: passende Maschinen und berechenbare Preise lesen, ohne Kontaktdaten (auch per GET mit Query-Parametern). Beide Schritte erzeugen keine kommerziellen Anfragen, Angebote oder Vermieterbenachrichtigungen. Kaution und Selbstbeteiligung getrennt von Mietkosten betrachten.
  4. Bedarf, Kontaktdaten, Auswahl und Preise mit dem Nutzer prüfen. POST /api/v1/quotes stellt ein tatsächliches Angebot aus und kann bestehende Angebotsbenachrichtigungen auslösen. Hierzu einen stabilen Idempotency-Key verwenden: 16–96 Zeichen aus Buchstaben, Ziffern, Unterstrich und Bindestrich. Bei unklarem Ergebnis denselben Schlüssel wiederverwenden.
  5. Angebotsstatus mit Authorization: Bearer <accessToken> lesen. Den zurückgegebenen kurzlebigen document.href unverändert abrufen: vollständiges PDF einschließlich vorhandener Mietbedingungen/AGB. Weder Angebot annehmen noch eine Buchung durch diese API auslösen.

Die allgemeine Anfragematrix kann mehrere Bedarfe und Alternativen enthalten. Der automatische Angebotspfad unterstützt ausgewählte Maschinenkonfigurationen; nicht unterstützte Kombinationen und Sonderwünsche müssen ausdrücklich geklärt werden. Alternativen sind keine zusätzlichen Mieteinheiten.

Browser mit document.modelContext.registerTool erhalten auf der Hauptseite fünf HTTP-basierte Werkzeuge: list_rental_catalog, get_quote_requirements, search_rental_offers, issue_rental_quote und get_quote_document. Angebotserstellung ist als Aktion mit Nebenwirkungen gekennzeichnet; der normale Browserablauf bleibt verfügbar.

Dialogbeispiel

Nutzer: „Ich brauche eine Bühne in Berlin.“ Agent: prüft den unvollständigen Bedarf. Nutzer beantwortet die zurückgegebenen Fragen zu Maschine, Zeitraum, Baustelle, Abholung/Lieferung und Kontakt. Agent: erhält ready_to_quote, sucht Angebote und bespricht das Ergebnis. Nutzer bestätigt den vollständigen Bedarf. Agent: stellt genau ein Angebot aus, liest dessen Status und lädt das PDF. Dieses Beispiel zeigt den Ablauf; die Antwort des Servers bestimmt die tatsächlich benötigten Felder und Möglichkeiten.

English · HTTP & WebMCP

From rental need to issued quote.

No plugin, Clerk login or browser cookie is required. Start with the public catalog, check a partial need, ask the returned questions, and search real machines and calculated offers. Automatic issuance currently covers supported configurations in Berlin/Brandenburg. Always use catalog identifiers; paginate machines by passing the returned nextCursor as the cursor query parameter. Researched rental companies do not imply instant quoting capability.

Requirements and search are read only commercially: they create no rental inquiry, issued quote or rental-company notification. Preserve valid answers across rounds. Do not silently choose dates, delivery options, machine alternatives, quantities or other price-relevant defaults. Multiple needs, alternatives or special requests outside the automatic quote path must be reported explicitly. Alternatives do not mean multiple rented units.

Before calling issue_rental_quote or POST /api/v1/quotes, review the complete need, contact details, selected machine and returned prices with the user. Issuance creates an actual quote and may trigger existing notifications. Reuse one Idempotency-Key for the same issuance intent, including after a timeout. No acceptance or booking is performed. Deposits and excess are separate from rental charges.

The homepage exposes five WebMCP tools when WebMCP is available: list_rental_catalog (returns machines[].equipmentId and machines[].selection), get_quote_requirements, search_rental_offers, issue_rental_quote and get_quote_document. They call this HTTP API and share its checks. Quote issuance has side effects; requirements, search and document reads are marked read only. Browsers without WebMCP use the existing interface.

Required input and issuance prerequisites

The public OpenAPI CompleteRentalNeed schema lists the fields needed before issuance can succeed: equipmentId, startDate, endDate, full jobsiteAddress, deliveryType and contact.name/email/phone. Price search needs the same fields except contact. deliveryTime, companyName and contact address are optional. For one explicit machine, equipmentId alone selects its catalog configuration; requirements may be omitted. If supplied, use one requirement with machineQuantity 1 and one alternative, copy the machine’s selection unchanged into canonicalOperationalSelection and set requestedAttachmentIntent to an empty array. Ask the returned questions before claiming a complete need.

Automatic issuance also checks current requestability, calendar capacity, supported region, vendor pricing and pickup origin, and existing rental terms/AGB documents. A complete need does not promise issuance or machine handover. Follow the returned state and reason; manual_quote_required or unavailable is not an issued offer. The original PDF contains the applicable payment, handover and rental conditions. This API does not accept an offer or create a booking.

Authentication, validity and PDF

Issuance returns a secret, expiring, quote-scoped accessToken. Send it as a Bearer token only to that quote’s status endpoint. A separate short-lived, document-scoped capability is included in document.href. Fetch that URL unchanged to obtain the complete PDF, including rental terms. Keep both tokens private; never publish, index or log them. A quote ID alone grants no access.

Use the returned quote.validUntil, accessTokenExpiresAt and document.expiresAt; do not assume a fixed validity period. Refresh an expired download link by reading the same quote with its still-valid access token. An expired quote-access token cannot refresh a link. Quote and PDF responses are private and excluded from indexing.

Complete dialogue and HTTP sequence

User: “I need a lift in Berlin.” Agent checks the partial need, asks the returned English questions, preserves every valid answer and repeats until ready. After searching, the agent reviews the actual machine and prices with the user. The user confirms the complete need; the agent issues once, polls that quote if needed, and retrieves its full PDF.

The JSON below is illustrative, uses reserved test contact details, and has an explicit machine-ID placeholder. Replace it with a current catalog ID and real user-approved answers; do not execute the example against real customers. Server questions determine any further required fields.

GET /api/v1/catalog
POST /api/v1/quote-requirements
Content-Type: application/json

{
  "locale": "de",
  "jobsiteAddress": "Musterstraße 1, 10115 Berlin"
}

→ needs_input: missingFields / invalidFields / unsupportedFields
→ Ask the returned question.de or question.en; preserve all valid input.
→ Repeat POST /api/v1/quote-requirements with the user’s answers.
→ ready_to_quote: search and check the returned machine and prices.

POST /api/v1/offers/search
Content-Type: application/json

{
  "locale": "de",
  "equipmentId": "<equipmentId returned by /api/v1/catalog>",
  "startDate": "2027-06-14",
  "endDate": "2027-06-16",
  "jobsiteAddress": "Musterstraße 1, 10115 Berlin",
  "deliveryType": "pickup",
  "deliveryTime": "08:00",
  "contact": {
    "name": "Test Renter",
    "email": "renter@example.test",
    "phone": "+493012345678",
    "companyName": "Example GmbH",
    "address": "Musterstraße 1, 10115 Berlin"
  }
}

→ Review the returned offer with the user before issuance.

POST /api/v1/quotes
Content-Type: application/json
Idempotency-Key: <stable_key_for_this_user_intent>

<the same complete, user-approved JSON need>

→ quote_issued or processing; retain quote.id and accessToken privately.
→ If processing has no quote.id, repeat the SAME POST body and key after Retry-After.

GET /api/v1/quotes/<quote.id>
Authorization: Bearer <accessToken>

→ Use document.href and its expiresAt from this response.
GET <document.href exactly as returned>

→ application/pdf: full quote including rental terms / AGB

Zustände / states

needs_input
Rückfragen beantworten / Ask the returned missing or invalid field questions.
ready_to_quote
Bedarf vollständig, keine Verfügbarkeitsgarantie / Complete need; availability is still checked at issuance.
quote_issued
Angebot tatsächlich ausgestellt; Gültigkeit und Revision beachten / Actual issued quote; respect validity and revision.
processing
Wenn eine Angebots-ID vorliegt, dieses Angebot abfragen. Ohne ID denselben POST mit identischem Bedarf und Idempotenzschlüssel wiederholen; Retry-After beachten. / Poll the same quote when an ID is present. Otherwise repeat the same POST body and idempotency key after Retry-After.
unavailable
Keine verfügbare passende Konfiguration / No available matching supported configuration.
manual_quote_required
Nicht automatisch unterstützt; keine Zusage erfinden / Manual handling required; never invent an automatic offer.

Fehler / errors

Ausstellungs-Limits, feste Fenster: 6 Angebote je Sitzung und Stunde, 5 je IP und Stunde, 15 je IP und Tag, 20 je Stunde und 60 je Tag und Vermieter. Neue Sitzungen: 6 je IP und Stunde. Ein erreichtes Limit antwortet mit HTTP 429, Retry-After in Sekunden, retryAt in Unix-Millisekunden, reason rate_limited und einem stabilen code (rate_limited_session_ip_hour, rate_limited_session_hour, rate_limited_ip_hour, rate_limited_ip_day, rate_limited_tenant_hour, rate_limited_tenant_day).

Fehlende, abgelaufene oder fremde Zugriffsrechte gewähren keinen Zugang. Bei Idempotenzkonflikten, Preisänderungen und Kalenderkonflikten das Serverergebnis prüfen. Katalog, Bedarfsprüfung und Preissuche sind von jeder Origin aus erlaubt. Angebotsausstellung und Angebotsabruf aus fremden Browser-Websites werden mit cross_origin_not_allowed abgelehnt; Server-zu-Server-Clients benötigen keinen Origin-Header. Bei Providerfehlern oder Zeitüberschreitungen ist die Ausstellung ungewiss; denselben Schlüssel wiederverwenden. PDF-Verarbeitung bedeutet kein fehlgeschlagenes Angebot.

Issuance limits, fixed windows: 6 quotes per session per hour, 5 per IP per hour, 15 per IP per day, 20 per hour and 60 per day per rental company. New sessions: 6 per IP per hour. A reached cap returns HTTP 429 with Retry-After in seconds, retryAt as Unix milliseconds, reason rate_limited, and a stable code (rate_limited_session_ip_hour, rate_limited_session_hour, rate_limited_ip_hour, rate_limited_ip_day, rate_limited_tenant_hour, rate_limited_tenant_day).

Missing, expired or foreign capabilities grant no access. Inspect server responses for idempotency, changed-price and calendar conflicts. Requests must use application/json and stay within 32 KiB. Catalog, requirements and price search accept any origin. Quote issuance and quote reads from foreign browser origins are rejected with cross_origin_not_allowed; server-to-server clients need no Origin header. Provider failures or network timeouts do not prove whether issuance completed: retry the same key. Respect Retry-After where supplied. A processing PDF does not mean the quote failed. Never replace an uncertain outcome with a fabricated quote or price.

Mietgeräte und Baumaschinen in Deutschland: Angebots-API für KI-Agenten | TMRS