Book It MCP
A remote MCP server that allows AI assistants to find local home-service and trade businesses by trade and ZIP code, display their self-set price ranges and availability windows, and send booking requests that the business confirms directly.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://book.modernmustardseed.com/mcpWhat you can do with it
- Find local furnace repair businesses in a specific ZIP code
- Check price ranges for roof repair services
- Send a booking request to a plumber for a leaking water heater
- View availability windows for a specific trade business
Source and maintenance
Protocol and capabilities
- Server
- Book It by Modern Mustard Seed 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 5 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
5 advertised
find_provider — Find a local provider
Find home-service and trade businesses enrolled in Book It that serve a US ZIP code for a trade, such as HVAC, plumbing, roofing or lawn care. Returns each business's name, phone, website, the services that match the stated need, and its next open request window. Only businesses that enrolled and list that ZIP in their own service area appear; the result states the ordering rule, which is a fair daily rotation and never paid placement. An empty list means no enrolled business covers that trade and ZIP yet.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"trade",
"zip"
],
"properties": {
"zip": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "The 5-digit US ZIP code where the work is."
},
"need": {
"type": "string",
"maxLength": 300,
"description": "What the person needs in a few words, such as \"furnace blowing cold air\". Used to surface matching services."
},
"trade": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "The trade or a common name for it: \"hvac\", \"furnace repair\", \"plumber\", \"roofer\", \"lawn care\", \"tree service\"."
}
}
}{
"title": "Find a local provider",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_services — Get a business's services
Get one Book It business's services with any price range the business entered, its service-area ZIPs, its weekly hours for requests, its next open window, and the consent text a person agrees to before a booking request is sent.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business_id"
],
"properties": {
"business_id": {
"type": "string",
"maxLength": 80,
"minLength": 3,
"description": "The business_id exactly as find_provider returned it, such as \"juniper-ridge-roofing\"."
}
}
}{
"title": "Get a business's services",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}quote_range — Get a business's price range
Return the price range a Book It business entered for one of its services, labelled as the business's own range and not a quote. When the business entered no range, says so. Book It never estimates, averages or invents a price.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business_id"
],
"properties": {
"service": {
"type": "string",
"maxLength": 80,
"description": "Instead of service_id, the service name as the business lists it, such as \"Furnace repair\"."
},
"service_id": {
"type": "string",
"maxLength": 40,
"description": "The service_id from get_services or find_provider."
},
"business_id": {
"type": "string",
"maxLength": 80,
"minLength": 3,
"description": "The business_id exactly as find_provider returned it, such as \"juniper-ridge-roofing\"."
}
}
}{
"title": "Get a business's price range",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}check_availability — Check request windows
List the windows a Book It business accepts booking requests for, by date in the business's time zone, after its minimum notice and without its days off, for up to 14 days at a time. Each window has a window_id for request_booking. A window is when the business says it can take work, not a confirmed slot.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business_id"
],
"properties": {
"days": {
"type": "integer",
"maximum": 14,
"minimum": 1,
"description": "How many days to show, 1 to 14. Defaults to 7."
},
"from_date": {
"type": "string",
"maxLength": 10,
"description": "First date to show, YYYY-MM-DD, in the business's time zone. Defaults to today there."
},
"business_id": {
"type": "string",
"maxLength": 80,
"minLength": 3,
"description": "The business_id exactly as find_provider returned it, such as \"juniper-ridge-roofing\"."
}
}
}{
"title": "Check request windows",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}request_booking — Send a booking request
Send a Book It business a booking request on a person's behalf. Collects only the person's name, phone, ZIP, what they need and a preferred time. The business receives it by email and in its inbox and confirms a time with the person directly; the request is never a confirmed appointment. Requires consent_confirmed true, which means the person read and agreed to the business's booking_consent_text (from get_services or check_availability). US and Canadian phone numbers only. A repeat request from the same phone to the same business within 24 hours returns the first request instead of sending another.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"business_id",
"customer_name",
"customer_phone",
"customer_zip",
"need",
"consent_confirmed"
],
"properties": {
"need": {
"type": "string",
"maxLength": 600,
"minLength": 5,
"description": "What the person needs, in their words, such as \"Furnace runs but blows cold air.\""
},
"service_id": {
"type": "string",
"maxLength": 40,
"description": "Optional service_id from get_services."
},
"business_id": {
"type": "string",
"maxLength": 80,
"minLength": 3,
"description": "The business_id exactly as find_provider returned it, such as \"juniper-ridge-roofing\"."
},
"customer_zip": {
"type": "string",
"pattern": "^\\d{5}$",
"description": "The 5-digit ZIP where the work is. It must be in the business's service area."
},
"customer_name": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "The person's name, at least a first name."
},
"customer_phone": {
"type": "string",
"maxLength": 25,
"minLength": 10,
"description": "A US or Canadian phone number the business can call or text, such as (406) 555-0123."
},
"consent_confirmed": {
"type": "boolean",
"description": "True only after the person read the business's booking_consent_text and agreed to it."
},
"preferred_time_note": {
"type": "string",
"maxLength": 120,
"description": "A short preferred time in words, such as \"any weekday morning\", when no window fits."
},
"preferred_window_id": {
"type": "string",
"maxLength": 40,
"description": "A window_id from check_availability, such as \"2026-10-15@08:00-12:00\"."
}
}
}{
"title": "Send a booking request",
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1406 ms
- 95th percentile latency
- 1406 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1406 ms · metadata changed · 5 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http book-it-mcp https://book.modernmustardseed.com/mcpCodex
codex mcp add book-it-mcp --url https://book.modernmustardseed.com/mcpCursor
{
"mcpServers": {
"book-it-mcp": {
"url": "https://book.modernmustardseed.com/mcp"
}
}
}Cline
{
"mcpServers": {
"book-it-mcp": {
"type": "streamableHttp",
"url": "https://book.modernmustardseed.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"book-it-mcp": {
"type": "http",
"url": "https://book.modernmustardseed.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http book-it-mcp https://book.modernmustardseed.com/mcpClaude Desktop
{
"mcpServers": {
"book-it-mcp": {
"url": "https://book.modernmustardseed.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"book-it-mcp": {
"serverUrl": "https://book.modernmustardseed.com/mcp"
}
}
}Let your agent find its tools
Find servers like Book It MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other crm, sales, and marketing servers
Do you run Book It MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.