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

  1. Open Basecamp → Settings → Connections → API Keys.
  2. Give the key a name that reminds you where it's used, then choose Create key.
  3. 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:

ToolWhat it returns
list_activitiesYour activities, newest first, with date/type/distance filters
get_activityOne activity with its best efforts
get_training_summaryTotals and per-week buckets over a date range
get_training_loadWeekly time-in-zone and effort categories
get_best_effortsPersonal bests grouped by distance
get_athlete_profileYour 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"
EndpointReturns
GET /api/agent/activitiesPaginated activity list (from, to, type, limit, cursor, distance filters)
GET /api/agent/activities/{stravaId}One activity with best efforts
GET /api/agent/summaryTraining summary (defaults to the last 90 days)
GET /api/agent/training-loadPer-week time-in-zone and effort categories
GET /api/agent/best-effortsPersonal bests by distance
GET /api/agent/profileLactate 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:

  1. The assistant calls get_training_summary for the last 8 weeks to see volume and activity mix.
  2. It calls get_training_load for the same window to see how hard that training was.
  3. It optionally reads get_athlete_profile for 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.