# Shreddy

> Measured mountain bike jumps and speeds at bike parks: public clips, read-only.

- name: ai.shreddy/shreddy
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.shreddy%2Fshreddy
- tools: https://api.protogrid.dev/v1/servers/ai.shreddy%2Fshreddy/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "shreddy": {
      "type": "http",
      "url": "https://api.shreddy.ai/mcp"
    }
  }
}
```


## Trust

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

## Quality 91/100 (strong)

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

### stability: 100 (weight 15)

- pass `stability.changes`: 4 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

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

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

- tools: 4, about 1,755 tokens to load them all
- tool set hash: 5f0ccd00e388a1ceabb50aec97860ccd
- tools last changed: 2026-10-08T01:48:07.515Z
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.shreddy/shreddy.svg)](https://protogrid.dev/servers/ai.shreddy/shreddy)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-08 `get_clip` changed (description, outputSchema)
  - before: One public clip by id: where and when it was filmed, the rider if named, every measurement, how it was calibrated, and for a group clip (a train of riders) each rider with their own stats and link. A clip that is private, removed or does not exist all read as not found.
  - after: One public clip by id: where and when it was recorded (day and clock time at the venue), the rider if named, every measurement (jump height, speed, lap times, plus jump length and airtime), how it was calibrated, and for a group clip (a train of riders) each rider with their own stats, timing and link. `timing` lists each timing line the rider crossed with the lap it closed, the best earlier lap and the difference, and the split from the line before; a rider nobody tagged has crossings with no lap. A clip that is private, removed or does not exist all read as not found.
- 2026-10-08 `search_clips` changed (description, inputSchema, outputSchema)
  - before: Search public clips. Newest first by default; sort "biggest" or "smallest" with a `metric` for the biggest jumps, longest jumps, most airtime or fastest runs (ranked results list each rider of a group clip on their own, and leave out rides with no value for that metric). Filter by `venue`, `feature` (a feature or a run at the venue, e.g. "double black" or "jump 2"), `rider`, and time (`when`, or `since`/`until`). A newest search includes clips with no measurements (normal: no calibration). Every clip has a link to give the viewer. Pass `next_cursor` back as `cursor`, with the same other arguments, for the next page.
  - after: Search public clips. Newest first by default; sort "biggest" or "smallest" with a `metric` for the biggest jumps, longest jumps, most airtime or fastest runs (ranked results list each rider of a group clip on their own, and leave out rides with no value for that metric). Filter by `venue`, `feature` (a feature or a run at the venue, e.g. "double black" or "jump 2"), `rider`, and time (`when`, or `since`/`until`). A newest search includes clips with no measurements (normal: no calibration). Every clip has a link to give the viewer and its lap time (`lap_time_s`) when it has one; laps are not a ranking metric yet. Pass `next_cursor` back as `cursor`, with the same other arguments, for the next page.
- 2026-10-08 `get_venue` changed (description, outputSchema)
  - before: Everything about one bike park in one call: its runs and their features (with clip counts), how many public clips and measured rides it has, its records (the top 3 public rides for jump height, jump length, airtime and speed, biggest first) and its newest clips, each with a link. `venue` is a name ("bradley", "snow summit") or an id.
  - after: Everything about one bike park in one call: its runs and their features (with clip counts), how many public clips and measured rides it has, its records (the top 3 public rides for jump height, speed, jump length and airtime, biggest first; no lap record yet) and its newest clips, each with a link and its lap time when it has one. `venue` is a name ("bradley", "snow summit") or an id.
- 2026-09-30 `get_clip` changed (outputSchema)

Full history: https://api.protogrid.dev/v1/servers/ai.shreddy%2Fshreddy/changes

## Remotes

- https://api.shreddy.ai/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (4)

- `get_clip`: One public clip by id: where and when it was recorded (day and clock time at the venue), the rider if named, every measurement (jump height, speed, lap times, plus jump length and airtime), how it was calibrated, and for a group clip (a train of riders) each rider with their own stats, timing and link. `timing` lists each timing line the rider crossed with the lap it closed, the best earlier lap and the difference, and the split from the line before; a rider nobody tagged has crossings with no lap. A clip that is private, removed or does not exist all read as not found.
- `get_venue`: Everything about one bike park in one call: its runs and their features (with clip counts), how many public clips and measured rides it has, its records (the top 3 public rides for jump height, speed, jump length and airtime, biggest first; no lap record yet) and its newest clips, each with a link and its lap time when it has one. `venue` is a name ("bradley", "snow summit") or an id.
- `list_venues`: List the bike parks (venues) that have public Shreddy clips: name, city, state, how many clips and how many measured rides, the runs and features there, and a link. Filter by `query` (matches name, city or state) or sort nearest first with `near` (coordinates; for a place name like "San Diego", pass its approximate latitude and longitude). Distances come in km and miles. Use it for "what parks do you have" and to learn valid venue names.
- `search_clips`: Search public clips. Newest first by default; sort "biggest" or "smallest" with a `metric` for the biggest jumps, longest jumps, most airtime or fastest runs (ranked results list each rider of a group clip on their own, and leave out rides with no value for that metric). Filter by `venue`, `feature` (a feature or a run at the venue, e.g. "double black" or "jump 2"), `rider`, and time (`when`, or `since`/`until`). A newest search includes clips with no measurements (normal: no calibration). Every clip has a link to give the viewer and its lap time (`lap_time_s`) when it has one; laps are not a ranking metric yet. Pass `next_cursor` back as `cursor`, with the same other arguments, for the next page.
