# PRzilla

> OAuth-protected CrossFit and HYROX catalog: workouts, benchmarks, and movement guides.

- name: io.github.kangax/przilla
- version: 1.1.0
- connection class: R2 (oauth_consent_once)
- trust: 97/100
- quality: 100/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.kangax%2Fprzilla
- tools: https://api.protogrid.dev/v1/servers/io.github.kangax%2Fprzilla/tools

**An agent can connect after a one-time OAuth consent by a human.** Remote endpoint behind OAuth 2. Tokens stay with the agent; the registry only exposes the authorization metadata.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "przilla": {
      "type": "http",
      "url": "https://przilla.app/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 100
- freshness: 100
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-100% +updated-4d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 100/100 (strong)

### protocol: n/a (weight 25)

- n/a `protocol.modern`, `protocol.stateless`, `protocol.transport`, `protocol.list_ttl`: no remote answered a protocol handshake (not probed yet, unreachable, or local-only)

### authorization: 100 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- pass `auth.cimd`: Client ID Metadata Documents supported
- 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`: 3 of 3 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 484 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: 3, about 484 tokens to load them all
- tool set hash: 2b1e8992cf040b5418b868af7eb70bbe
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.kangax/przilla.svg)](https://protogrid.dev/servers/io.github.kangax/przilla)
- 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://przilla.app/mcp (streamable-http, auth oauth2, reachable true, uptime30d 1)

## Packages

_none_

## Tools (3)

- `get_workout`: Get a public workout by its exact name or PRzilla slug, including its prescription, scaling notes, movements, and L2–L10 benchmark thresholds for available men's, women's, and vest variants. No personal scores are available.
- `search_movements`: Look up one canonical movement name or alias, such as HSPU or thruster. Returns equipment, technique description, easier versions, progressions, a demo video when available, and example PRzilla workouts. These are catalog suggestions, not personalized prescriptions.
- `search_workouts`: Search the public PRzilla workout catalog by workout name or movement. Optionally filter by category. Returns workout links and short summaries; use get_workout for prescriptions and benchmark targets. Does not search an athlete's workout history.
