Field service management for AI agents: booking, scheduling, dispatch, work orders, CRM, fleet.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
The official MCP (Model Context Protocol) server for the Crisphive API β agentic AI scheduling infrastructure for field service.
Lets AI agents β Claude, ChatGPT, Gemini, Cursor or any MCP client β match schedules between customers and businesses and route crews to jobs by location, skills, and real-time availability: job booking & appointment scheduling, work-order tracking, availability from a live dispatch & scheduling engine, customer (CRM) sync, service catalogs, technician & crew rosters, geographic service territories and fleet β for trades and home services such as HVAC, plumbing, electrical, cleaning, appliance repair and property maintenance. Hosted remote server; nothing to install or run (this repository holds the documentation and registry manifest).
Any MCP client that supports remote servers over Streamable HTTP β claude.ai, Claude Desktop, Claude Code, ChatGPT, Gemini CLI, Cursor, VS Code, Windsurf, Cline, Zed, LM Studio, β¦.
Settings β Connectors β Add custom connector, paste
https://api.crisphive.com/mcp. Sign in as the Crisphive business owner when
the consent screen opens. (Custom connectors require a Claude plan that
supports them.)
Or add to .cursor/mcp.json:
Settings β Connectors (developer mode) β add MCP server with URL
https://api.crisphive.com/mcp (OAuth).
Add to ~/.gemini/settings.json (note: Gemini CLI uses httpUrl for
Streamable HTTP servers):
Most clients accept the standard remote-server shape:
Only the URL field name varies in a few clients:
| Client | Config file | URL field |
|---|---|---|
| Cline / Roo Code | cline_mcp_settings.json | url |
| Windsurf | ~/.codeium/windsurf/mcp_config.json | serverUrl |
| Gemini CLI | ~/.gemini/settings.json | httpUrl |
| Zed | settings.json β context_servers | url |
Clients that only speak stdio can bridge with
mcp-remote:
@crisphive/mcp)This repository also ships a thin local stdio server: the same 43 tools
(same names, same schemas β generated from the same /v1 OpenAPI spec as the
hosted endpoint), where each call is an HTTPS request to the Crisphive API
with your key. No business logic runs locally.
Environment variables:
| Variable | Required | Meaning |
|---|---|---|
CRISPHIVE_API_KEY | for tool calls | chsk_live_β¦ = production data, chsk_test_β¦ = isolated sandbox. Create keys in the dashboard (Developers β API keys). |
CRISPHIVE_BASE_URL | no | API origin override (default https://api.crisphive.com). |
Prefer the hosted remote server (https://api.crisphive.com/mcp) when your
client supports it β OAuth, no key handling, always current. The local package
exists for stdio-only clients and self-hosted setups.
Developing in this repo: npm ci && npm test. The tool registry
(src/tools.generated.json) is generated β npm run generate refreshes it
from the live spec; CI fails if it drifts from /v1.
Every request is authenticated with a secret API key sent as a bearer token. Create keys from your Crisphive business dashboard. The key prefix selects the data environment:
chsk_live_β¦ β live (production) datachsk_test_β¦ β sandbox (isolated test) dataLoad keys from the environment β never commit them.
Keys expire. The lifetime is chosen when the key is created β 30 days by
default, up to 365 β and is fixed for that key's life; it cannot be extended
later. To renew, create a second key, point your agent at it, then revoke the
first: a business can hold several active keys at once, so the changeover has
no downtime and needs no special endpoint (the same procedure AWS documents for
access keys). Read expires_at from the dashboard or the key API and schedule
the swap. An aged-out key fails with API_KEY_EXPIRED, distinct from
API_KEY_INVALID, so you can alert on a missed renewal separately from a
revocation.
Crisphive emails the business's owners 7 days before a key expires (14 days for
an OAuth connection), so an expiry should not be a surprise β but the mail goes
to the business, not necessarily to you, so track expires_at yourself. A key
deliberately created for less than 7 days gets no advance notice; it would have
arrived at creation.
The MCP endpoint additionally supports OAuth 2.1 for end-user connectors (claude.ai, ChatGPT, β¦): the business owner authorizes your agent on a consent screen and no key is ever handled. A compliant MCP client runs the whole flow automatically β discovery, dynamic client registration, authorization code + PKCE. Full flow, scopes and token lifetimes: docs/integration.md.
43 tools, one per operation of the public /v1 API β same names as the SDK
methods (listCustomers, createJobRequest, β¦), derived from the same OpenAPI
spec so REST and MCP never drift. Full reference:
docs/tools.md.
| Group | Tools |
|---|---|
| Customers (CRM sync, full CRUD) | listCustomers Β· createCustomer Β· getCustomer Β· updateCustomer Β· deleteCustomer |
| Bookings (create & track) | createJobRequest Β· listJobRequests Β· getJobRequest Β· getJobRequestTimeline Β· listJobRequestBookingWindows Β· listJobRequestChanges |
| Catalog (read-only) | listJobTypes Β· getJobType Β· listSkills Β· listSkillCategories Β· listSkillsByCategory Β· listServiceAreas Β· getServiceArea |
| Team & fleet (reads) | listTechnicians Β· getTechnician Β· listVehicles Β· getVehicle |
| Team roster management (HR-system sync) | createTechnician Β· updateTechnician Β· deleteTechnician Β· replaceTechnicianBuddies Β· replaceTechnicianLeads Β· replaceTechnicianVehicles Β· replaceTechnicianServiceAreas Β· replaceTechnicianSkills Β· listTechnicianSkills |
| Matching & scheduling (read-only, engine-computed) | listMatchingSlots Β· listCrewCandidates Β· getTechnicianSchedule Β· listNearbyTechnicians |
| Scheduling actions (drive the schedule) | quoteJobRequest Β· confirmJobRequest Β· previewJobRequestMove Β· commitJobRequestMove |
| Priority & emergency dispatch (P0βP3, SLA, cascade) | updateJobPriority Β· listEmergencyCandidates Β· previewEmergencyReschedule Β· commitEmergencyReschedule |
Typical agent flow:
Emergency (P0) flow:
List tools accept page / limit and return a meta object (total,
count, per_page, current_page, total_pages).
Create/commit tools (createCustomer, createTechnician, createJobRequest,
confirmJobRequest, commitJobRequestMove, commitEmergencyReschedule)
accept an idempotency_key argument so retries never create a duplicate β
pass the same value when retrying.
Every tool returns the Crisphive response envelope (as text and as
structuredContent): error_code is 0 on success, a stable string on
failure (CUSTOMER_NOT_FOUND, API_KEY_INVALID, β¦). Match codes, never
message strings.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mcp-79)<a href="https://allmcps.com/mcp/mcp-79"><img src="https://allmcps.com/api/badge/mcp-79?style=directory" alt="Mcp on AllMCPs" /></a>