Koskamo

ERA Phuket Booking MCP

An official MCP server provided by ERA Barbershop & Beauty Space in Phuket that enables AI agents to interact with the salon's booking system. It exposes tools to list available services, find open time slots, create new appointments, retrieve booking links, and access general salon information without requiring authentication.

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.

ERA Phuket Booking MCP logo, by ERA Barbershop & Beauty SpaceVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by ERA Barbershop & Beauty Space
MCP endpoint (Streamable HTTP)
https://eraphuket.com/mcp
Vendor documentation

What you can do with it

  • List available beauty and barber services
  • Find open appointment slots
  • Create a new booking for a client
  • Retrieve salon contact and info

Source and maintenance

Vendor evidenceRegistry 1.0.0

Protocol and capabilities

Server
era-phuket 1.0.0
MCP protocol
2025-06-18
Tools
7 advertised
Resources
2 advertised
Resource templates
0 advertised
Prompts
1 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "prompts": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

ERA Barbershop & Beauty Space — beauty space and barbershop in Bang Tao, Phuket (Thailand), open daily 10:00–21:00 (Asia/Bangkok, UTC+7). Women: manicure, pedicure, nail extensions, four-hands mani+pedi, hair colouring by Russian colourists, hair rituals. Men: haircuts, beard, royal shave, grey blending, facial. Prices are in Thai baht and synced with the salon booking system. Staff speak Russian, English and Thai. Typical flow: list_services → find_available_slots → confirm service, master, date/time, client name and phone with the user → create_booking. Never book without explicit user confirmation. If booking is not possible, give the user get_booking_link.

Tools

7 advertised

get_salon_info — Salon info
Advertised by the server during the last successful anonymous check.
Advertised read-only

Address (English and Thai for taxi drivers), map links, opening hours, phone/WhatsApp/Telegram, languages spoken and booking options of ERA in Bang Tao, Phuket.

get_salon_info input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {}
}
get_salon_info annotations
{
  "title": "Salon info",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_services — Services & prices
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search ERA services with current prices in THB, durations and master levels (ONE / PRO / PRIME). Use q for keywords in any language (e.g. "gel manicure", "балаяж", "beard").

list_services input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 80,
      "description": "Search text"
    },
    "lang": {
      "enum": [
        "en",
        "ru",
        "zh",
        "th",
        "de",
        "fr",
        "he"
      ],
      "type": "string",
      "description": "Language for service names"
    },
    "audience": {
      "enum": [
        "women",
        "men",
        "all"
      ],
      "type": "string",
      "description": "Filter by audience"
    }
  }
}
list_services annotations
{
  "title": "Services & prices",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_available_slots — Free time slots
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Live free start times from the salon calendar for one or more services, optionally with a specific master (staff_id). Returns dates with times (Asia/Bangkok) and masters who do the service.

find_available_slots input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "service_ids"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "First date to check, YYYY-MM-DD (default today)"
    },
    "days": {
      "type": "integer",
      "maximum": 7,
      "minimum": 1,
      "description": "How many bookable days to return (default 3)"
    },
    "staff_id": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "Master ID; omit or 0 for any master"
    },
    "service_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991
      },
      "maxItems": 5,
      "minItems": 1,
      "description": "Service IDs from list_services"
    }
  }
}
find_available_slots annotations
{
  "title": "Free time slots",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
create_booking — Book an appointment
Advertised by the server during the last successful anonymous check.
Open-world

Creates a real appointment in the salon calendar. ONLY call after the user explicitly confirmed: services, master (or any), date and time, their name and phone. The salon may contact the client to confirm.

create_booking input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "service_ids",
    "datetime",
    "client_name",
    "client_phone"
  ],
  "properties": {
    "lang": {
      "enum": [
        "en",
        "ru",
        "zh",
        "th",
        "de",
        "fr",
        "he"
      ],
      "type": "string"
    },
    "comment": {
      "type": "string",
      "maxLength": 400,
      "description": "Wishes for the master, preferred language, etc."
    },
    "datetime": {
      "type": "string",
      "description": "Start time from find_available_slots, e.g. 2026-10-22T14:00:00+07:00"
    },
    "staff_id": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991,
      "description": "0 or omitted = any available master"
    },
    "client_name": {
      "type": "string",
      "maxLength": 80,
      "minLength": 1
    },
    "service_ids": {
      "type": "array",
      "items": {
        "type": "integer",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991
      },
      "maxItems": 5,
      "minItems": 1
    },
    "client_email": {
      "type": "string",
      "maxLength": 120
    },
    "client_phone": {
      "type": "string",
      "maxLength": 24,
      "minLength": 6,
      "description": "International format, e.g. +66 81 234 5678"
    }
  }
}
create_booking annotations
{
  "title": "Book an appointment",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
get_booking_link — Booking link
Advertised by the server during the last successful anonymous check.
Advertised read-only

A link where the user can complete booking themselves, with the service and master preselected.

get_booking_link input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "staff_id": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    },
    "service_id": {
      "type": "integer",
      "maximum": 9007199254740991,
      "minimum": -9007199254740991
    }
  }
}
get_booking_link annotations
{
  "title": "Booking link",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
search — Search ERA
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search ERA services, prices and salon information. Returns ids for fetch.

search input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "query"
  ],
  "properties": {
    "query": {
      "type": "string",
      "maxLength": 120
    }
  }
}
search annotations
{
  "title": "Search ERA",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
fetch — Fetch ERA item
Advertised by the server during the last successful anonymous check.
Advertised read-only

Full details for an id returned by search.

fetch input schema
{
  "type": "object",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "required": [
    "id"
  ],
  "properties": {
    "id": {
      "type": "string",
      "maxLength": 60
    }
  }
}
fetch annotations
{
  "title": "Fetch ERA item",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

1 advertised

book_visit — Book a visit to ERA

Advertised by the server during the last successful anonymous check.

Guided booking: pick a service, check free times, confirm and book.

service
No description
when
No description

Resources

2 advertised

salon — ERA salon facts

Advertised by the server during the last successful anonymous check.

Address, hours, contacts, languages

salon URI
era://salon

MIME type: application/json

prices — ERA price list (THB)

Advertised by the server during the last successful anonymous check.

All services with current prices

prices URI
era://prices

MIME type: application/json

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
1228 ms
95th percentile latency
1228 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 1228 ms · metadata changed · 7 tool(s), 2 resource(s), 0 resource template(s), 1 prompt(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http era-phuket-booking-mcp https://eraphuket.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add era-phuket-booking-mcp --url https://eraphuket.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable era-phuket-booking-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "era-phuket-booking-mcp": {
      "url": "https://eraphuket.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "era-phuket-booking-mcp": {
      "type": "streamableHttp",
      "url": "https://eraphuket.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start era-phuket-booking-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "era-phuket-booking-mcp": {
      "type": "http",
      "url": "https://eraphuket.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http era-phuket-booking-mcp https://eraphuket.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "era-phuket-booking-mcp": {
      "url": "https://eraphuket.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "era-phuket-booking-mcp": {
      "serverUrl": "https://eraphuket.com/mcp"
    }
  }
}

Let your agent find its tools

Find servers like ERA Phuket Booking MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run ERA Phuket 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.

Claim this listing