WAJ Booking MCP
WAJ Booking MCP allows AI assistants to search for salons, spas, and barbers, retrieve business details, services, prices, and open times, and generate direct booking links to the business's site without handling payments or personal data.
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.mcp.waj.ai/mcpWhat you can do with it
- Find a business by name, service, or area
- Retrieve services, prices, and open times
- Generate a booking link with pre-selected time and professional
Source and maintenance
Protocol and capabilities
- Server
- waj-book 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 6 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
6 advertised
search_businesses — Find a business
Salons, spas, barbers, clinics and other businesses on WAJ that take bookings through AI assistants, by name, service, category or area, nearest first when a location is given. Each result has a `business` value that identifies the business.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Most businesses to return."
},
"query": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Words to match: the business's name, a service (e.g. 'gel nails', 'beard trim'), a category or an area or street. Every word has to match. Omit to list by distance only."
},
"latitude": {
"anyOf": [
{
"type": "number",
"maximum": 90,
"minimum": -90
},
{
"type": "null"
}
],
"title": "Latitude",
"default": null,
"description": "Latitude of where the customer wants to go (their location or the centre of the area they named). Give with longitude to sort nearest first."
},
"longitude": {
"anyOf": [
{
"type": "number",
"maximum": 180,
"minimum": -180
},
{
"type": "null"
}
],
"title": "Longitude",
"default": null,
"description": "Longitude, with latitude."
},
"radius_km": {
"anyOf": [
{
"type": "number",
"maximum": 200,
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"title": "Radius Km",
"default": null,
"description": "Only businesses with a branch within this many km of latitude/longitude."
}
},
"additionalProperties": false
}{
"title": "Find a business",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_business_info — Business info
The business's name, description, contact phone, currency, booking website, and its branches with address, phone, opening hours, time zone and a booking link for each.
{
"type": "object",
"required": [
"business"
],
"properties": {
"business": {
"type": "string",
"title": "Business",
"maxLength": 100,
"minLength": 1,
"description": "The business's `business` value, as given in search results."
}
},
"additionalProperties": false
}{
"title": "Business info",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_services — Services and prices
Services and packages that can be booked online, grouped by category, with duration in minutes and price in the business currency (options, offers and lowest price where they apply). Filter by branch, category or text.
{
"type": "object",
"required": [
"business"
],
"properties": {
"query": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Query",
"default": null,
"description": "Text to match against service, category and package names and descriptions."
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Branch",
"default": null,
"description": "Branch id or name. Omit to list the services of every branch."
},
"business": {
"type": "string",
"title": "Business",
"maxLength": 100,
"minLength": 1,
"description": "The business's `business` value, as given in search results."
},
"category": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
],
"title": "Category",
"default": null,
"description": "Category name to restrict to."
}
},
"additionalProperties": false
}{
"title": "Services and prices",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_staff — Professionals
Professionals customers can choose when booking online, optionally only those who perform a given service (with their price for it, in the business currency) or work at a given branch.
{
"type": "object",
"required": [
"business"
],
"properties": {
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Branch",
"default": null,
"description": "Branch id or name. Omit for every branch."
},
"service": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Service",
"default": null,
"description": "Service id or name; returns only professionals who perform it, with their price for it."
},
"business": {
"type": "string",
"title": "Business",
"maxLength": 100,
"minLength": 1,
"description": "The business's `business` value, as given in search results."
}
},
"additionalProperties": false
}{
"title": "Professionals",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}find_available_times — Available times
Open start times for a service or package at a branch, for one day or up to 7 consecutive days, with any professional or a chosen one. Times are local to the branch. These are the times the business's booking website offers; they are not held.
{
"type": "object",
"required": [
"business"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"default": null,
"description": "First day to search, YYYY-MM-DD, in the branch's local calendar. Defaults to today."
},
"staff": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Staff",
"default": null,
"description": "Professional's staff id or name. Omit for any professional."
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Branch",
"default": null,
"description": "Branch id or name. Required when the business has more than one branch."
},
"option": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Option",
"default": null,
"description": "Option id or name, required when the service has options."
},
"package": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Package",
"default": null,
"description": "Package id or name, instead of service."
},
"service": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Service",
"default": null,
"description": "Service id or name. Give this or package."
},
"business": {
"type": "string",
"title": "Business",
"maxLength": 100,
"minLength": 1,
"description": "The business's `business` value, as given in search results."
},
"end_date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null,
"description": "Last day to search (inclusive), at most 6 days after date. Defaults to date."
}
},
"additionalProperties": false
}{
"title": "Available times",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_booking_link — Booking link
A link to the business's booking website with the branch, service or package, professional and, optionally, an open start time pre-selected (the time is re-checked first). The booking, the customer's details and any payment are completed on the website.
{
"type": "object",
"required": [
"business"
],
"properties": {
"date": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date",
"default": null,
"description": "Day of the chosen start time, YYYY-MM-DD, branch local. Give with time."
},
"time": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Time",
"default": null,
"description": "Chosen start time, HH:MM (24h), branch local, one of the business's open start times. Give with date; needs a service or package."
},
"staff": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Staff",
"default": null,
"description": "Professional's staff id or name to book with."
},
"branch": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Branch",
"default": null,
"description": "Branch id or name to pre-select."
},
"option": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Option",
"default": null,
"description": "Option id or name of the service, used to check the time when the service has options. The customer still picks the option on the site."
},
"package": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Package",
"default": null,
"description": "Package id or name to pre-select instead of a service."
},
"service": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Service",
"default": null,
"description": "Service id or name to pre-select. Give this or package, or neither for the plain booking page."
},
"business": {
"type": "string",
"title": "Business",
"maxLength": 100,
"minLength": 1,
"description": "The business's `business` value, as given in search results."
},
"language": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Language",
"default": null,
"description": "Site language code: en, ar, tr, ru or de. Defaults to the business's default language."
}
},
"additionalProperties": false
}{
"title": "Booking link",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"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
- 1807 ms
- 95th percentile latency
- 1807 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1807 ms · metadata changed · 6 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http waj-booking-mcp https://book.mcp.waj.ai/mcpCodex
codex mcp add waj-booking-mcp --url https://book.mcp.waj.ai/mcpCursor
{
"mcpServers": {
"waj-booking-mcp": {
"url": "https://book.mcp.waj.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"waj-booking-mcp": {
"type": "streamableHttp",
"url": "https://book.mcp.waj.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"waj-booking-mcp": {
"type": "http",
"url": "https://book.mcp.waj.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http waj-booking-mcp https://book.mcp.waj.ai/mcpClaude Desktop
{
"mcpServers": {
"waj-booking-mcp": {
"url": "https://book.mcp.waj.ai/mcp"
}
}
}Windsurf
{
"mcpServers": {
"waj-booking-mcp": {
"serverUrl": "https://book.mcp.waj.ai/mcp"
}
}
}Let your agent find its tools
Find servers like WAJ Booking MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run WAJ Booking 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.