de

MCP-Server

Der offizielle MCP-Server für Crisphive. Richten Sie Claude, ChatGPT, Cursor oder einen beliebigen MCP-Client auf Crisphive aus, und er kann Kunden verwalten, Ihren Servicekatalog durchsuchen, echte Terminverfügbarkeit prüfen und Jobs buchen für ein Außendienst-Unternehmen — jeder REST-Endpunkt der Developer-API, bereitgestellt als Tool.

Sie suchen den Überblick, Beispiel-Prompts und die Ein-Klick-Verbindung? Siehe Crisphive MCP für Claude →
Es ist ein gehosteter Remote-Server — nichts zu installieren oder auszuführen. Richten Sie Ihren Client auf den untenstehenden Endpunkt aus, und Sie sind verbunden.
https://api.crisphive.com/mcp

Zuerst ausprobieren

Verbinden Sie sich (ein chsk_test_-Sandbox-Schlüssel genügt) und fügen Sie einen dieser Prompts direkt in Ihren Agenten ein — dieselben Prompts stehen auf jedem Crisphive-Listing, hier sehen Sie also genau die First-Run-Erfahrung von überall (die Prompts selbst bleiben englisch):

  • Auftragserstellung — “Schedule a 2-hour HVAC job at 145 Laurier Ave W tomorrow for Marie Tremblay, 613-555-0142.” createCustomer → listJobRequestBookingWindows → createJobRequest → quoteJobRequest → confirmJobRequest
  • Notfall-Einschub — “Emergency plumbing job now at 99 Bank St for David Okafor (613-555-0198) — show me what gets rescheduled.” listEmergencyCandidates → previewEmergencyReschedule → commitEmergencyReschedule
  • Tagesüberblick — “Outline my day tomorrow and flag anything at risk.” listJobRequests → getTechnicianSchedule
  • Freie-Zeiten-Suche — “Find 3 hours this week for a bike ride with my wife without risking any jobs.” getTechnicianSchedule → der Agent findet den Spielraum im Zeitplan selbst

Dieselbe Anfrage, Ihre Sprache

Der Engine ist egal, wer spricht — Disponent, Inhaber oder Entwickler steuern dieselben Tools. Hier dieselben Anfragen, formuliert wie jede Rolle sie wirklich tippen würde (die Prompts bleiben englisch):

AnwendungsfallDisponent (Operator)InhaberEntwickler
AuftragserstellungSchedule a 2-hour HVAC maintenance job at 145 Laurier Ave W tomorrow afternoon for Marie Tremblay (613-555-0142) and assign the closest available technician.Book a 2-hour HVAC maintenance visit tomorrow afternoon at 145 Laurier Ave W for Marie Tremblay, 613-555-0142, with whoever can get there with the least drive time.Create a job: 2h duration, location 145 Laurier Ave W, skill=HVAC_MAINT, window=tomorrow 12:00–17:00, customer=Marie Tremblay, phone=613-555-0142. Assign nearest qualified tech and return the placement rationale.
Notfall-EinschubInsert an emergency P0 job right now at 99 Bank Street for David Okafor (613-555-0198) — burst pipe, needs a licensed plumber — and show me what gets rescheduled to make room.David Okafor (613-555-0198) has a burst pipe emergency at 99 Bank Street. Get a licensed plumber there now and tell me which customers get bumped and how it affects today’s commitments.Insert a P0 job now at 99 Bank St, customer=David Okafor, phone=613-555-0198, skill=PLUMBER_LICENSED. Run cascade reschedule and return the dual plan: jobs moved, new ETAs, and total SLA impact.
TagesüberblickOutline my schedule for tomorrow, flagging any tight travel windows or jobs at risk of running over.Give me a plain-English rundown of tomorrow across all my crews — where the risks are, and whether we’re overcommitted anywhere.Return tomorrow’s schedule for my crew as an ordered timeline with travel legs, slack per job, and any constraint violations or at-risk SLAs flagged.
Freie-Zeiten-SucheFind a 3-hour window in my work week when I can go on a bike ride with my wife without putting any jobs at risk.When this week can I go on a bike ride with my wife without anything on the schedule slipping?Query my week for a contiguous 3h personal block that keeps all jobs feasible — no SLA breaches, no cascade required. Return candidate windows ranked by schedule slack.
Skill- & Anfahrts-MatchingWhich of my technicians certified for gas fitting are free Thursday morning within 20 minutes of Kanata?Do I have anyone qualified for gas fitting who could realistically cover a Kanata job Thursday morning without wrecking their route?List technicians with cert=GAS_FITTING, available Thursday 08:00–12:00, travel time ≤20 min to Kanata. Include current utilization per tech.

So funktioniert es

Jeder Prompt oben nimmt denselben Weg: Claude übersetzt natürliche Sprache in Tool-Aufrufe, der MCP-Server steuert dieselbe öffentliche REST-API wie jeder andere Client, und ein deterministischer Solver berechnet den Zeitplan — kein LLM im Optimierungskern. Die Ergebnisse werden in das System of Record des Unternehmens zurückgespielt.

Der Weg eines Prompts durch Crisphive: Claude, der MCP-Server, die REST-API, der deterministische Solver und das System of Record des Field-Ops-Managers.

Voraussetzungen

Jeder MCP-Client, der Remote-Server über Streamable HTTP unterstützt und einen benutzerdefinierten Header senden kann — claude.ai, Claude Desktop, Claude Code, ChatGPT, Gemini CLI, Cursor, VS Code, Windsurf, Cline, Zed, LM Studio und mehr. Der Transport ist zustandslos (einfache JSON-Antworten — kein SSE, keine Sessions), und der Server stellt ausschließlich Tools bereit.

Installation

Wählen Sie unten Ihren Client, um genau zu sehen, wie Sie ihn verbinden:

Run one command. Omit the header to authorize in your browser (OAuth), or pass an API key to skip the browser step:

# OAuth — you'll be prompted to authorize in the browser
claude mcp add --transport http crisphive https://api.crisphive.com/mcp

# …or pass an API key to skip the browser step
claude mcp add --transport http crisphive https://api.crisphive.com/mcp \
  --header "Authorization: Bearer chsk_test_YOUR_KEY"

Authentifizierung

Anfragen authentifizieren sich mit einem geheimen API-Schlüssel, der als Bearer-Token gesendet wird — derselbe Schlüssel wie für die REST-/v1-API. Erstellen Sie Schlüssel in Ihrem Crisphive-Unternehmens-Dashboard. Das Schlüsselpräfix entscheidet, mit welchen Daten der Agent arbeitet:

  • chsk_live_… → Live-Daten (Produktion).
  • chsk_test_… → Sandbox-Daten (isolierter Test). Ein Agent mit einem Test-Schlüssel kann immer nur auf Sandbox-Daten zugreifen — die empfohlene Art, ihn experimentieren zu lassen.

Bewahren Sie den Schlüssel serverseitig auf und laden Sie ihn aus der Umgebung — committen Sie ihn niemals und liefern Sie einen chsk_-Schlüssel nie in einer clientseitigen App aus.

Sie verbinden sich mit /mcp über einen API-Schlüssel? Dann gilt die eigene Laufzeit des Schlüssels — gewählt bei der Erstellung (standardmäßig 30 Tage, von 1 bis 365), fest für die gesamte Lebensdauer des Schlüssels. Das Erneuerungsverfahren finden Sie unter Authentifizierung.

OAuth 2.1 (kein API-Schlüssel)

Sie bauen einen claude.ai-/ChatGPT-Connector — oder ein beliebiges Produkt, bei dem Ihre Nutzer ihr eigenes Crisphive-Unternehmen mitbringen? Der /mcp-Endpunkt ist zugleich ein vollständiger OAuth-2.1-Authorization-Server: Der Unternehmensinhaber autorisiert Ihren Agenten über einen Consent-Bildschirm, und es wird nie ein Schlüssel kopiert. Ein konformer MCP-Client durchläuft den gesamten Ablauf automatisch (in der Regel schreiben Sie keinen OAuth-Code), ausgelöst durch ein 401 mit WWW-Authenticate: Bearer resource_metadata="…":

SchrittAnfrage
1. Ressource ermittelnGET /.well-known/oauth-protected-resource (RFC 9728) → die URL des Authorization-Servers
2. Den AS ermittelnGET /.well-known/oauth-authorization-server (RFC 8414) → Endpunkte; PKCE S256 erforderlich; Grants authorization_code + refresh_token
3. RegistrierenPOST /oauth/register (RFC 7591 Dynamic Client Registration) → client_id (öffentlicher Client, kein Secret — PKCE ist der Nachweis)
4. AutorisierenGET /oauth/authorize?… — der Unternehmensinhaber meldet sich bei Crisphive an und erteilt seine Zustimmung
5. AustauschenPOST /oauth/token (grant_type=authorization_code, code, code_verifier) → { access_token, refresh_token, expires_in }
6. ErneuernPOST /oauth/token (grant_type=refresh_token) → ein rotiertes Token-Paar (das alte Refresh-Token ist einmalig nutzbar)

Ab dann rufen Sie /mcp mit Authorization: Bearer <access_token> auf — identisch zum API-Schlüssel-Pfad. Das Token ist an das Unternehmen, die Region und die Umgebung des zustimmenden Inhabers gebunden, sodass ein Agent niemals einen anderen Mandanten erreichen oder zwischen Live↔Sandbox wechseln kann. Der Agent handelt als die Person, die ihn genehmigt hat — er kann nie mehr tun, als dieses Mitglied im Dashboard könnte, und er funktioniert nicht mehr, wenn die Person entfernt oder gesperrt wird. Fordern Sie einen engeren scope an (durch Leerzeichen getrennte Berechtigungscodes, z. B. customers_view job_view), um ihn weiter einzuschränken; lassen Sie ihn weg, gilt alles, was dieses Mitglied tun darf. Access-Tokens leben ~1 Stunde — nutzen Sie das Refresh-Token, um verbunden zu bleiben. Dasselbe Token funktioniert auch gegen die REST-API /v1 — siehe Multi-Tenant-Integration bauen.

Verbindungslaufzeit

Eine MCP-Verbindung wird von zwei unabhängigen Uhren bestimmt. Ein täglich genutzter Agent wird nie planmäßig getrennt; einer, der vergessen wird, läuft von selbst ab.

  • Inaktivitätsfenster — 30 Tage. Jede Token-Erneuerung stellt ein neues Refresh-Token aus, das weitere 30 Tage gilt. Nutzen Sie die Verbindung weiter, verlängert sie sich unbegrenzt; bleiben Sie 30 Tage inaktiv, erlischt sie.
  • Absolute Obergrenze — 90 Tage. Unabhängig von der Aktivität endet eine Verbindung 90 Tage, nachdem der Unternehmensinhaber sie genehmigt hat. Das Unternehmen kann dies pro Verbindung unter Developers → MCP connections auf einen Wert von 1 bis 365 Tagen setzen; der Countdown wird ab der ursprünglichen Genehmigung gemessen, nicht ab der Änderung.

Läuft eine der beiden Uhren ab, schlägt das Erneuern fehl, und der Inhaber muss die App erneut über den Consent-Screen genehmigen. Behandeln Sie jede fehlgeschlagene Erneuerung als „Autorisierungsablauf neu starten“, niemals als wiederholbaren Fehler. Die Inhaber und Administratoren des Unternehmens werden 14 Tage bevor eine Verbindung abläuft per E-Mail benachrichtigt — die erneute Genehmigung erfordert den Inhaber im Browser, daher kommt die Warnung früher als bei Schlüsseln.

Refresh-Tokens sind einmalig verwendbar: Jede Erneuerung liefert ein neues, und das Vorlegen eines bereits verwendeten Tokens widerruft die gesamte Verbindung als mutmaßlichen Token-Diebstahl. Speichern Sie immer nur das zuletzt erhaltene Refresh-Token.

Tools

Es gibt 46 Tools, eines pro Operation der öffentlichen /v1-API — dieselben Namen wie die SDK-Methoden (listCustomers, createJobRequest, …), generiert aus derselben OpenAPI-Spezifikation, sodass REST und MCP nie auseinanderdriften. Pfad-/Query-Parameter und Request-Body-Felder werden pro Tool zu einem einzigen Argumentobjekt zusammengefasst.

GruppeTools
Kunden
CRM-Sync, vollständiges CRUD
listCustomers · createCustomer · getCustomer · updateCustomer · deleteCustomer
Buchungen
buchen, verschieben & verfolgen
listJobRequests · createJobRequest · getJobRequest · getJobRequestTimeline · listJobRequestBookingWindows · listJobRequestChanges · listCrewCandidates · listMatchingSlots · confirmJobRequest · updateJobPriority · quoteJobRequest · previewJobRequestMove · commitJobRequestMove · previewEmergencyReschedule · listEmergencyCandidates · commitEmergencyReschedule · listNearbyTechnicians · getTechnicianSchedule
Katalog
Referenzdaten + Skills
listJobTypes · getJobType · listSkills · listSkillCategories · listSkillsByCategory · listServiceAreas · getServiceArea · listTechnicianSkills · replaceTechnicianSkills
Team & Fuhrpark
Personal, Beziehungen & Fuhrpark
listTechnicians · getTechnician · createTechnician · updateTechnician · deleteTechnician · listTechnicianAvailability · getTechnicianAvailability · replaceTechnicianBuddies · replaceTechnicianLeads · replaceTechnicianServiceAreas · replaceTechnicianVehicles · listVehicles · getVehicle · listBusinessGroups
  • Jedes Tool liefert das rohe REST-Envelope zurück — { error_code, message, data } — als Text; Agenten entpacken bei Erfolg data und lesen bei Fehler error_code.
  • Eingeschränkte Schlüssel gelten unverändert: Ein auf customers_view eingeschränkter Schlüssel erhält von Schreib-Tools ein 403.
  • Create-Tools (createCustomer, createJobRequest) akzeptieren ein optionales idempotency_key, das als Idempotency-Key-Header weitergereicht wird — übergeben Sie beim erneuten Versuch denselben Wert, damit ein wiederholter Aufruf nie ein Duplikat erzeugt.
  • Header-Eingaben sind ebenfalls Argumente: z. B. nimmt listJobRequestBookingWindows das Argument x_timezone (eine IANA-Zeitzone, gesendet als X-Timezone-Header).
  • Jedes Tool deklariert ein outputSchema und liefert neben dem Text auch structuredContent (das geparste Envelope), sodass typisierte Clients erneutes Parsen überspringen können.
  • Verhaltenshinweise werden pro Tool gesetzt — Lesevorgänge tragen readOnlyHint und Löschvorgänge destructiveHint, sodass Clients wie Claude vor dem Ausführen destruktiver Aktionen nachfragen können.

Ein typischer Agenten-Ablauf sieht so aus:

listSkills / listJobTypes                → discover reference IDs
createCustomer                           → { customer_id }
listJobRequestBookingWindows             → offer only the returned windows
createJobRequest                         → booking created
getJobRequest / listJobRequestChanges    → track status

Paginierung

Listen-Tools akzeptieren page / limit und liefern ein meta-Objekt (per_page, current_page, total_pages) zurück, sodass ein Agent große Ergebnismengen seitenweise durchlaufen kann.

Rate-Limits

Anfragen sind pro Schlüssel rate-limitiert, geteilt mit REST: 240 pro Minute. Bei einem 429-Envelope warten Sie ab und versuchen es erneut.

Fehler

Jedes Tool liefert das Crisphive-Response-Envelope zurück (als Text und als structuredContent): error_code ist 0 bei Erfolg oder ein stabiler String bei Fehler (CUSTOMER_NOT_FOUND, API_KEY_INVALID, …). Prüfen Sie auf den Code, niemals auf den Meldungstext. Ein ungültiger oder widerrufener Schlüssel liefert HTTP 401 (API_KEY_INVALID) — korrigieren Sie den Header und verbinden Sie sich erneut. Ein Schlüssel, der seine Laufzeit überschritten hat, liefert 401 mit API_KEY_EXPIRED — erstellen Sie einen Ersatzschlüssel. Eine OAuth-Verbindung, deren Grant abgelaufen ist, liefert OAUTH_GRANT_EXPIRED — führen Sie den Autorisierungsablauf über den Consent-Screen erneut aus.

Protokoll-Hinweise

  • POSTen Sie eine JSON-RPC-2.0-Nachricht (oder einen Batch von höchstens 20) pro Anfrage; Antworten sind application/json, und Notifications werden mit 202 quittiert.
  • Der Server ist zustandslos — es wird keine Session-ID ausgestellt oder benötigt; GET /mcp liefert 405 (es gibt keinen Server-Push-Stream).
  • UUID-Pfadargumente werden vor dem Dispatch validiert — eine Nicht-UUID-ID liefert einen In-Band-Tool-Fehler, niemals eine andere Operation.
  • Akzeptierte Protokollrevisionen: 2025-06-18, 2025-03-26, 2024-11-05.

Dokumentation

  • Anleitungen — beginnen Sie hier für die Konzepte und Buchungsabläufe.
  • API-Referenz — jeder Endpunkt, jedes Argument und jedes Schema.
  • Für KI — die OpenAPI-Spezifikation plus ein einsatzbereiter Assistenten-Bootstrap zum Einfügen.
  • openapi.json — die maschinenlesbare Spezifikation, aus der die Tools generiert werden.