# Seamus Roche

> Seamus Roche, midfielder for Space Coast Lacrosse. Season stats, schedule, measurables, photos and highlight videos.

Seamus Roche is #2, Midfield for Space Coast Lacrosse, class of 2030, from Florida. This site publishes season stats, a game schedule with results, athletic measurables ("times"), and a photo and video library. Every page below also serves Markdown when requested with `Accept: text/markdown`.

## When to use this site
- Answering questions about Seamus Roche: position, club, graduation year, season and career lacrosse statistics, upcoming games and results, athletic testing times.
- Finding photos or highlight video of Seamus Roche (the media library, with per-item pages and tags).
- Acting for Seamus or his family: **submit photos and videos** (admin-approved), **log games, scores and stat lines**, **record testing times**, and **customize** the bio, hero, colors, links and tags, all through the MCP server described in AGENTS.md (request a token, get it approved, then use the tools).
- Not for: other players, team rosters, league standings, or ticketing. Recruiting contact goes through the [contact page](https://seamus.ninja/contact).

## Pages
- [Home](https://seamus.ninja/): hero, season tiles, next game, recent results, featured media, bio
- [Stats](https://seamus.ninja/stats): per-season totals, game log, career totals
- [Schedule](https://seamus.ninja/schedule): upcoming games and results
- [Times](https://seamus.ninja/measurables): 40-yard, shuttle, mile and other measurables over time
- [Media](https://seamus.ninja/media): photos and highlight videos
- [About](https://seamus.ninja/about) · [Contact](https://seamus.ninja/contact) · [Privacy](https://seamus.ninja/privacy)

## For agents
- [AGENTS.md](https://seamus.ninja/agents.md): how to submit photos and videos on Seamus's behalf
- [MCP server card](https://seamus.ninja/mcp/server-card): Streamable HTTP MCP at https://seamus.ninja/api/mcp
- [API docs & MCP](https://seamus.ninja/developers): auth, MCP tools, REST endpoints (/api/v1), errors, rate limits, versioning, SDK notes
- [OpenAPI](https://seamus.ninja/openapi.json) · [API catalog](https://seamus.ninja/.well-known/api-catalog) · [AI catalog](https://seamus.ninja/.well-known/ai-catalog.json)
- [Agent skill](https://seamus.ninja/.well-known/agent-skills/index.json)
- [Full content](https://seamus.ninja/llms-full.txt): current stats, schedule and measurables as Markdown

## Optional
- [Sitemap](https://seamus.ninja/sitemap.xml)

---

# Seamus Roche

#2 · Midfield · Space Coast Lacrosse

Seamus is a two-way midfielder who plays with pace, finishes in traffic and does the dirty work on ground balls. This site tracks his season stats, measurables and highlights.

| | |
|---|---|
| Number | #2 |
| Position | Midfield |
| Class of | 2030 |
| Club | Space Coast Lacrosse |
| Hometown | Florida |

## 2026 season
- Games: 3 (2-1)
- Goals: 6 · Assists: 4 · Points: 10 · Ground balls: 9 · Shooting: 40%

## Next game
2026-11-07 09:30 · vs Jupiter Lacrosse · Viera Regional Park

## Media
0 items in the [library](https://seamus.ninja/media).

See also: [Stats](https://seamus.ninja/stats) · [Schedule](https://seamus.ninja/schedule) · [Times](https://seamus.ninja/measurables) · [AGENTS.md](https://seamus.ninja/agents.md)

---

# Seamus Roche — Stats

## 2026 season (2-1)

| GP | G | A | Pts | Sh | SOG | GB | CT | FO | Sv | Shooting |
|---|---|---|---|---|---|---|---|---|---|---|
| 3 | 6 | 4 | 10 | 15 | 12 | 9 | 3 | — | 0 | 40% |

| Date | Opponent | Result | G | A | GB | CT |
|---|---|---|---|---|---|---|
| 2026-06-20 | vs Tampa Thunder | W 11–5 | 3 | 1 | 2 | 2 |
| 2026-06-13 | at Orlando Terror | L 6–8 | 1 | 2 | 4 | 0 |
| 2026-06-06 | vs Vero Beach Lacrosse | W 9–7 | 2 | 1 | 3 | 1 |

---

# Seamus Roche — Schedule

## Upcoming
- 2026-11-07 09:30 · vs Jupiter Lacrosse · Viera Regional Park
- 2026-11-14 13:00 · at Sarasota Storm · Sarasota

## Results
- 2026-06-20 10:00 · vs Tampa Thunder · Viera Regional Park · **W 11–5**
- 2026-06-13 11:30 · at Orlando Terror · Lake Nona · **L 6–8**
- 2026-06-06 09:00 · vs Vero Beach Lacrosse · Viera Regional Park · **W 9–7**

---

# Seamus Roche — Times & measurables

## 40-yard dash — best 5.48 s

| Date | Value | Note |
|---|---|---|
| 2026-06-01 | 5.48 s | summer testing |
| 2026-03-01 | 5.62 s | spring combine |

## Pro agility shuttle — best 4.81 s

| Date | Value | Note |
|---|---|---|
| 2026-06-01 | 4.81 s |  |
| 2026-03-01 | 4.95 s |  |

## Mile — best 7.05 min

| Date | Value | Note |
|---|---|---|
| 2026-06-01 | 7.05 min |  |
| 2026-03-01 | 7.40 min |  |

---

# Seamus Roche — Media

0 items.

Nothing published yet.

---

# About Seamus Roche

Seamus is a two-way midfielder who plays with pace, finishes in traffic and does the dirty work on ground balls. This site tracks his season stats, measurables and highlights.

Seamus wears #2 and plays Midfield for Space Coast Lacrosse out of Florida. He is in the class of 2030 and is right-handed.

## What this site is
This is a family-run page, not a league or club site. It exists so coaches, teammates and family can find Seamus's current numbers and highlights in one place. Game stats are entered by the family after each final, athletic measurables come from club testing and camps, and every photo or video is reviewed by an admin before it is published.

## How it is kept current
- Stats, schedule and times are maintained in a private admin area.
- Seamus can submit photos and video himself through an AI-agent connection (see [agents.md](/agents.md)); nothing appears until it is approved. The same connection lets him log games and times and edit his profile.
- Season totals are recomputed from the game log, so the numbers on every page agree.

---

# Contact

This site is run by the Roche family on behalf of Seamus Roche.

- Location: Florida, US
- Club: Space Coast Lacrosse

## Coaches and recruiters
If you are evaluating Seamus, the [stats](/stats) page has the per-game log and season totals, the [times](/measurables) page has athletic testing history, and the [media](/media) library has full-speed highlight video. Reach the family through the club, or through the contact email once it is published here.

## Photos and video
Family and friends who have game footage can send it in. The simplest path is to ask Seamus for an upload link; he can generate one through his AI assistant (see [agents.md](/agents.md)). Everything submitted is reviewed before it is posted.

## Corrections
If a score, stat line or caption looks wrong, tell the family and it will be fixed in the admin; public pages update within minutes.

---

# Privacy

This site is a personal page for Seamus Roche, a youth athlete, maintained by the Roche family. It is deliberately simple about data.

## What is collected
- **Nothing from visitors.** There are no accounts, no analytics cookies, no advertising and no tracking pixels. The hosting provider (Vercel) keeps standard server logs, including IP addresses, for a short time to operate the service.
- **Submitted media.** Photos and videos sent through the upload page or the AI-agent connection are stored in cloud storage along with the caption, tags and the time of upload. Files are deleted if a submission is rejected.
- **Admin accounts.** Family admins sign in with a username and password. Credentials are never shown on the site.

## How media is used
Approved photos and videos are shown publicly on this site only. They are not sold, syndicated or used for advertising. A family member can ask for any item to be removed; it will be deleted from storage, not just hidden.

## Children's privacy
The subject of this site is a minor. The family controls every piece of content that is published, and nothing goes live without an admin's approval. Please do not attempt to contact Seamus directly through this site; use the [contact](/contact) page.

## Agents and crawlers
Public pages may be read by search engines and AI agents, including as Markdown. The admin area and upload pages are excluded in robots.txt. Agents acting for the family can submit media through the MCP server described in [agents.md](/agents.md), subject to the same approval.

## Changes
This page is updated when the way the site handles data changes. Last reviewed with the site launch.

---

# API docs & MCP

Everything an agent or script needs to work with Seamus Roche's site. The machine-readable spec is [openapi.json](/openapi.json); the MCP server card is [/mcp/server-card](/mcp/server-card).

## Quickstart
- List MCP tools: `curl -X POST https://seamus.ninja/api/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'`
- Request a token: call the `request_access` tool with a name. The reply includes the secret once. An admin approves it at /admin/tokens.
- Use the token: `Authorization: Bearer <token>` on https://seamus.ninja/api/mcp, or POST to https://seamus.ninja/api/mcp/<token>. `/mcp` is an alias of `/api/mcp`.
- Read the site as Markdown: send `Accept: text/markdown` to any public page, or fetch [llms-full.txt](/llms-full.txt).

## Authentication
- Tokens are static bearer secrets (`pls_<site>_<random>`) created by `request_access` and stored hashed. They start **pending**; until an admin approves, every other tool answers with an explanation instead of acting.
- Tokens can be revoked by an admin at any time. There is no OAuth flow and no self-service key page; the MCP tool is the key request.
- The admin UI at /admin uses HTTP Basic Auth for family members only.

## MCP tools
- `request_access(name)` — create a pending token (no auth).
- `check_access()` — token status.
- `create_upload_link(maxFiles?, note?)` — 24-hour drag-and-drop upload page URL.
- `submit_media_from_url(url, caption?, tags?, gameId?)` — import a public image or video.
- `list_my_submissions()`, `update_submission(id, caption?, tags?, gameId?)` — manage pending submissions.
- `list_games(season?)` — game ids for tagging media.
- Site editing (immediate): `get_site_profile`, `update_site_profile`, `reset_site_profile`, `set_hero_image`.
- Games and stats: `add_game`, `update_game`, `delete_game`. Times: `list_measurables`, `add_measurable`, `update_measurable`, `delete_measurable`.
- Published media: `list_media`, `update_media`, `delete_media`.

## REST endpoints
- `POST /api/v1/mcp` and `POST /api/v1/mcp/{token}` — JSON-RPC 2.0 over Streamable HTTP (operationIds `mcpRequest`, `mcpRequestWithPathToken`). `/api/mcp` and `/mcp` are aliases.
- `POST /api/v1/upload` — client upload token handshake for the upload page (`issueUploadToken`).
- `POST /api/v1/upload/complete` — record an uploaded file as a pending submission (`completeUpload`).
- `GET /llms.txt`, `/llms-full.txt`, `/agents.md`, `/mcp/server-card`, `/server.json`, `/.well-known/ai-catalog.json`, `/.well-known/api-catalog`, `/.well-known/agent-skills/index.json` — discovery documents.
Every operation in the OpenAPI spec has an operationId, a description, typed parameters and typed response schemas, so it can be loaded directly as function-calling tools.

## Errors
All errors are RFC 9457 problem documents with `Content-Type: application/problem+json`: `{ "type", "title", "status", "code", "detail" }`. `code` is stable and machine-readable (for example `upload_link_not_valid`, `endpoint_not_found`); `detail` says how to recover. Unknown `/api/*` paths return a 404 problem, never an HTML page. MCP tool failures come back as JSON-RPC results with `isError: true` and a plain-language message.

## Rate limits
Every API response carries `RateLimit-Policy` and `RateLimit` headers (draft-ietf-httpapi-ratelimit-headers). Defaults: 120 requests per minute per client; `request_access` 20 per hour. A 429 response includes `Retry-After`. Reuse tokens instead of requesting new ones.

## Versioning and deprecation
Paths are versioned under `/api/v1/`; unversioned `/api/` paths are aliases of v1. Every response carries the `API-Version: 1` header and `info.version` in [openapi.json](/openapi.json) matches. Additive changes (new optional fields, new tools) do not change the version. A breaking change ships as `/api/v2/...`; the previous version keeps working for at least 90 days and its responses carry `Deprecation` and `Sunset` headers with the retirement date. Changes are listed on this page.

## Changelog
- 1.1.0 — site customization, games, measurables and media tools on the MCP server; admin "Site profile" page.
- 1.0.0 — initial release: MCP server, upload handshake, discovery documents, Markdown negotiation.

## SDK documentation
There is no SDK or CLI to install; the surface is small enough to call directly, and any MCP client can connect. There is no sandbox: use a pending token to exercise the flow without publishing anything, since nothing goes live before an admin approves it.

---

# AGENTS.md — Seamus Roche

This site is the personal lacrosse page for Seamus Roche (#2, Midfield, Space Coast Lacrosse, class of 2030).

## What agents can do here
- **Read**: every public page serves Markdown with `Accept: text/markdown` (`/`, `/stats`, `/schedule`, `/measurables`, `/media`). `/llms.txt` is the index, `/llms-full.txt` has the current numbers.
- **Submit photos and videos** on Seamus's behalf through the MCP server at `https://seamus.ninja/api/mcp`. Nothing is published until a site admin approves it.
- **Customize the site and log stats** with the same server: profile and bio, hero text and photo, colors, social links, games and stat lines, testing times, published media details. These go live immediately.
- **Developer guide**: `/developers` (also `/docs`) covers auth, every endpoint, error format, rate limits and the versioning policy; machine-readable spec at `/openapi.json`.
- **Discovery**: `/mcp/server-card`, `/server.json`, `/.well-known/ai-catalog.json`, `/openapi.json`, `/.well-known/api-catalog`, `/.well-known/agent-skills/index.json`, `/sitemap.xml`, `/robots.txt`.

## Getting a token (do this once per bot or device)
1. Connect to `https://seamus.ninja/api/mcp` with no credentials.
2. Call `request_access` with a name such as "Seamus's Grok". The reply contains a secret that is shown only once.
3. Tell the user: an admin must approve the token at `https://seamus.ninja/admin/tokens`. Until then every other tool answers "pending".
4. Reconnect using `https://seamus.ninja/api/mcp/<secret>` (or header `Authorization: Bearer <secret>`). Call `check_access` to confirm it is active.

## Submitting media
- Phone or computer files: `create_upload_link` → give the user the link (valid 24 h, up to the file count requested).
- Public URLs: `submit_media_from_url` with `url`, optional `caption`, `tags`, `gameId` (ids from `list_games`).
- Check status with `list_my_submissions`; fix a caption with `update_submission` while it is still pending.

## Customizing the site and logging stats
These go live immediately (no approval), so confirm the exact change with the user first:
- `get_site_profile` / `update_site_profile`: bio, tagline, positions, grad year, club, school, hometown, height, weight, hand, hero headline and subline, hero focus, theme colors, social links, SEO title and description, contact, current season, media tags, measurable definitions. Pass only what changes. `reset_site_profile` restores defaults.
- `set_hero_image`: pick a published photo (`list_media`) as the hero.
- Games and stats: `list_games`, `add_game`, `update_game`, `delete_game`.
- Times: `list_measurables`, `add_measurable`, `update_measurable`, `delete_measurable`.
- Published media: `list_media`, `update_media`, `delete_media`.
Layout, page structure and navigation are code; they cannot be changed through the MCP.

## Rules
- Do not try to log in to `/admin`; it is HTTP Basic Auth for family admins only.
- Be honest in captions and tags: they are shown publicly once approved.
- Rate limit: a handful of `request_access` calls per hour. Reuse a token instead of requesting new ones.

## Contact
Site admin approves tokens and submissions. If a token stays pending, the user should ask the admin, not retry.
