Agent API & MCP
You can let an AI assistant read your Basecamp activity data and analyze your training for you. Point you agent at your data with an API key, then ask it to summarize your last few weeks, spot trends, or explain a training block.
Access is read-only and scoped to one workspace. An assistant can read your activities and metrics — it can never change your data, start a Strava sync, or reach anyone else's data.
There are two ways to connect, and both use the same key:
- MCP server: the easiest path for AI assistants. You add one server entry and the agent discovers the available tools automatically.
- REST API: plain HTTP endpoints for scripts, notebooks, or any custom tool.
Create an API key
- Open Basecamp → Settings → Connections → API Keys.
- Give the key a name that reminds you where it's used, then choose Create key.
- Copy the key straight away. It's shown once and never again.
A key looks like mnou_sk_ followed by a long random string. Treat it like a password — it grants read access to this workspace's activity data.
Keys are tied to the workspace you created them in. If you use more than one workspace, create a separate key in each.
Connect an assistant (MCP)
For an assistant that supports MCP servers over HTTP with custom headers, add Minou as a server and supply your key in the Authorization header:
{
"mcpServers": {
"minou": {
"url": "https://minou.io/api/agent/mcp",
"headers": { "Authorization": "Bearer mnou_sk_your_key_here" }
}
}
}
Once connected, the assistant can call these tools:
| Tool | What it returns |
|---|---|
list_activities | Your activities, newest first, with date/type/distance filters |
get_activity | One activity with its best efforts |
get_training_summary | Totals and per-week buckets over a date range |
get_training_load | Weekly time-in-zone and effort categories |
get_best_efforts | Personal bests grouped by distance |
get_athlete_profile | Your lactate threshold test, zones, and body composition |
For trend questions, prefer asking for a summary. get_training_summary and get_training_load return one compact result each, so a full analysis takes a few calls rather than pulling every activity one by one — faster, and easier on the database.
Connect a script (REST API)
Every request sends your key as a bearer token against https://minou.io:
curl "https://minou.io/api/agent/activities?type=Run&limit=20" \
-H "Authorization: Bearer mnou_sk_your_key_here"
| Endpoint | Returns |
|---|---|
GET /api/agent/activities | Paginated activity list (from, to, type, limit, cursor, distance filters) |
GET /api/agent/activities/{stravaId} | One activity with best efforts |
GET /api/agent/summary | Training summary (defaults to the last 90 days) |
GET /api/agent/training-load | Per-week time-in-zone and effort categories |
GET /api/agent/best-efforts | Personal bests by distance |
GET /api/agent/profile | Lactate threshold test, zones, and body composition |
To page through a long list, pass the nextCursor from each response back as cursor until it comes back empty.
Example: analyze recent training
A typical request like "summarize my last 8 weeks of training" runs in two or three steps:
- The assistant calls
get_training_summaryfor the last 8 weeks to see volume and activity mix. - It calls
get_training_loadfor the same window to see how hard that training was. - It optionally reads
get_athlete_profilefor your zones and threshold, then writes the summary.
Limits
- Each key is limited to 60 requests per minute. If an assistant goes over, requests are briefly refused and it should retry after a moment.
- Requests return at most 200 activities per page, and summary ranges are capped at two years.
Security
- Keys are secrets. Store them in your assistant's configuration, not in shared files or anything you commit to a repository.
- A key only ever sees its own workspace and user.
- Revoke a key any time from Basecamp → Settings → Connections → API Keys. Revocation takes effect immediately, on the next request.
- All access is read-only. Nothing an assistant does through this can change your data or touch Strava.
To connect the account that supplies this data in the first place, see Strava Sync. To manage keys and connections, see Basecamp Settings — Connections.