# Ultrahuman Openclaw

> Fetch and summarize Ultrahuman Ring/CGM metrics inside OpenClaw using the Ultrahuman MCP server (via mcporter). Use when the user asks about Ultrahuman data such as sleep score, total sleep, sleep stages, HR/HRV/RHR, steps, recovery index, movement index, VO2 max, or wants a daily/weekly Ultrahuman summary.

- Skill: `modbender/ultrahuman-openclaw` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add modbender/ultrahuman-openclaw`
- Raw SKILL.md: https://api.skillmd.com/api/skills/modbender/ultrahuman-openclaw/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: modbender (https://skillmd.com/u/modbender)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/modbender/ultrahuman-openclaw

---


# Ultrahuman (OpenClaw)

Fetch Ultrahuman metrics via **Ultrahuman MCP** and **mcporter**, then summarize them.

## Setup (one-time)

You need:

1) **Ultrahuman Developer/Partner credentials**

You need a personal auth token from Ultrahuman Developer Portal:
- https://vision.ultrahuman.com/developer

Then set:
- `ULTRAHUMAN_USER_EMAIL`
- `ULTRAHUMAN_AUTH_TOKEN` (your personal token)
- (Also set your Partner ID in the Ultrahuman app, if provided/required)

2) **Ultrahuman MCP server**

Repository:
- https://github.com/Monasterolo21/Ultrahuman-MCP

Build it (example):
- `bun install && bun run build`
- You should end up with an entrypoint like: `dist/main.js`

3) **mcporter config** that defines an MCP server named `ultrahuman`

Example `config/mcporter.json` (adjust path to your built `main.js`):

```json
{
  "mcpServers": {
    "ultrahuman": {
      "transport": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/Ultrahuman-MCP/dist/main.js"],
      "env": {
        "ULTRAHUMAN_AUTH_TOKEN": "${ULTRAHUMAN_AUTH_TOKEN}",
        "ULTRAHUMAN_USER_EMAIL": "${ULTRAHUMAN_USER_EMAIL}"
      }
    }
  }
}
```

## Quick start

### Daily summary (recommended)

From your OpenClaw workspace (so `./config/mcporter.json` is found):

```bash
cd /path/to/your/openclaw/workspace
python3 skills/local/ultrahuman-openclaw/scripts/ultrahuman_summary.py --yesterday
```

Specific date:

```bash
python3 skills/local/ultrahuman-openclaw/scripts/ultrahuman_summary.py --date YYYY-MM-DD
```

If your mcporter config isn’t at `./config/mcporter.json`, pass it explicitly:

```bash
python3 skills/local/ultrahuman-openclaw/scripts/ultrahuman_summary.py \
  --date YYYY-MM-DD \
  --mcporter-config /path/to/mcporter.json
```

### Raw JSON

```bash
mcporter --config /path/to/mcporter.json \
  call ultrahuman.ultrahuman_metrics date=YYYY-MM-DD --output json
```

## What to report (default)

Keep summaries short unless asked:

- Sleep score + total sleep + efficiency + restorative sleep + deep/REM
- Steps total
- Recovery index, movement index, active minutes
- VO2 max, sleep HRV, RHR

If sleep score/total sleep are in a "Needs attention" state, call it out explicitly.

