# Local Gym Finder directory

> Gyms in all 50 states and DC: search by city, type and hours; book with partner gyms.

- name: com.localgymfinder/directory
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 81/100 flags: no-repository
- quality: 94/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.localgymfinder%2Fdirectory
- tools: https://api.protogrid.dev/v1/servers/com.localgymfinder%2Fdirectory/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "directory": {
      "type": "http",
      "url": "https://localgymfinder.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 94/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### 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`: 7 of 7 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,349 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: 7, about 1,349 tokens to load them all
- tool set hash: 54b5b9ced9de4df0814f289b492f7bda
- tools last changed: 2026-11-02T13:00:48.896Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.localgymfinder/directory.svg)](https://protogrid.dev/servers/com.localgymfinder/directory)
- 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-02 `search_businesses` changed (description)
  - before: Search Local Gym Finder (213005 listings). All filters optional. place = town, city, neighbourhood or state as written ('Point Pleasant Beach', 'Austin, TX'). category = a name from list_categories. near_lat/near_lng sort by distance within radius_km.
  - after: Search Local Gym Finder (213003 listings). All filters optional. place = town, city, neighbourhood or state as written ('Point Pleasant Beach', 'Austin, TX'). category = a name from list_categories. near_lat/near_lng sort by distance within radius_km.

Full history: https://api.protogrid.dev/v1/servers/com.localgymfinder%2Fdirectory/changes

## Remotes

- https://localgymfinder.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.8636364)

## Packages

_none_

## Tools (7)

- `book_appointment`: Book a time from check_availability for the person you are helping. First confirm the business, the time, their name, email and mobile number with them, then call with confirmed=true. The business receives the booking on its calendar and the person's contact details for this booking only.
- `check_availability`: Open times for a business that has can_book, read live from its calendar. start_date (YYYY-MM-DD) and days (1-30) narrow the range. Times are ISO 8601 in the business's time zone; pass one back unchanged to book_appointment.
- `contact_business`: Send a question, quote request or callback request to a business that has can_contact (kinds it takes are in get_business). The business gets the message and the person's name, email and phone (phone required for callbacks) and replies to them directly. Confirm the message and details with the person first, then call with confirmed=true.
- `get_business`: Full listing for one business by the id search_businesses returned: hours, phone, address, prices, classes, amenities, offers, the business's own services and prices when it publishes them here, and what can be done through this directory (book, message).
- `list_categories`: Every category in this directory with how many listings each has.
- `list_places`: Towns, areas, cities or states covered, with listing counts. Filter by state or by part of a name.
- `search_businesses`: Search Local Gym Finder (213003 listings). All filters optional. place = town, city, neighbourhood or state as written ('Point Pleasant Beach', 'Austin, TX'). category = a name from list_categories. near_lat/near_lng sort by distance within radius_km.
