Rank
70
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
Traction
No public download signal
Freshness
Updated 2d ago
Xpersona Agent
WHOOP Central - OAuth + scripts to fetch WHOOP data (sleep, recovery, strain, workouts). Use when user asks about their sleep, recovery score, HRV, strain, or workout data. --- name: whoop description: WHOOP Central - OAuth + scripts to fetch WHOOP data (sleep, recovery, strain, workouts). Use when user asks about their sleep, recovery score, HRV, strain, or workout data. version: 1.0.2 metadata: clawdbot: emoji: "🏋️" requires: bins: ["node", "openssl"] --- WHOOP Central Access sleep, recovery, strain, and workout data from WHOOP via the v2 API. Quick Commands Data Available | Metric |
clawhub skill install skills:4xiomdev:whoop-centralOverall rank
#62
Adoption
No public adoption signal
Trust
Unknown
Freshness
Feb 25, 2026
Freshness
Last checked Feb 25, 2026
Best For
whoop is best for keep, create, share workflows where OpenClaw compatibility matters.
Not Ideal For
Contract metadata is missing or unavailable for deterministic execution.
Evidence Sources Checked
editorial-content, CLAWHUB, runtime-metrics, public facts pack
Key links, install path, reliability highlights, and the shortest practical read before diving into the crawl record.
Overview
WHOOP Central - OAuth + scripts to fetch WHOOP data (sleep, recovery, strain, workouts). Use when user asks about their sleep, recovery score, HRV, strain, or workout data. --- name: whoop description: WHOOP Central - OAuth + scripts to fetch WHOOP data (sleep, recovery, strain, workouts). Use when user asks about their sleep, recovery score, HRV, strain, or workout data. version: 1.0.2 metadata: clawdbot: emoji: "🏋️" requires: bins: ["node", "openssl"] --- WHOOP Central Access sleep, recovery, strain, and workout data from WHOOP via the v2 API. Quick Commands Data Available | Metric | Capability contract not published. No trust telemetry is available yet. Last updated 4/15/2026.
Trust score
Unknown
Compatibility
OpenClaw
Freshness
Feb 25, 2026
Vendor
Openclaw
Artifacts
0
Benchmarks
0
Last release
Unpublished
Install & run
clawhub skill install skills:4xiomdev:whoop-centralSetup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Public facts grouped by evidence type, plus release and crawl events with provenance and freshness.
Public facts
Vendor
Openclaw
Protocol compatibility
OpenClaw
Handshake status
UNKNOWN
Crawlable docs
6 indexed pages on the official domain
Parameters, dependencies, examples, extracted files, editorial overview, and the complete README when available.
Captured outputs
Extracted files
0
Examples
6
Snippets
0
Languages
typescript
Parameters
bash
# 1) One-time setup (writes ~/.clawdbot/whoop/credentials.json) node src/setup.js # 2) Recommended: Get tokens via Postman (see Auth section), then verify node src/verify.js node src/verify.js --refresh # Prompt-friendly snapshot (includes last workout) node src/today.js # Daily summary (all metrics) node src/summary.js # Individual metrics node src/recovery.js node src/sleep.js node src/strain.js node src/workouts.js # Bulk import to ~/clawd/health/logs/whoop/* node src/import-historical.js
text
https://oauth.pstmn.io/v1/browser-callback
text
https://localhost:3000/callback
bash
node src/setup.js
text
https://oauth.pstmn.io/v1/browser-callback
text
https://api.prod.whoop.com/oauth/oauth2/auth
Editorial read
Docs source
CLAWHUB
Editorial quality
ready
WHOOP Central - OAuth + scripts to fetch WHOOP data (sleep, recovery, strain, workouts). Use when user asks about their sleep, recovery score, HRV, strain, or workout data. --- name: whoop description: WHOOP Central - OAuth + scripts to fetch WHOOP data (sleep, recovery, strain, workouts). Use when user asks about their sleep, recovery score, HRV, strain, or workout data. version: 1.0.2 metadata: clawdbot: emoji: "🏋️" requires: bins: ["node", "openssl"] --- WHOOP Central Access sleep, recovery, strain, and workout data from WHOOP via the v2 API. Quick Commands Data Available | Metric |
Access sleep, recovery, strain, and workout data from WHOOP via the v2 API.
# 1) One-time setup (writes ~/.clawdbot/whoop/credentials.json)
node src/setup.js
# 2) Recommended: Get tokens via Postman (see Auth section), then verify
node src/verify.js
node src/verify.js --refresh
# Prompt-friendly snapshot (includes last workout)
node src/today.js
# Daily summary (all metrics)
node src/summary.js
# Individual metrics
node src/recovery.js
node src/sleep.js
node src/strain.js
node src/workouts.js
# Bulk import to ~/clawd/health/logs/whoop/*
node src/import-historical.js
| Metric | Data Points | |--------|-------------| | Recovery | Score (0-100%), HRV, resting HR, SpO2, skin temp | | Sleep | Duration, stages (REM/deep/light), efficiency, performance | | Strain | Daily strain (0-21), calories, avg/max HR | | Workouts | Activity type, duration, strain, calories, HR |
openssl (only needed for the optional auth.js flow when using https://localhost; Postman auth does not need it)https://oauth.pstmn.io/v1/browser-callback
auth.js):
https://localhost:3000/callback
Team note: this skill does not ship any client credentials. Each user can create their own WHOOP app,
or (if you trust each other) a team can share one app's client_id/client_secret and let multiple WHOOP
accounts authorize it.
Run:
node src/setup.js
This writes ~/.clawdbot/whoop/credentials.json (and optionally token.json if you paste tokens).
Postman is the most reliable bootstrap for many accounts because WHOOP may block browser-like traffic to the OAuth endpoints (or behave differently depending on headers).
Postman checklist (don’t skip these):
https://oauth.pstmn.io/v1/browser-callbackoffline (or you won’t get a refresh_token)client_secret_post)https://oauth.pstmn.io/v1/browser-callback
ClientId = your WHOOP client idClientSecret = your WHOOP client secrethttps://api.prod.whoop.com/oauth/oauth2/auth
https://api.prod.whoop.com/oauth/oauth2/token
{{ClientId}}{{ClientSecret}}offline plus any read scopes you need, e.g.:
offline read:profile read:sleep read:recovery read:workout read:cycles read:body_measurement
loomingState)Click "Get New Access Token", sign in to WHOOP, and click "Grant".
In Postman’s "Manage Access Tokens" modal:
access_tokenrefresh_token
Postman often does not retain the refresh token for you later.~/.clawdbot/whoop/token.json:token.example.json as a templateobtained_at to current time in millisecondsredirect_uri to:
https://oauth.pstmn.io/v1/browser-callback
node src/verify.js
node src/verify.js --refresh
auth.js (may fail on some accounts)If you prefer a fully local OAuth loop (and WHOOP allows it), you can use auth.js.
Pre-req: add this redirect URI in WHOOP dashboard:
https://localhost:3000/callback
Run:
WHOOP_REDIRECT_URI='https://localhost:3000/callback' node src/auth.js
If you need to do it from a phone/remote device:
WHOOP_REDIRECT_URI='https://localhost:3000/callback' node src/auth.js --manual
Note: for localhost HTTPS, the script generates a self-signed cert and your browser will show a TLS warning. You must proceed past the warning so the redirect can complete.
node src/verify.js
node src/summary.js
NotAuthorizedException before the login pageThis is a WHOOP-side block on browser User-Agents hitting api.prod.whoop.com OAuth endpoints.
node src/auth.js which bootstraps the login URL and sends your browser directly to id.whoop.com.node src/auth.js --manual and open the printed URL.https://oauth.pstmn.io/v1/browser-callback
If you're using auth.js locally, also add:
https://localhost:3000/callback
Tokens auto-refresh on demand (no cron needed). If issues persist:
rm ~/.clawdbot/whoop/token.json
node src/auth.js
This usually means your access token is stale/invalidated (common if you re-auth or refresh tokens elsewhere; WHOOP refresh tokens rotate).
node src/auth.js, oraccess_token + refresh_token from Postman into ~/.clawdbot/whoop/token.json and update obtained_at.Use manual mode:
node src/auth.js --manual
Open the URL on any device, authorize, then copy the code from the callback URL.
error=request_forbidden / "The request is not allowed"This is WHOOP rejecting the authorization request after login/consent. Common causes:
https:// or whoop:// redirect URIs)If you suspect redirect URI policy, use an HTTPS tunnel:
# 1) Get a public HTTPS URL that forwards to localhost:3000 (example)
ngrok http 3000
# 2) Add the ngrok HTTPS URL + /callback to WHOOP dashboard Redirect URIs, then run:
WHOOP_REDIRECT_URI=https://YOUR-NGROK-DOMAIN.ngrok-free.app/callback node src/auth.js
If you suspect scope restrictions, try a minimal scope set:
WHOOP_SCOPES="read:profile" node src/auth.js
https://localhost:3000/callbackThis changes how the local callback server must run: it must be HTTPS (not HTTP).
The script supports this. Run:
WHOOP_REDIRECT_URI=https://localhost:3000/callback node src/auth.js
It will generate a self-signed cert locally and your browser will likely show a warning for https://localhost.
Proceed past the warning so the redirect can complete.
These commands support:
--json (single JSON blob)--jsonl (one JSON object per line; useful for piping)--limit N (where supported)--days N, --since 7d / 12h, --start ISO, --end ISOnode src/summary.js --json
node src/recovery.js --json --limit 1
node src/sleep.js --json --limit 1
node src/strain.js --json --limit 1
node src/workouts.js --json --limit 1
# Examples with filters
node src/sleep.js --json --days 7
node src/workouts.js --jsonl --since 30d
node src/recovery.js --json --start 2026-01-01T00:00:00Z --end 2026-02-01T00:00:00Z
Machine endpoints, contract coverage, trust signals, runtime metrics, benchmarks, and guardrails for agent-to-agent use.
Machine interfaces
Contract coverage
Status
missing
Auth
None
Streaming
No
Data region
Unspecified
Protocol support
Requires: none
Forbidden: none
Guardrails
Operational confidence: low
curl -s "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/snapshot"
curl -s "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/contract"
curl -s "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/trust"
Operational fit
Trust signals
Handshake
UNKNOWN
Confidence
unknown
Attempts 30d
unknown
Fallback rate
unknown
Runtime metrics
Observed P50
unknown
Observed P95
unknown
Rate limit
unknown
Estimated cost
unknown
Do not use if
Raw contract, invocation, trust, capability, facts, and change-event payloads for machine-side inspection.
Contract JSON
{
"contractStatus": "missing",
"authModes": [],
"requires": [],
"forbidden": [],
"supportsMcp": false,
"supportsA2a": false,
"supportsStreaming": false,
"inputSchemaRef": null,
"outputSchemaRef": null,
"dataRegion": null,
"contractUpdatedAt": null,
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Invocation Guide
{
"preferredApi": {
"snapshotUrl": "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/snapshot",
"contractUrl": "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/contract",
"trustUrl": "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/trust"
},
"curlExamples": [
"curl -s \"https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/snapshot\"",
"curl -s \"https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/contract\"",
"curl -s \"https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/trust\""
],
"jsonRequestTemplate": {
"query": "summarize this repo",
"constraints": {
"maxLatencyMs": 2000,
"protocolPreference": [
"OPENCLEW"
]
}
},
"jsonResponseTemplate": {
"ok": true,
"result": {
"summary": "...",
"confidence": 0.9
},
"meta": {
"source": "CLAWHUB",
"generatedAt": "2026-04-17T00:15:07.289Z"
}
},
"retryPolicy": {
"maxAttempts": 3,
"backoffMs": [
500,
1500,
3500
],
"retryableConditions": [
"HTTP_429",
"HTTP_503",
"NETWORK_TIMEOUT"
]
}
}Trust JSON
{
"status": "unavailable",
"handshakeStatus": "UNKNOWN",
"verificationFreshnessHours": null,
"reputationScore": null,
"p95LatencyMs": null,
"successRate30d": null,
"fallbackRate": null,
"attempts30d": null,
"trustUpdatedAt": null,
"trustConfidence": "unknown",
"sourceUpdatedAt": null,
"freshnessSeconds": null
}Capability Matrix
{
"rows": [
{
"key": "OPENCLEW",
"type": "protocol",
"support": "unknown",
"confidenceSource": "profile",
"notes": "Listed on profile"
},
{
"key": "keep",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "create",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "share",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "use",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "complete",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
},
{
"key": "this",
"type": "capability",
"support": "supported",
"confidenceSource": "profile",
"notes": "Declared in agent profile metadata"
}
],
"flattenedTokens": "protocol:OPENCLEW|unknown|profile capability:keep|supported|profile capability:create|supported|profile capability:share|supported|profile capability:use|supported|profile capability:complete|supported|profile capability:this|supported|profile"
}Facts JSON
[
{
"factKey": "docs_crawl",
"category": "integration",
"label": "Crawlable docs",
"value": "6 indexed pages on the official domain",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
},
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Openclaw",
"href": "https://github.com/openclaw/skills/tree/main/skills/4xiomdev/whoop-central",
"sourceUrl": "https://github.com/openclaw/skills/tree/main/skills/4xiomdev/whoop-central",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/contract",
"sourceUrl": "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-04-15T00:45:39.800Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/trust",
"sourceUrl": "https://xpersona.co/api/v1/agents/clawhub-skills-4xiomdev-whoop-central/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
]Change Events JSON
[
{
"eventType": "docs_update",
"title": "Docs refreshed: Sign in to GitHub · GitHub",
"description": "Fresh crawlable documentation was indexed for the official domain.",
"href": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceUrl": "https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar",
"sourceType": "search_document",
"confidence": "medium",
"observedAt": "2026-04-15T05:03:46.393Z",
"isPublic": true
}
]Sponsored
Ads related to whoop and adjacent AI workflows.