Documentation

MCP integration

BioOps speaks Streamable HTTP MCP with full OAuth 2.1 + PKCE. Any compliant client can connect — including Claude Desktop, Cursor, and the official MCP Inspector.

1. Endpoint

https://bioops.app/api/public/mcp

2. OAuth discovery

RFC 8414 metadata document:

GET /.well-known/oauth-authorization-server

The MCP endpoint also returns WWW-Authenticate: Bearer with a pointer to discovery when called without a token, so most clients negotiate automatically.

3. Tools exposed

  • list_data_sources

    List connected health data sources and their current sync status.

    read:sleep read:workouts read:nutrition read:body read:vitals read:fitness

  • get_recent_metrics

    Get final daily values and rolling baselines for a specific metric, such as VO2 max or body mass.

    read:sleep read:workouts read:nutrition read:body read:vitals read:fitness

  • get_metric_timeseries

    Get final daily or hourly metric values for one or more supported metric types, with optional rolling baselines.

    read:sleep read:workouts read:nutrition read:body read:vitals read:fitness

  • get_daily_summary

    Get a complete daily metrics view with preferred values, source candidates, hourly coverage, rolling baselines, z-scores, and data gaps.

    read:sleep read:workouts read:nutrition read:body read:vitals read:fitness

  • list_supported_metrics

    List exact metric_type identifiers and common aliases supported by get_recent_metrics, filtered by granted scopes.

    read:sleep read:workouts read:nutrition read:body read:vitals read:fitness

  • get_nutrition_summary

    Get final daily nutrition values and rolling baselines for calories, carbs, fat, protein, sodium, and related dietary metrics.

    read:nutrition

  • get_sleep_summary

    Get nightly sleep summaries by local sleep date, including bedtime, wake time, stages, gap rollups, and sleep metric rolling baselines.

    read:sleep

  • get_daily_timeline

    Get final timeline events for a local day, including canonical sleep, measurements, and workouts filtered by granted scopes.

    read:sleep read:workouts read:nutrition read:body read:vitals read:fitness

  • get_workout_details

    Get final constructed workout event details for a local date range, including duration, distance, energy, heart rate, source, and candidate details.

    read:workouts

4. Create a scoped client

Sign in to BioOps, open the dashboard, and use the MCP Server panel to create an OAuth client. Choose only the coverage the agent should read: sleep, workouts, nutrition, body, vitals, or fitness. BioOps shows the OAuth client secret once during setup and stores only a hash.

You can revoke a client from the same dashboard panel. Revocation blocks new OAuth exchanges and also revokes active access tokens for that client.

Dashboard-created clients are confidential OAuth clients and use client_secret_post. Dynamic client registration is available for public PKCE clients that use token_endpoint_auth_method: "none".

5. Client config

{
  "mcpServers": {
    "bioops": {
      "url": "https://bioops.app/api/public/mcp",
      "oauth": {
        "client_id": "bio_...",
        "client_secret": "bio_mcp_cs_...",
        "scope": "read:sleep read:workouts read:nutrition",
        "token_endpoint_auth_method": "client_secret_post"
      }
    }
  }
}

The dashboard generates this config with your real client ID, one-time secret, and selected scope list. On first use, Claude opens the BioOps consent screen in your browser. After you approve, the MCP server gets a scoped, revocable bearer token tied to your account.