# Mane

> Find a barber, stylist or esthetician who has opted in on Mane and get a prefilled booking link.

- name: com.joinmane/booking
- version: 2.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 100/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.joinmane%2Fbooking
- tools: https://api.protogrid.dev/v1/servers/com.joinmane%2Fbooking/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "booking": {
      "type": "http",
      "url": "https://api.joinmane.com/api/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% +updated-21d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 100/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 5 of 5 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 945 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 5, about 945 tokens to load them all
- tool set hash: 778cfcf52d20cca21ecf90f243e8b445
- badge: [![protogrid quality](https://protogrid.dev/badge/com.joinmane/booking.svg)](https://protogrid.dev/servers/com.joinmane/booking)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://api.joinmane.com/api/mcp (streamable-http, auth none, reachable true, uptime30d 0.9746835)

## Packages

_none_

## Tools (5)

- `get_booking_link`: Checks that a service, date and start time are open right now, and returns a joinmane.com link to the operator’s booking page with that service, date and time filled in. It does not book, hold the time, charge or contact anyone: the booking is made only when the client opens the link and confirms it on joinmane.com, where the operator’s card and cancellation rules apply. If the time is not open, the result is an error listing the open times that day.
- `get_operator`: Returns the public profile of one listed operator: display name, business name, city, profession, years of experience, bio, Instagram handle and booking page URL. Provide exactly one of slug or operator_id.
- `list_availability`: Lists the open start times for one service on one date, from the same rules as the operator’s booking page: their hours, breaks, days off, existing bookings and the same-day notice. Each slot has start_time (HH:MM, the operator’s local time), is_after_hours, and the price that applies at that time, which can differ from the list price. An empty list means nothing is open that day.
- `list_services`: Lists the active services of one listed operator: service_id, name, description, duration in minutes, list price, after-hours price when the operator set one, and whether it is a mobile or request-only service. Provide exactly one of slug or operator_id.
- `search_operators`: Lists barbers, stylists, nail techs and estheticians on Mane who have chosen to be found through AI assistants. Returns each operator’s slug, operator_id, display name, business name, city, profession and booking page URL. Operators who have not opted in are never returned. Optional filters match part of the city or profession, case-insensitive.
