# BOP

> Search gyms and personal trainers in Taiwan, check open time slots, and book or cancel sessions.

- name: tw.srct/bop
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 89/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/tw.srct%2Fbop
- tools: https://api.protogrid.dev/v1/servers/tw.srct%2Fbop/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "bop": {
      "type": "http",
      "url": "https://mcp.srct.tw/mcp"
    }
  }
}
```


## Trust

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

## Quality 89/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### 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`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,741 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

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

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 5 of the 7 days needed

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

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

- tools: 9, about 2,741 tokens to load them all
- tool set hash: 0d60b8e3f44826bde1ebc8dabad831ba
- tools last changed: 2026-11-04T08:11:43.076Z
- badge: [![protogrid quality](https://protogrid.dev/badge/tw.srct/bop.svg)](https://protogrid.dev/servers/tw.srct/bop)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-04 `cancel_booking` changed (description)
  - before: Cancel (取消預約) a confirmed, pending or awaiting_payment booking made with request_booking, when the customer asks to. Frees the place for others and cannot be undone; a booking paid online is refunded minus the card processing fee Stripe charged and BOP's fee (5.5% + NT$10). Online cancellation closes at the business's cutoff (online_cancellation in get_business; 120 minutes before the start time unless the business sets a longer one).
  - after: Cancel (取消預約) a confirmed, pending or awaiting_payment booking made with request_booking, when the customer asks to. Frees the place for others and cannot be undone; a booking paid online is refunded minus the card processing fee Stripe charged and BOP's fee (5.5% + NT$10). Online cancellation closes at the business's cutoff (online_cancellation in get_business; 120 minutes before the start time unless the business sets its own cutoff).
- 2026-11-03 `cancel_booking` changed (description)
  - before: Cancel a confirmed, pending or awaiting_payment booking made with request_booking, when the customer asks to. Frees the place for others and cannot be undone; a booking paid online is refunded minus the card processing fee Stripe charged and BOP's fee (5.5% + NT$10). Online cancellation closes at the business's cutoff (online_cancellation in get_business; 120 minutes before the start time unless the business sets a longer one).
  - after: Cancel (取消預約) a confirmed, pending or awaiting_payment booking made with request_booking, when the customer asks to. Frees the place for others and cannot be undone; a booking paid online is refunded minus the card processing fee Stripe charged and BOP's fee (5.5% + NT$10). Online cancellation closes at the business's cutoff (online_cancellation in get_business; 120 minutes before the start time unless the business sets a longer one).
- 2026-11-03 `get_booking_status` changed (description)
  - before: Get the current status of a booking made with request_booking (confirmed, waiting for the business, awaiting online payment, declined, or cancelled), including payment and refund details. Read-only.
  - after: Get the current status of a booking made with request_booking (查預約狀態: confirmed, waiting for the business, awaiting online payment, declined, or cancelled), including payment and refund details. Read-only.
- 2026-11-03 `modify_booking` changed (description)
  - before: Change the slot or quantity of a pending, awaiting_payment or confirmed booking, when the customer asks to. Replaces the booking's time or quantity and frees the old place. Use a slot value from get_availability. A booking paid online can change its slot but not its quantity (cancel and rebook instead). Changes close at the same cutoff as online cancellation.
  - after: Change the slot or quantity (改時間、改人數) of a pending, awaiting_payment or confirmed booking, when the customer asks to. Replaces the booking's time or quantity and frees the old place. Use a slot value from get_availability. A booking paid online can change its slot but not its quantity (cancel and rebook instead). Changes close at the same cutoff as online cancellation.
- 2026-11-03 `complete_booking` changed (description)
  - before: Pay for a booking whose status is awaiting_payment, with a payment credential the customer approved for the booking's amount and currency. payment.handler_id must come from the booking's payment_handlers ("stripe_payments"), and credential is {type: "stripe_payment_token", token: "spt_…"}: a Stripe shared payment token issued to the handler's business_profile. Charges the customer once (repeating the call does not charge twice). Returns the booking (confirmed, or pending if the business confirms it) and the payment result; if payment.status is requires_action, open payment.redirect_url for the customer and call again with the same credential.
  - after: Pay for a booking (付款) whose status is awaiting_payment, with a payment credential the customer approved for the booking's amount and currency. payment.handler_id must come from the booking's payment_handlers ("stripe_payments"), and credential is {type: "stripe_payment_token", token: "spt_…"}: a Stripe shared payment token issued to the handler's business_profile. Charges the customer once (repeating the call does not charge twice). Returns the booking (confirmed, or pending if the business confirms it) and the payment result; if payment.status is requires_action, open payment.redirect_url for the customer and call again with the same credential.
- 2026-11-03 `request_booking` changed (description)
  - before: Create a booking for one open slot on behalf of the customer, after the customer has agreed to the service, time, quantity and contact details. Sends the customer's name, phone and email to the business. The result is either 'confirmed' or 'pending' (waiting for the business to confirm). Payment is at the venue, unless the business takes online payment (payment in get_business): then the status is 'awaiting_payment' with amount, currency, expires_at and payment_handlers, and the place is held until expires_at for complete_booking. Returns booking_id and a one-time status_token for get_booking_status, complete_booking, modify_booking and cancel_booking. Repeating the call for the same contact details, service and slot is rejected as a duplicate.
  - after: Create a booking (訂課、預約) for one open slot on behalf of the customer, after the customer has agreed to the service, time, quantity and contact details. Sends the customer's name, phone and email to the business. The result is either 'confirmed' or 'pending' (waiting for the business to confirm). Payment is at the venue, unless the business takes online payment (payment in get_business): then the status is 'awaiting_payment' with amount, currency, expires_at and payment_handlers, and the place is held until expires_at for complete_booking. Returns booking_id and a one-time status_token for get_booking_status, complete_booking, modify_booking and cancel_booking. Repeating the call for the same contact details, service and slot is rejected as a duplicate.
- 2026-11-03 `get_availability` changed (description)
  - before: List open time slots (Asia/Taipei) for one service in the next 1–14 days, with remaining capacity. Use the returned slot value as-is in request_booking. Read-only.
  - after: List open time slots (Asia/Taipei) for one service in the next 1–14 days, with remaining capacity. Use this when the user asks when they can go or wants a particular day or time (e.g. 「週日早上有空嗎」), and pick the slots on that day and time. Use the returned slot value as-is in request_booking. Read-only.
- 2026-11-03 `get_business` changed (description)
  - before: Get one business's public profile (city, address, hours, booking and cancellation policy, contact, FAQ) and its active services with prices, durations and weekly schedules. Read-only.
  - after: Get one business's public profile (city, address, hours, booking and cancellation policy, contact, FAQ) and its active services with prices, durations and weekly schedules. Use this after search_businesses, or when the user names a business, before checking open times. Read-only.
- 2026-11-03 `search_businesses` changed (description, inputSchema) **meaning changed**
  - before: Search BOP's listed businesses by keyword (business name, city or district, or type of class) and/or category. Returns up to 10 businesses with a few matching services. Read-only.
  - after: Find businesses listed on BOP in Taiwan (personal trainers and coaches, gyms, group-class studios, saunas, recovery services) by keyword and/or category, with a few of their services and prices. Use this when the user wants to find a coach, gym, class or studio in Taiwan, or wants to book or check times but has not named a business, e.g. 「幫我找台北的健身教練」 or 「週日想上重訓課」. keyword takes place and class words in Chinese or English (business name, city or district, type of class); booking and time words such as 訂、預約、週日 are ignored, so check times with get_availability. Returns up to 10 businesses. If nothing matches the keyword, it returns the listed businesses anyway with matched: false. Read-only.

Full history: https://api.protogrid.dev/v1/servers/tw.srct%2Fbop/changes

## Remotes

- https://mcp.srct.tw/mcp (streamable-http, auth none, reachable true, uptime30d 0.95454544)

## Packages

_none_

## Tools (9)

- `cancel_booking`: Cancel (取消預約) a confirmed, pending or awaiting_payment booking made with request_booking, when the customer asks to. Frees the place for others and cannot be undone; a booking paid online is refunded minus the card processing fee Stripe charged and BOP's fee (5.5% + NT$10). Online cancellation closes at the business's cutoff (online_cancellation in get_business; 120 minutes before the start time unless the business sets its own cutoff).
- `complete_booking`: Pay for a booking (付款) whose status is awaiting_payment, with a payment credential the customer approved for the booking's amount and currency. payment.handler_id must come from the booking's payment_handlers ("stripe_payments"), and credential is {type: "stripe_payment_token", token: "spt_…"}: a Stripe shared payment token issued to the handler's business_profile. Charges the customer once (repeating the call does not charge twice). Returns the booking (confirmed, or pending if the business confirms it) and the payment result; if payment.status is requires_action, open payment.redirect_url for the customer and call again with the same credential.
- `get_availability`: List open time slots (Asia/Taipei) for one service in the next 1–14 days, with remaining capacity. Use this when the user asks when they can go or wants a particular day or time (e.g. 「週日早上有空嗎」), and pick the slots on that day and time. Use the returned slot value as-is in request_booking. Read-only.
- `get_booking_link`: For businesses whose booking_mode is external_link: get a link to the business's own booking page for one service. The click is counted for the business. Booking and payment happen on that page.
- `get_booking_status`: Get the current status of a booking made with request_booking (查預約狀態: confirmed, waiting for the business, awaiting online payment, declined, or cancelled), including payment and refund details. Read-only.
- `get_business`: Get one business's public profile (city, address, hours, booking and cancellation policy, contact, FAQ) and its active services with prices, durations and weekly schedules. Use this after search_businesses, or when the user names a business, before checking open times. Read-only.
- `modify_booking`: Change the slot or quantity (改時間、改人數) of a pending, awaiting_payment or confirmed booking, when the customer asks to. Replaces the booking's time or quantity and frees the old place. Use a slot value from get_availability. A booking paid online can change its slot but not its quantity (cancel and rebook instead). Changes close at the same cutoff as online cancellation.
- `request_booking`: Create a booking (訂課、預約) for one open slot on behalf of the customer, after the customer has agreed to the service, time, quantity and contact details. Sends the customer's name, phone and email to the business. The result is either 'confirmed' or 'pending' (waiting for the business to confirm). Payment is at the venue, unless the business takes online payment (payment in get_business): then the status is 'awaiting_payment' with amount, currency, expires_at and payment_handlers, and the place is held until expires_at for complete_booking. Returns booking_id and a one-time status_token for get_booking_status, complete_booking, modify_booking and cancel_booking. Repeating the call for the same contact details, service and slot is rejected as a duplicate.
- `search_businesses`: Find businesses listed on BOP in Taiwan (personal trainers and coaches, gyms, group-class studios, saunas, recovery services) by keyword and/or category, with a few of their services and prices. Use this when the user wants to find a coach, gym, class or studio in Taiwan, or wants to book or check times but has not named a business, e.g. 「幫我找台北的健身教練」 or 「週日想上重訓課」. keyword takes place and class words in Chinese or English (business name, city or district, type of class); booking and time words such as 訂、預約、週日 are ignored, so check times with get_availability. Returns up to 10 businesses. If nothing matches the keyword, it returns the listed businesses anyway with matched: false. Read-only.
