https://github.com/rajdeepmondaldotcom/whoop-mcp
· scanned 2026-06-15 23:45 UTC (2 months, 4 weeks ago)
36 raw signals (0 security + 36 graph)
Last scanned 2 months, 4 weeks ago · v1 · 30 actionable findings from 1 signal source. 6 repeated signals grouped for readability. Security checks, system graph analysis, and verified AI-agent feedback are merged into one review queue.
All 453 nodes from the latest scan, grouped by kind. Each node is a unit the engine identified (file, function, endpoint, table…). Most users won't need this view — it's primarily for debugging the engine's graph extraction or for AI agents that want to enumerate the project structure.
| Label | Layer | Status | Path |
|---|---|---|---|
_normalise_request |
software | healthy | tests/test_api_coverage.py:32 |
test_client_covers_current_public_whoop_get_data_surface |
software | healthy | tests/test_api_coverage.py:53 |
fresh |
software | healthy | tests/test_tokens.py:14 |
test_store_round_trip_and_permissions |
software | healthy | tests/test_tokens.py:23 |
test_store_tolerates_corrupt_file |
software | healthy | tests/test_tokens.py:33 |
test_missing_tokens_raise_auth_required |
software | healthy | tests/test_tokens.py:41 |
_fail_refresher |
software | healthy | tests/test_tokens.py:47 |
test_valid_token_returned_without_refresh |
software | healthy | tests/test_tokens.py:51 |
test_expired_token_refreshes_and_persists_rotation |
software | healthy | tests/test_tokens.py:58 |
refresher |
software | healthy | tests/test_tokens.py:132 |
test_refresh_keeps_old_refresh_token_when_not_rotated |
software | healthy | tests/test_tokens.py:73 |
test_concurrent_calls_refresh_once |
software | healthy | tests/test_tokens.py:87 |
test_reauth_on_disk_rescues_running_manager |
software | healthy | tests/test_tokens.py:104 |
failing_refresher |
software | healthy | tests/test_tokens.py:110 |
test_rejected_token_skips_redundant_refresh |
software | healthy | tests/test_tokens.py:126 |
test_static_token_bypasses_everything |
software | healthy | tests/test_tokens.py:146 |
test_expired_without_refresh_token_raises |
software | healthy | tests/test_tokens.py:155 |
anyio_backend |
software | healthy | tests/conftest.py:24 |
iso |
software | healthy | tests/conftest.py:31 |
make_cycle |
software | healthy | tests/conftest.py:35 |
make_recovery |
software | healthy | tests/conftest.py:67 |
make_sleep |
software | healthy | tests/conftest.py:100 |
make_workout |
software | healthy | tests/conftest.py:159 |
__init__ |
software | healthy | tests/conftest.py:413 |
seed_days |
software | healthy | tests/conftest.py:234 |
seed_stream |
software | healthy | tests/conftest.py:284 |
handler |
software | healthy | tests/conftest.py:307 |
_collection |
software | healthy | tests/conftest.py:393 |
get_access_token |
software | healthy | tests/conftest.py:417 |
fake_whoop |
software | healthy | tests/conftest.py:427 |
whoop_client |
software | healthy | tests/conftest.py:432 |
result_json |
software | healthy | tests/conftest.py:440 |
test_fmt_duration |
software | healthy | tests/test_transform.py:20 |
test_recovery_zone_thresholds |
software | healthy | tests/test_transform.py:27 |
test_prune_removes_empty_values |
software | healthy | tests/test_transform.py:35 |
test_transform_profile |
software | healthy | tests/test_transform.py:39 |
test_transform_cycle_localizes_and_converts |
software | healthy | tests/test_transform.py:47 |
test_transform_recovery_scored_and_pending |
software | healthy | tests/test_transform.py:59 |
test_transform_sleep_numbers |
software | healthy | tests/test_transform.py:76 |
test_transform_workout_zones_and_distance |
software | healthy | tests/test_transform.py:102 |
test_transform_sleep_stream_downsamples_and_summarizes |
software | healthy | tests/test_transform.py:118 |
test_transform_sleep_stream_empty |
software | healthy | tests/test_transform.py:150 |
test_transform_sleep_stream_omits_pct_asleep_without_flags |
software | healthy | tests/test_transform.py:157 |
test_transform_workout_tolerates_legacy_zone_key |
software | healthy | tests/test_transform.py:168 |
series |
software | healthy | tests/test_analytics.py:17 |
test_linear_regression_exact_fit |
software | healthy | tests/test_analytics.py:21 |
test_linear_regression_degenerate_cases |
software | healthy | tests/test_analytics.py:28 |
test_rising_recovery_is_improving |
software | healthy | tests/test_analytics.py:35 |
test_rising_resting_heart_rate_is_declining |
software | healthy | tests/test_analytics.py:41 |
test_strain_is_neutral_language |
software | healthy | tests/test_analytics.py:47 |
Showing first 50 of this kind. Full payload available via the JSON button at the top of the page.
| Label | Layer | Status | Path |
|---|---|---|---|
PRIVACY.md |
software | healthy | PRIVACY.md |
README.md |
software | healthy | README.md |
CONTRIBUTING.md |
software | healthy | CONTRIBUTING.md |
Dockerfile |
software | healthy | Dockerfile |
glama.json |
software | healthy | glama.json |
pyrightconfig.json |
software | healthy | pyrightconfig.json |
server.json |
software | healthy | server.json |
.env.example |
software | healthy | .env.example |
pyproject.toml |
software | healthy | pyproject.toml |
RELEASING.md |
software | healthy | RELEASING.md |
LICENSE |
software | healthy | LICENSE |
SECURITY.md |
software | healthy | SECURITY.md |
CHANGELOG.md |
software | healthy | CHANGELOG.md |
test_api_coverage.py |
software | healthy | tests/test_api_coverage.py |
test_tokens.py |
software | healthy | tests/test_tokens.py |
conftest.py |
software | healthy | tests/conftest.py |
test_transform.py |
software | healthy | tests/test_transform.py |
test_analytics.py |
software | healthy | tests/test_analytics.py |
test_clients.py |
software | healthy | tests/test_clients.py |
test_timeutil.py |
software | healthy | tests/test_timeutil.py |
test_demo.py |
software | healthy | tests/test_demo.py |
test_server.py |
software | healthy | tests/test_server.py |
test_client.py |
software | healthy | tests/test_client.py |
test_summaries.py |
software | healthy | tests/test_summaries.py |
PROMPTS.md |
software | healthy | docs/PROMPTS.md |
manifest.json |
software | healthy | mcpb/manifest.json |
main.py |
software | healthy | mcpb/server/main.py |
PULL_REQUEST_TEMPLATE.md |
software | healthy | .github/PULL_REQUEST_TEMPLATE.md |
feature_request.md |
software | healthy | .github/ISSUE_TEMPLATE/feature_request.md |
bug_report.md |
software | healthy | .github/ISSUE_TEMPLATE/bug_report.md |
ci.yml |
software | healthy | .github/workflows/ci.yml |
release.yml |
software | healthy | .github/workflows/release.yml |
timeutil.py |
software | healthy | src/whoop_mcp/timeutil.py |
client.py |
software | healthy | src/whoop_mcp/client.py |
__init__.py |
software | healthy | src/whoop_mcp/__init__.py |
clients.py |
software | healthy | src/whoop_mcp/clients.py |
config.py |
software | healthy | src/whoop_mcp/config.py |
demo.py |
software | healthy | src/whoop_mcp/demo.py |
analytics.py |
software | healthy | src/whoop_mcp/analytics.py |
summaries.py |
software | healthy | src/whoop_mcp/summaries.py |
tokens.py |
software | healthy | src/whoop_mcp/tokens.py |
cli.py |
software | healthy | src/whoop_mcp/cli.py |
export.py |
software | healthy | src/whoop_mcp/export.py |
server.py |
software | healthy | src/whoop_mcp/server.py |
__main__.py |
software | healthy | src/whoop_mcp/__main__.py |
transform.py |
software | healthy | src/whoop_mcp/transform.py |
oauth.py |
software | healthy | src/whoop_mcp/oauth.py |
errors.py |
software | healthy | src/whoop_mcp/errors.py |
| Label | Layer | Status | Path |
|---|---|---|---|
FakeWhoop |
software | healthy | tests/conftest.py:220 |
StaticTokens |
software | healthy | tests/conftest.py:410 |
TokenProvider |
software | healthy | src/whoop_mcp/client.py:41 |
_TTLCache |
software | healthy | src/whoop_mcp/client.py:47 |
WhoopClient |
software | healthy | src/whoop_mcp/client.py:77 |
ClientSpec |
software | healthy | src/whoop_mcp/clients.py:88 |
Settings |
software | healthy | src/whoop_mcp/config.py:41 |
DemoWhoop |
software | healthy | src/whoop_mcp/demo.py:329 |
DemoTokens |
software | healthy | src/whoop_mcp/demo.py:435 |
DayValue |
software | healthy | src/whoop_mcp/analytics.py:42 |
Bundle |
software | healthy | src/whoop_mcp/summaries.py:46 |
TokenSet |
software | healthy | src/whoop_mcp/tokens.py:33 |
TokenStore |
software | healthy | src/whoop_mcp/tokens.py:60 |
TokenManager |
software | healthy | src/whoop_mcp/tokens.py:106 |
_AppState |
software | healthy | src/whoop_mcp/server.py:112 |
_CallbackResult |
software | healthy | src/whoop_mcp/oauth.py:112 |
CallbackHandler |
software | healthy | src/whoop_mcp/oauth.py:121 |
WhoopError |
software | healthy | src/whoop_mcp/errors.py:11 |
ConfigError |
software | healthy | src/whoop_mcp/errors.py:15 |
AuthRequiredError |
software | healthy | src/whoop_mcp/errors.py:19 |
ApiError |
software | healthy | src/whoop_mcp/errors.py:36 |
RateLimitError |
software | healthy | src/whoop_mcp/errors.py:45 |
| Label | Layer | Status | Path |
|---|---|---|---|
tests |
software | healthy | tests |
docs |
software | healthy | docs |
mcpb |
software | healthy | mcpb |
server |
software | healthy | mcpb/server |
.github |
software | healthy | .github |
ISSUE_TEMPLATE |
software | healthy | .github/ISSUE_TEMPLATE |
workflows |
software | healthy | .github/workflows |
src |
software | healthy | src |
whoop_mcp |
software | healthy | src/whoop_mcp |
| Label | Layer | Status | Path |
|---|---|---|---|
auth::.github/workflows/release.yml |
security | healthy | .github/workflows/release.yml |
auth::src/whoop_mcp/oauth.py |
security | healthy | src/whoop_mcp/oauth.py |
auth::src/whoop_mcp/cli.py |
security | healthy | src/whoop_mcp/cli.py |
auth::src/whoop_mcp/server.py |
security | healthy | src/whoop_mcp/server.py |
auth::Dockerfile |
security | healthy | Dockerfile |
auth::src/whoop_mcp/config.py |
security | healthy | src/whoop_mcp/config.py |
auth::src/whoop_mcp/demo.py |
security | healthy | src/whoop_mcp/demo.py |
auth::README.md |
security | healthy | README.md |
| Label | Layer | Status | Path |
|---|---|---|---|
test |
cicd | healthy | .github/workflows/ci.yml |
release |
cicd | healthy | .github/workflows/release.yml |
registry |
cicd | healthy | .github/workflows/release.yml |
docker |
cicd | healthy | .github/workflows/release.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
gha::ci |
cicd | healthy | .github/workflows/ci.yml |
gha::release |
cicd | healthy | .github/workflows/release.yml |
| Label | Layer | Status | Path |
|---|---|---|---|
PYPI_API_TOKEN |
cicd | healthy | — |
GITHUB_TOKEN |
cicd | healthy | — |
| Label | Layer | Status | Path |
|---|---|---|---|
repobility-clone-23z3f1u4 |
software | healthy | /tmp/repobility-clone-23z3f1u4 |
| Label | Layer | Status | Path |
|---|---|---|---|
127.0.0.1 |
network | healthy | src/whoop_mcp/cli.py |
| Label | Layer | Status | Path |
|---|---|---|---|
image::Dockerfile |
hardware | healthy | Dockerfile |
This page is publicly accessible at:
https://repobility.com/scan/929c1a7e-661f-4b40-a63c-940ddb234aa8/
To check status programmatically (no auth required):
curl -s https://repobility.com/api/v1/public/scan/929c1a7e-661f-4b40-a63c-940ddb234aa8/
Important — please don't re-submit the same URL repeatedly. The submission endpoint is idempotent: re-submitting the same git URL returns this same scan_token, not a new one. To re-scan this repo, sign up free and use the dashboard.