slotrobin

Find, get quotes from and book local service businesses on their own Square or Google calendar.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
78%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,428Tokens (tool definitions)
~1.2 KBTypical response size
Moderate attention impact (1.12% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "slotrobin": {
      "url": "https://open-booking-csl.web.app/mcp"
    }
  }
}

Remote endpoints

https://open-booking-csl.web.app/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢find_businesses(query, category, locality)

Search the directory of bookable service businesses. All filters optional. query: words to match (e.g. "plumber"); category: e.g. "plumbing"; locality: e.g. "Petawawa".

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "title": "Query",
      "type": "string"
    },
    "category": {
      "default": "",
      "title": "Category",
      "type": "string"
    },
    "locality": {
      "default": "",
      "title": "Locality",
      "type": "string"
    }
  },
  "title": "find_businessesArguments"
}
🟢get_business(business_id)

Read a business's booking page: services with ids, prices, hours rules and how to book. Read this first.

Input Schema

{
  "type": "object",
  "properties": {
    "business_id": {
      "title": "Business Id",
      "type": "string"
    }
  },
  "required": [
    "business_id"
  ],
  "title": "get_businessArguments"
}

Output Schema

{
  "type": "object",
  "properties": {
    "result": {
      "title": "Result",
      "type": "string"
    }
  },
  "required": [
    "result"
  ],
  "title": "get_businessOutput"
}
🟢list_services(business_id)

List a business's services (id, name, duration, price basis, bookable or quote only).

Input Schema

{
  "type": "object",
  "properties": {
    "business_id": {
      "title": "Business Id",
      "type": "string"
    }
  },
  "required": [
    "business_id"
  ],
  "title": "list_servicesArguments"
}
🟢check_availability(business_id, service_id, start, end)

Open times for a service. start and end are ISO 8601 with UTC offset, at most 14 days apart, e.g. start="2026-10-01T00:00:00-04:00", end="2026-10-03T00:00:00-04:00". Times are offers, not holds.

Input Schema

{
  "type": "object",
  "properties": {
    "business_id": {
      "title": "Business Id",
      "type": "string"
    },
    "service_id": {
      "title": "Service Id",
      "type": "string"
    },
    "start": {
      "title": "Start",
      "type": "string"
    },
    "end": {
      "title": "End",
      "type": "string"
    }
  },
  "required": [
    "business_id",
    "service_id",
    "start",
    "end"
  ],
  "title": "check_availabilityArguments"
}
🟡request_quote(business_id, description, customer_name, customer_email, customer_phone, ...)

Send a quote request to the business. Only after the customer has confirmed the details; set customer_confirmed=true to say so. Needs an email or phone so the business can reply.

Input Schema

{
  "type": "object",
  "properties": {
    "business_id": {
      "title": "Business Id",
      "type": "string"
    },
    "description": {
      "title": "Description",
      "type": "string"
    },
    "customer_name": {
      "title": "Customer Name",
      "type": "string"
    },
    "customer_email": {
      "default": "",
      "title": "Customer Email",
      "type": "string"
    },
    "customer_phone": {
      "default": "",
      "title": "Customer Phone",
      "type": "string"
    },
    "service_id": {
      "default": "",
      "title": "Service Id",
      "type": "string"
    },
    "address_or_area": {
      "default": "",
      "title": "Address Or Area",
      "type": "string"
    },
    "preferred_times": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Preferred Times"
    },
    "customer_confirmed": {
      "default": false,
      "title": "Customer Confirmed",
      "type": "boolean"
    },
    "agent_name": {
      "default": "unknown",
      "title": "Agent Name",
      "type": "string"
    }
  },
  "required": [
    "business_id",
    "description",
    "customer_name"
  ],
  "title": "request_quoteArguments"
}
🟡book_appointment(business_id, service_id, start, customer_name, customer_email, ...)

Book a time returned by check_availability. Only after the customer has said yes to this exact business, service and time; set customer_confirmed=true to say so. Returns confirmed, pending (the business will confirm) or failed, with a reference.

Input Schema

{
  "type": "object",
  "properties": {
    "business_id": {
      "title": "Business Id",
      "type": "string"
    },
    "service_id": {
      "title": "Service Id",
      "type": "string"
    },
    "start": {
      "title": "Start",
      "type": "string"
    },
    "customer_name": {
      "title": "Customer Name",
      "type": "string"
    },
    "customer_email": {
      "default": "",
      "title": "Customer Email",
      "type": "string"
    },
    "customer_phone": {
      "default": "",
      "title": "Customer Phone",
      "type": "string"
    },
    "notes": {
      "default": "",
      "title": "Notes",
      "type": "string"
    },
    "customer_confirmed": {
      "default": false,
      "title": "Customer Confirmed",
      "type": "boolean"
    },
    "agent_name": {
      "default": "unknown",
      "title": "Agent Name",
      "type": "string"
    }
  },
  "required": [
    "business_id",
    "service_id",
    "start",
    "customer_name"
  ],
  "title": "book_appointmentArguments"
}
🔴cancel_booking(business_id, reference, customer_contact, customer_confirmed)

Cancel a booking made earlier. customer_contact is the email or phone used for the booking. Only after the customer has clearly said they want to cancel; set customer_confirmed=true to say so. To reschedule: check_availability, confirm the new time with the customer, book_appointment, then cancel the old one.

Input Schema

{
  "type": "object",
  "properties": {
    "business_id": {
      "title": "Business Id",
      "type": "string"
    },
    "reference": {
      "title": "Reference",
      "type": "string"
    },
    "customer_contact": {
      "title": "Customer Contact",
      "type": "string"
    },
    "customer_confirmed": {
      "default": false,
      "title": "Customer Confirmed",
      "type": "boolean"
    }
  },
  "required": [
    "business_id",
    "reference",
    "customer_contact"
  ],
  "title": "cancel_bookingArguments"
}
🟢check_request_status(business_id, reference, customer_contact)

Has the business confirmed, declined or replied? reference is the one returned by request_quote or book_appointment; customer_contact is the customer's email or phone.

Input Schema

{
  "type": "object",
  "properties": {
    "business_id": {
      "title": "Business Id",
      "type": "string"
    },
    "reference": {
      "title": "Reference",
      "type": "string"
    },
    "customer_contact": {
      "title": "Customer Contact",
      "type": "string"
    }
  },
  "required": [
    "business_id",
    "reference",
    "customer_contact"
  ],
  "title": "check_request_statusArguments"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools