---
title: "Stride Run Club API & Developer Docs"
description: "Developer documentation for Stride Run Club: two read-only MCP servers, an NLWeb /ask endpoint, a markdown representation of every public page, and structured feeds. No credential required, no write API, no SDK needed."
canonical: https://www.strideclub.in/developers
last-updated: 2026-08-27
---
# Stride Run Club API & Developer Docs

> Read Stride's events, prices, leaderboard and milestone tiers programmatically. Everything is read-only, anonymous, and covers the same data the website already shows anyone.

## Three things to know first

- **No API key.** Nothing to register for. Stride issues and accepts no credentials — sending an `Authorization` header returns 401 with an RFC 9728 pointer.
- **No write API.** Registration, payment and check-in are performed by the person in their own browser and are not delegable to an agent.
- **No SDK.** Plain HTTP and JSON. Use `fetch`, or any MCP client. There is no npm or PyPI package, and none is needed.

## Start here

```bash
# What runs are coming up?
curl -s https://www.strideclub.in/events.md

# Ask in plain language, get schema.org items back
curl -s -X POST https://www.strideclub.in/ask \
  -H 'content-type: application/json' \
  -d '{"query":"free beginner runs in Bengaluru"}'

# Or connect an MCP client
npx @modelcontextprotocol/inspector https://www.strideclub.in/mcp
```

## MCP servers

Two streamable-HTTP servers, version 1.0.0. One for doing, one for learning. Both stateless, so no session handling is needed. Add `?sandbox=1` to either to work against synthetic fixtures instead of live data.

### Stride Run Club

`https://www.strideclub.in/mcp`

Read-only access to Stride Run Club event, pricing, leaderboard and milestone data for Bengaluru. Includes interactive event and leaderboard views.

| Tool | Arguments | UI |
| --- | --- | --- |
| `list_events` | when ("upcoming" | "past" | "all"), maxPricePaise, maxDistanceKm, difficulty, limit | — |
| `get_event` | slug (required) | — |
| `show_event` | slug (required) | MCP Apps |
| `get_leaderboard` | limit (1-50, default 10) | — |
| `show_leaderboard` | limit (1-50, default 10) | MCP Apps |
| `get_milestone_tiers` | no parameters | — |
| `get_club_info` | no parameters | — |

### Stride Run Club Documentation

`https://www.strideclub.in/mcp/docs`

Search and fetch everything Stride Run Club publishes — blog posts, FAQ, pricing rules, milestone rules and every public page as markdown.

| Tool | Arguments | UI |
| --- | --- | --- |
| `search_docs` | query (required), kind ("page" | "blog" | "original" | "faq" | "person"), limit (1-25) | — |
| `get_page_markdown` | path (required, e.g. "/pricing") | — |
| `list_pages` | no parameters | — |
| `answer_faq` | question (required) | — |

## Natural-language endpoint

`POST https://www.strideclub.in/ask` implements Microsoft's NLWeb protocol by retrieval rather than generation — it returns the matching schema.org items, not a paraphrase, so there is no model in the path. Send `Accept: text/event-stream` for SSE (`start`, `result`, `complete`).

Returns `SportsEvent`, `BlogPosting`, `Question`, `EventSeries`, `Person` and `WebPage`. Max query length 500 characters, max 25 results.

## Every page as markdown

Append `.md` to any public path, or send `Accept: text/markdown`. Known AI-bot user agents receive markdown without asking. Each response opens with a `---` frontmatter block carrying title, description, canonical and last-updated.

Athlete profiles are deliberately excluded — they are per-person and members can make them private. A path with no markdown twin returns a real 404 with a markdown recovery body.

## Structured feeds

- [https://www.strideclub.in/feeds/events.jsonl](https://www.strideclub.in/feeds/events.jsonl) — schema.org `SportsEvent`, one per line
- [https://www.strideclub.in/feeds/blog.jsonl](https://www.strideclub.in/feeds/blog.jsonl) — schema.org `BlogPosting`, full article body included
- [https://www.strideclub.in/schemamap.xml](https://www.strideclub.in/schemamap.xml) — NLWeb feed index, declared from robots.txt

## Conventions

- **Errors are RFC 9457 problem details**, served as `application/problem+json` with a stable `code` to branch on, a `detail` for your log and a `hint` for what to do. Branch on `code`, never on the prose. Every unmatched path under `/ask`, `/mcp`, `/feeds`, `/api` and `/.well-known` answers this way, so a wrong path never hands you an HTML page.
- **Pagination is cursor-based.** Read `_meta.next_cursor` and pass it back as `cursor`; `null` is the last page, and `_meta.total` is stable across pages. Cursors are opaque — pass them back verbatim, never construct one.
- **POST accepts an `Idempotency-Key`.** A retry with the same key and body replays the first response instead of re-running the query, so a dropped connection costs nothing and no extra rate-limit budget. Replays carry `Idempotent-Replayed: true`. Stored for ten minutes, per instance.

## Rate limits

MCP endpoints allow **120 requests a minute** per client; `/ask` allows **60**, because each call scans the whole corpus. Successful `/ask` responses carry `RateLimit-Remaining`; a `429` carries `Retry-After`. The MCP endpoints and the discovery documents send them too.

Counted per serverless instance rather than globally — the platform gives no shared memory between invocations, so a caller spread across cold starts sees a higher effective ceiling. It is a guard against a runaway loop, not a defence against a distributed one.

## Reference

- [OpenAPI 3.1 description](https://www.strideclub.in/openapi.json)
- [Authentication guide](https://www.strideclub.in/auth.md) — short version: there is none, and why
- [Site manual for agents](https://www.strideclub.in/llms.txt)
- [MCP server card](https://www.strideclub.in/.well-known/mcp/server-card.json)
- [A2A agent card](https://www.strideclub.in/.well-known/agent-card.json)
- [API catalog, RFC 9727](https://www.strideclub.in/.well-known/api-catalog)
- [Agent skills index](https://www.strideclub.in/.well-known/agent-skills/index.json)
- [Structured agent view](https://www.strideclub.in/?mode=agent)

## Source

This site is open source, including `AGENTS.md` and three agent skills: https://github.com/striderunbengaluru-tech/stride-web-frontend

If you need a capability Stride does not expose, open an issue or email striderunclubbengaluru@gmail.com — nothing is hidden, so the list above is the whole surface.
