
Qasper
- Updated April 8, 2026
- QasperAI/mcp-server
Discover and book businesses via AI agents.
About
Discover and book businesses via AI agents. Exposes 10 MCP tools including io.github.QasperAI/qasper, GetBusinessInfo` - name, hours, languages, contact info., GetServices` - service catalog with durations and price ranges., GetPricing` - quote a service with emergency / weekend modifiers.. Install via Claude Desktop, Cursor, or any MCP-compatible client using the upstream server manifest.
- `SearchBusinesses` - find local businesses by category and location (text or lat/lng).
- `GetBusinessInfo` - name, hours, languages, contact info.
- `GetServices` - service catalog with durations and price ranges.
- `GetPricing` - quote a service with emergency / weekend modifiers.
- `CheckAvailability` - open slots from the business's calendar.
Qasper by the numbers
- Exposes 10 verified tools (MCP introspection)
- Data as of Jul 9, 2026 (Skillselion catalog sync)
claude mcp add qasper -- npx -y @qasperai/mcp-serverAdd your badge
Show developers this MCP server is listed on Skillselion. Paste this into your README.
| Package | @qasperai/mcp-server |
|---|---|
| Transport | STDIO, HTTP |
| Auth | None |
| Tools | 10 |
| Last updated | April 8, 2026 |
| Repository | QasperAI/mcp-server ↗ |
How do I connect Qasper to my MCP client?
Discover and book businesses via AI agents.
Who is it for?
Teams wiring Qasper into Claude, Cursor, or custom agents for ai & llm tools.
Skip if: Skip when you need a non-MCP SDK or hosted API without stdio/SSE transport.
What you get
Working Qasper MCP server with verified tool registration and client config.
- Configured remote or stdio Qasper MCP server
- Agent-accessible discover/book tools in dev or production
- Clear transport choice documented for your deploy target
By the numbers
- [object Object]
Qasper capabilities & compatibility
- Capabilities
- qasper mcp tool registration · qasper client configuration · qasper agent workflow integration
- Use cases
- orchestration
- Runs
- Remote server
What Qasper says it does
Discover and book businesses via AI agents.
Discover and book businesses via AI agents.
Tools 10
Public tool metadata - what this server can do for an agent.
get_refinement_options1 paramList the refinement dimensions (specializations, practice areas, service types, service modes, etc.) available for a specific subcategory. Call this BEFORE search_businesses when the user's request is broad (e.g. 'therapist in Greece', 'lawyer in London') so you can politely ask the user whether to narrow by any of these dimensions — and always offer them the option to see all results without filtering. Returns the attributes defined for the vertical with their possible option values, plus the universal serviceMode options. If refinementAvailable is false, skip refinement and go directly to search_businesses.
subCategorystringrequiredThe exact subcategory enum the user is asking about (e.g. 'Therapist', 'Plumber', 'Dentist'). Pick the most specific value from ProfessionalProfileSubCategory based on the user's words. Use 'None' only when the user's request truly does not name a profession.
find_next_available_appointments12 paramsFind the next available bookable appointment starts across matching local service businesses. Use this ONLY when the user explicitly asks for availability, booking, the soonest appointment, or a specific appointment time. Examples: 'book me a dentist', 'who has availability tomorrow?', 'find the soonest groomer appointment', 'get me a dermatologist next Wednesday'. Do NOT use this for generic discovery requests like 'find me a dentist in Paris' or 'show me pet groomers near me'; use search_businesses for discovery. The CALLER (you, the agent) extracts the structured search fields the same way as search_businesses, and passes the service or activity wording in serviceQuery. The response only includes businesses with direct booking support, a matching service, and at least one slot whose bookingStartPolicy and remainingCapacity allow booking. An empty result does NOT mean no matching businesses exist; it only means no directly bookable matching slots were indexed. If this returns no resu
subCategorystringrequiredExact ProfessionalProfileSubCategory enum value derived from the user's request (e.g. 'EventPlanner', 'Dentist', 'Therapist'). Required.serviceQuerystringrequiredService or activity wording from the user, e.g. 'boat trip', 'therapy session', 'haircut'.startDatestringrequiredFirst local date to search from (YYYY-MM-DD). Use today's date when the user asks for the next available option.locationTextstring | nullPlace name as the user said it. Pass null only for remote or nationwide service searches.countryCodestring | nullISO-3166 alpha-2 country code (e.g. 'GR', 'US', 'GB'). Set when deducible.latitudenumber | nullLatitude of the search location. Pass when the client has a map viewport or GPS position.longitudenumber | nullLongitude of the search location. Pass alongside latitude.radiusKmnumberSearch radius in kilometers, default 10.serviceModestring | nullHard filter on how the business delivers service. One of: 'in_person', 'remote', 'service_area', 'nationwide'.attributeFiltersstring | nullHard filter on vertical-specific attributes as a JSON object. Keys and values come from get_refinement_options.daysToSearchintegerNumber of calendar days to scan starting at startDate. Defaults to 14 and is clamped between 1 and 31.resultLimitintegerMaximum number of available appointment matches to return. Defaults to 5 and is clamped between 1 and 20.
book_appointment9 paramsBook an appointment with a local service business. Creates a booking record and adds the appointment to the business calendar. Returns a reference number and a status field indicating the actual resulting state — 'pending' (the business reviews each booking), 'confirmed' (auto-approved by the business), or 'completed' (the business auto-finalizes). Use a dateTime returned by check_availability for the selected service so bookingStartPolicy is respected. For services with maxParticipants > 1, the start can be booked until remainingCapacity reaches 0. Read the status and statusDescription verbatim and relay them accurately: do NOT tell the customer 'confirmed' when the status is 'pending'. If the selected service has requiresCustomerAddress=true, ask the customer for their full service address before calling this tool and pass it as customerAddress. ONLY call this if the business has 'booking' in its enabledFeatures array.
slugstringrequiredThe exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.serviceNamestringrequiredThe name of the service to bookdateTimestringrequiredAppointment start date and time in ISO 8601 format (e.g. '2026-04-07T14:00:00+03:00')customerNamestringrequiredFull name of the customercustomerPhonestringrequiredCustomer phone numbercustomerEmailstringrequiredCustomer email addressjobDescriptionstringrequiredDetailed description of the job or reason for appointment. Include any visual details about the issue — damage, location, severity, photos described in text form.clientRequestIdstringrequiredREQUIRED. Stable UUID identifying this booking attempt. Generate ONCE at the moment you decide to book; reuse the SAME value on every retry of the same logical attempt so the server can dedup. A fresh value on retry will mint a duplicate calendar event.customerAddressstring | nullCustomer's full service address. Required when the selected service has requiresCustomerAddress=true; omit or leave blank for services that do not need an address.
ask_business_agent3 paramsAsk one specific Qasper business agent through the same chat path as that business's public agent page. Use this only after selecting a business and copying its exact slug from search_businesses or get_business_info. The business agent can use its configured business tools for services, pricing, availability, bookings, and inquiries when appropriate.
slugstringrequiredThe exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.questionstringrequiredThe customer's direct question or request for this specific business agent.conversationIdstring | nullOptional existing Qasper business-agent conversation id for audit grouping. Leave null for a new conversation.
get_services1 paramGet the service catalog for a local service business, including service names, descriptions, estimated durations, price ranges, max participants, booking start policy, and whether the customer's address is required to book. Always available for any business.
slugstringrequiredThe exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.
send_inquiry6 paramsSend a general inquiry to a local service business. Use this when the customer has a question, needs a custom quote, or wants to describe an issue that doesn't fit a specific bookable service. The business owner will be notified immediately via every enabled inquiry channel and will contact the customer directly. ONLY call this if the business has 'inquiry' or 'email_inquiry' in its enabledFeatures array.
slugstringrequiredThe exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.customerNamestringrequiredFull name of the person making the inquirycustomerPhonestringrequiredCustomer phone numbercustomerEmailstringrequiredCustomer email addressmessagestringrequiredDetailed description of the inquiry, question, or issue. Include any visual details about damage, location, severity, and urgency.clientRequestIdstringrequiredRequired stable UUID for this inquiry attempt. Generate once and reuse on retries of the same logical attempt.
get_pricing4 paramsGet a price quote for a specific service from a local business. Takes into account emergency requests, weekend rates, and other pricing rules. Always available for any business.
slugstringrequiredThe exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.serviceNamestringrequiredThe name of the service to get pricing forisEmergencybooleanWhether this is an emergency/urgent requestrequestedDatestring | nullThe requested date (YYYY-MM-DD), used to determine weekend rates
search_businesses9 paramsSearch for local service businesses by structured fields. Use this as the FIRST discovery tool for requests such as 'find me a dentist in Paris', 'show me groomers near me', 'recommend a dermatologist', or 'I need a plumber'. This returns businesses even when they do not support direct booking. Do NOT skip this tool just because the user mentions a professional category; availability search is only for explicit booking, availability, soonest-slot, or specific appointment-time requests. The CALLER (you, the agent) is responsible for extracting subCategory, locationText, and countryCode from the user's request — pick the most specific subCategory enum, pass the user's place wording in locationText, and infer countryCode when deducible. The server handles SQL filtering, geocoding, ranking, and bucketing. IMPORTANT: If the user's request is broad (e.g. 'therapist in Greece', 'lawyer in London') and they haven't named a specific specialization or service mode, call get_refinement_options FI
subCategorystringrequiredExact ProfessionalProfileSubCategory enum value derived from the user's request (e.g. 'Therapist', 'Plumber', 'Dentist'). Required. Use 'None' only if the user truly hasn't named a profession — in that case the server refuses with a clarification response, and you should ask the user instead of guessing.locationTextstring | nullPlace name as the user said it, in their language. Examples: 'Athens', 'Greece', 'Πεκίνο', 'New York City'. Pass null when the user did not name a location.countryCodestring | nullISO-3166 alpha-2 country code (e.g. 'GR', 'US', 'GB'). Set when deducible from locationText or context, even if locationText is just a city — the server uses it to short-circuit geocoding for country-scope queries.latitudenumber | nullLatitude of the search location. Pass when the client has a map viewport or GPS position that should override coordinates geocoded from locationText.longitudenumber | nullLongitude of the search location. Pass alongside latitude.radiusKmnumberSearch radius in kilometers, default 10.serviceModestring | nullHard filter on how the business delivers service. One of: 'in_person', 'remote', 'service_area', 'nationwide'. Only profiles matching the mode are returned. Leave null when the user has no preference.attributeFiltersstring | nullHard filter on vertical-specific attributes as a JSON object. Keys and option values come from get_refinement_options. Example: '{"specializations":["trauma_ptsd"],"approaches":["emdr"]}'. Multiple values within a key are ALL required (AND). Multiple keys are ALL required (AND). Leave null when the user has no preference.resultLimitintegerMaximum number of businesses to return. Defaults to 5 and is clamped between 1 and 20.
check_availability3 paramsCheck available appointment slots for a specific service at a local business on a given date. Returns time windows when the business is free and the service bookingStartPolicy permits the start. For services with maxParticipants > 1, provider-returned starts remain available until capacity is full. ONLY call this if the business has 'booking' in its enabledFeatures array. If the business doesn't support booking, share their contact info from get_business_info instead.
slugstringrequiredThe exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.datestringrequiredThe date to check availability for (YYYY-MM-DD format, e.g. '2026-04-07')serviceNamestringrequiredThe name of the service to check availability for
get_business_info1 paramGet business information including name, type, service area, contact details, working hours, supported languages, enabled features, and a profile image (logo or personal photo) when the owner has uploaded one. Use 'attributeDetails' (natural-language sentences about the business's offerings, approach, and specialties) to reason about fit for the user. The 'cardChips' and 'cardChipGroups' fields are UI-only display data — ignore them. The response echoes the exact slug; reuse it verbatim in later tool calls. Always available for any business.
slugstringrequiredThe exact URL slug returned by search_businesses (e.g. 'nikos-plumbing-a3f2'). Copy it verbatim.
README.md
@qasperai/mcp-server
MCP server for Qasper — discover and book local service businesses (barbers, dentists, plumbers, hair salons, mechanics, and more) directly from any MCP-compatible AI assistant.
This package is a thin stdio shim that proxies to Qasper's hosted MCP server at https://qasper.ai/mcp. All tool definitions are pulled live from the upstream so this package never goes out of date.
Tools
SearchBusinesses— find local businesses by category and location (text or lat/lng).GetBusinessInfo— name, hours, languages, contact info.GetServices— service catalog with durations and price ranges.GetPricing— quote a service with emergency / weekend modifiers.CheckAvailability— open slots from the business's calendar.BookAppointment— create a confirmed booking.SendInquiry— send a free-form question or quote request.
Install
Remote (HTTP)
The server is hosted at https://qasper.ai/mcp and can be used directly by any MCP client that supports remote (HTTP) servers — no install required:
{
"mcpServers": {
"qasper": {
"url": "https://qasper.ai/mcp"
}
}
}
Claude Desktop (stdio)
For clients that only support stdio, add to claude_desktop_config.json:
{
"mcpServers": {
"qasper": {
"command": "npx",
"args": ["-y", "@qasper/mcp-server"]
}
}
}
Cursor / other MCP clients
npx -y @qasper/mcp-server
Configuration
| Env var | Default | Description |
|---|---|---|
QASPER_MCP_URL |
https://qasper.ai/mcp |
Upstream MCP endpoint. |
License
MIT
Recommended MCP Servers
How it compares
Booking-and-discovery MCP bridge, not an in-repo agent skill or self-hosted calendar server.
FAQ
What does Qasper do?
Discover and book businesses via AI agents.
When should I use Qasper?
User asks about Qasper mcp, discover and book businesses via ai agents..
Is this MCP server safe to install?
Review the Security Audits panel on this page before installing in production.