qasperai avatar

Qasper

qasperai/mcp-server

A thin stdio wrapper around Qasper's hosted MCP endpoint that lets Claude and other assistants search, quote, and book local service businesses. You get seven tools: search by category and location, pull business details and service catalogs, check real calendar availability, request pricing with modifiers for emergency or weekend work, send inquiries, and create confirmed appointments. It's a proxy to https://qasper.ai/mcp, so tool definitions stay current without package updates. If your client supports remote HTTP servers you can skip the npm package and point directly at the URL. Useful when you want an agent to handle the full booking flow for plumbers, dentists, salons, mechanics, or any other local service without leaving the conversation.

tools
10
transport
STDIO, HTTP
last updated
Apr 8, 2026

Install

From registry metadata
$ npx add-mcp https://qasper.ai/mcp --name qasper

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http qasper https://qasper.ai/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 10 tools

Verified live against the running server on Nov 6, 2026.

get_refinement_optionsList 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 a...1 params

List 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 a...

Parameters* required
subCategory*string
The 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'...one of None · Doctor · Dentist · Therapist · Psychologist · Psychiatrist
find_next_available_appointmentsFind the next available bookable appointment starts across matching local service businesses. This reads a periodically refreshed availability index rather than calling each provider live. Use this ONLY when the user explicitly asks for availability, booking, the soonest appoi...12 params

Find the next available bookable appointment starts across matching local service businesses. This reads a periodically refreshed availability index rather than calling each provider live. Use this ONLY when the user explicitly asks for availability, booking, the soonest appoi...

Parameters* required
attributeFiltersstring
Hard filter on vertical-specific attributes as a JSON object. Keys and values come from get_refinement_options.
countryCodestring
ISO-3166 alpha-2 country code (e.g. 'GR', 'US', 'GB'). Set when deducible.
daysToSearchinteger
Number of calendar days to scan starting at startDate. Defaults to 14 and is clamped between 1 and 31.default: 14
latitudenumber
Latitude of the search location. Pass when the client has a map viewport or GPS position.
locationTextstring
Place name as the user said it. Pass null only for remote or nationwide service searches.
longitudenumber
Longitude of the search location. Pass alongside latitude.
radiusKmnumber
Search radius in kilometers, default 10.default: 10
resultLimitinteger
Maximum number of available appointment matches to return. Defaults to 5 and is clamped between 1 and 20.default: 5
serviceModestring
Hard filter on how the business delivers service. One of: 'in_person', 'remote', 'service_area', 'nationwide'.
serviceQuery*string
Service or activity wording from the user, e.g. 'boat trip', 'therapy session', 'haircut'.
startDate*string
First local date to search from (YYYY-MM-DD). Use today's date when the user asks for the next available option.
subCategory*string
Exact ProfessionalProfileSubCategory enum value derived from the user's request (e.g. 'EventPlanner', 'Dentist', 'Therapist'). Required.one of None · Doctor · Dentist · Therapist · Psychologist · Psychiatrist
book_appointmentBook an appointment with a local service business. Creates a booking record and may add the appointment to the business calendar. Fresh successful calls normally return 'pending', 'confirmed', or 'completed'. Retries and failures can return broader lifecycle states or 'reconci...9 params

Book an appointment with a local service business. Creates a booking record and may add the appointment to the business calendar. Fresh successful calls normally return 'pending', 'confirmed', or 'completed'. Retries and failures can return broader lifecycle states or 'reconci...

Parameters* required
clientRequestId*string
REQUIRED. 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 fr...
customerAddressstring
Customer's full service address. Required when the selected service has requiresCustomerAddress=true; omit or leave blank for services that do not need an address.
customerEmail*string
Customer email address
customerName*string
Full name of the customer
customerPhone*string
Customer phone number
dateTime*string
Appointment start date and time in ISO 8601 format (e.g. '2026-04-07T14:00:00+03:00')
jobDescription*string
Detailed description of the job or reason for appointment. Include any visual details about the issue — damage, location, severity, photos described in text form.
serviceName*string
The name of the service to book
slug*string
The exact URL slug returned by a Qasper discovery result. Copy it verbatim.
ask_business_agentAsk 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 a Qasper discovery result. This tool is mutation-capable because delegated chat can invoke configure...3 params

Ask 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 a Qasper discovery result. This tool is mutation-capable because delegated chat can invoke configure...

Parameters* required
conversationIdstring
Optional existing Qasper business-agent conversation id for audit grouping. Leave null for a new conversation.
question*string
The customer's direct question or request for this specific business agent.
slug*string
The exact URL slug returned by a Qasper discovery result. Copy it verbatim.
get_servicesGet 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.1 params

Get 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.

Parameters* required
slug*string
The exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.
send_inquirySend 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. A stable clientRequestId deduplicates the same logical request, but does not guarant...6 params

Send 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. A stable clientRequestId deduplicates the same logical request, but does not guarant...

Parameters* required
clientRequestId*string
Required stable UUID for this inquiry attempt. Generate once and reuse on retries of the same logical attempt.
customerEmail*string
Customer email address
customerName*string
Full name of the person making the inquiry
customerPhone*string
Customer phone number
message*string
Detailed description of the inquiry, question, or issue. Include any visual details about damage, location, severity, and urgency.
slug*string
The exact URL slug returned by a Qasper discovery result. Copy it verbatim.
get_pricingGet 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.4 params

Get 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.

Parameters* required
isEmergencyboolean
Whether this is an emergency/urgent requestdefault: false
requestedDatestring
The requested date (YYYY-MM-DD), used to determine weekend rates
serviceName*string
The name of the service to get pricing for
slug*string
The exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.
search_businessesSearch Qasper's local-service registry by structured category, location, service mode, and supported vertical attributes. Use it for discovery requests such as 'find me a dentist in New York'. It returns an explicit claimed or unclaimed listing state, which is not independent...9 params

Search Qasper's local-service registry by structured category, location, service mode, and supported vertical attributes. Use it for discovery requests such as 'find me a dentist in New York'. It returns an explicit claimed or unclaimed listing state, which is not independent...

Parameters* required
attributeFiltersstring
Hard 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...
countryCodestring
ISO-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 count...
latitudenumber
Latitude of the search location. Pass when the client has a map viewport or GPS position that should override coordinates geocoded from locationText.
locationTextstring
Place 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.
longitudenumber
Longitude of the search location. Pass alongside latitude.
radiusKmnumber
Search radius in kilometers, default 10.default: 10
resultLimitinteger
Maximum number of businesses to return. Defaults to 5 and is clamped between 1 and 20.default: 5
serviceModestring
Hard 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.
subCategory*string
Exact 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...one of None · Doctor · Dentist · Therapist · Psychologist · Psychiatrist
check_availabilityCheck available appointment slots for a specific service at a local business on a given date. This calls the business's configured availability provider live and fails closed when the provider fails. Returns time windows when the business is free and the service bookingStartPo...3 params

Check available appointment slots for a specific service at a local business on a given date. This calls the business's configured availability provider live and fails closed when the provider fails. Returns time windows when the business is free and the service bookingStartPo...

Parameters* required
date*string
The date to check availability for (YYYY-MM-DD format, e.g. '2026-04-07')
serviceName*string
The name of the service to check availability for
slug*string
The exact URL slug returned by search_businesses or get_business_info. Copy it verbatim.
get_business_infoGet 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 busine...1 params

Get 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 busine...

Parameters* required
slug*string
The exact URL slug returned by search_businesses (e.g. 'nikos-plumbing-a3f2'). Copy it verbatim.

Sponsors

Readme

Details

Repository
github.com/qasperai/mcp-server
Package
@qasperai/mcp-server
Transport
STDIO, HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026