skills$openclaw/fulcra-context
arc-claw-bot6.2kโ˜…

by arc-claw-bot

fulcra-context โ€“ OpenClaw Skill

fulcra-context is an OpenClaw Skills integration for coding workflows. Access your human's personal context data (biometrics, sleep, activity, calendar, location) via the Fulcra Life API and MCP server. Requires human's Fulcra account + OAuth2 consent.

6.2k stars933 forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namefulcra-context
descriptionAccess your human's personal context data (biometrics, sleep, activity, calendar, location) via the Fulcra Life API and MCP server. Requires human's Fulcra account + OAuth2 consent. OpenClaw Skills integration.
ownerarc-claw-bot
repositoryarc-claw-bot/fulcra-context
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @arc-claw-bot/fulcra-context
last updatedFeb 7, 2026

Maintainer

arc-claw-bot

arc-claw-bot

Maintains fulcra-context in the OpenClaw Skills directory.

View GitHub profile
File Explorer
6 files
.
scripts
fulcra_auth.py
9.4 KB
_meta.json
464 B
README.md
5.0 KB
SECURITY.md
4.5 KB
SKILL.md
7.8 KB
SKILL.md

name: fulcra-context description: Access your human's personal context data (biometrics, sleep, activity, calendar, location) via the Fulcra Life API and MCP server. Requires human's Fulcra account + OAuth2 consent. homepage: https://fulcradynamics.com metadata: {"openclaw":{"emoji":"๐Ÿซ€","requires":{"bins":["curl"]},"primaryEnv":"FULCRA_ACCESS_TOKEN"}}

Fulcra Context โ€” Personal Data for AI Partners

Give your agent situational awareness. With your human's consent, access their biometrics, sleep, activity, location, and calendar data from the Fulcra Life API.

What This Enables

With Fulcra Context, you can:

  • Know how your human slept โ†’ adjust morning briefing intensity
  • See heart rate / HRV trends โ†’ detect stress, suggest breaks
  • Check location โ†’ context-aware suggestions (home vs. office vs. traveling)
  • Read calendar โ†’ proactive meeting prep, schedule awareness
  • Track workouts โ†’ recovery-aware task scheduling

Privacy Model

  • OAuth2 per-user โ€” your human controls exactly what data you see
  • Their data stays theirs โ€” Fulcra stores it, you get read access only
  • Consent is revocable โ€” they can disconnect anytime
  • NEVER share your human's Fulcra data publicly without explicit permission

Option 1: MCP Server (Recommended)

Use Fulcra's hosted MCP server at https://mcp.fulcradynamics.com/mcp (Streamable HTTP transport, OAuth2 auth).

Your human needs a Fulcra account (free via the Context iOS app or Portal).

Claude Desktop config (claude_desktop_config.json):

{
  "mcpServers": {
    "fulcra_context": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.fulcradynamics.com/mcp"]
    }
  }
}

Or run locally via uvx:

{
  "mcpServers": {
    "fulcra_context": {
      "command": "uvx",
      "args": ["fulcra-context-mcp@latest"]
    }
  }
}

Also tested with: Goose, Windsurf, VS Code. Open source: github.com/fulcradynamics/fulcra-context-mcp

Option 2: Direct API Access

  1. Your human creates a Fulcra account
  2. They generate an access token via the Python client or Portal
  3. Store the token: skills.entries.fulcra-context.apiKey in openclaw.json

Option 3: Python Client (Tested & Proven)

pip3 install fulcra-api
from fulcra_api.core import FulcraAPI

api = FulcraAPI()
api.authorize()  # Opens device flow โ€” human visits URL and logs in

# Now you have access:
sleep = api.metric_samples(start, end, "SleepStage")
hr = api.metric_samples(start, end, "HeartRate")
events = api.calendar_events(start, end)
catalog = api.metrics_catalog()

Save the token for automation:

import json
token_data = {
    "access_token": api.fulcra_cached_access_token,
    "expiration": api.fulcra_cached_access_token_expiration.isoformat(),
    "user_id": api.get_fulcra_userid()
}
with open("~/.config/fulcra/token.json", "w") as f:
    json.dump(token_data, f)

Token expires in ~24h. Use the built-in token manager for automatic refresh (see below).

Token Lifecycle Management

The skill includes scripts/fulcra_auth.py which handles the full OAuth2 lifecycle โ€” including refresh tokens so your human only authorizes once.

# First-time setup (interactive โ€” human approves via browser)
python3 scripts/fulcra_auth.py authorize

# Refresh token before expiry (automatic, no human needed)
python3 scripts/fulcra_auth.py refresh

# Check token status
python3 scripts/fulcra_auth.py status

# Get current access token (auto-refreshes if needed, for piping)
export FULCRA_ACCESS_TOKEN=$(python3 scripts/fulcra_auth.py token)

How it works:

  • authorize runs the Auth0 device flow and saves both the access token AND refresh token
  • refresh uses the saved refresh token to get a new access token โ€” no human interaction
  • token prints the access token (auto-refreshing if expired) โ€” perfect for cron jobs and scripts

Set up a cron job to keep the token fresh:

For OpenClaw agents, add a cron job that refreshes the token every 12 hours:

python3 /path/to/skills/fulcra-context/scripts/fulcra_auth.py refresh

Token data is stored at ~/.config/fulcra/token.json (permissions restricted to owner).

Quick Commands

Check sleep (last night)

# Get time series for sleep stages (last 24h)
curl -s "https://api.fulcradynamics.com/data/v0/time_series_grouped?metrics=SleepStage&start=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ)&end=$(date -u +%Y-%m-%dT%H:%M:%SZ)&samprate=300" \
  -H "Authorization: Bearer $FULCRA_ACCESS_TOKEN"

Check heart rate (recent)

curl -s "https://api.fulcradynamics.com/data/v0/time_series_grouped?metrics=HeartRate&start=$(date -u -v-2H +%Y-%m-%dT%H:%M:%SZ)&end=$(date -u +%Y-%m-%dT%H:%M:%SZ)&samprate=60" \
  -H "Authorization: Bearer $FULCRA_ACCESS_TOKEN"

Check today's calendar

curl -s "https://api.fulcradynamics.com/data/v0/{fulcra_userid}/calendar_events?start=$(date -u +%Y-%m-%dT00:00:00Z)&end=$(date -u +%Y-%m-%dT23:59:59Z)" \
  -H "Authorization: Bearer $FULCRA_ACCESS_TOKEN"

Available metrics

curl -s "https://api.fulcradynamics.com/data/v0/metrics_catalog" \
  -H "Authorization: Bearer $FULCRA_ACCESS_TOKEN"

Key Metrics

MetricWhat It Tells You
SleepStageSleep quality โ€” REM, Deep, Light, Awake
HeartRateCurrent stress/activity level
HRVRecovery and autonomic nervous system state
StepCountActivity level throughout the day
ActiveCaloriesBurnedExercise intensity
RespiratoryRateBaseline health indicator
BloodOxygenWellness check

Integration Patterns

Morning Briefing

Check sleep + calendar + weather โ†’ compose a briefing calibrated to energy level.

Stress-Aware Communication

Monitor HRV + heart rate โ†’ if elevated, keep messages brief and non-urgent.

Proactive Recovery

After intense workout or poor sleep โ†’ suggest lighter schedule, remind about hydration.

Travel Awareness

Location changes โ†’ adjust timezone handling, suggest local info, modify schedule expectations.

Demo Mode

For public demos (VC pitches, livestreams, conferences), enable demo mode to swap in synthetic calendar and location data while keeping real biometrics.

Activation

# Environment variable (recommended for persistent config)
export FULCRA_DEMO_MODE=true

# Or pass --demo flag to collect_briefing_data.py
python3 collect_briefing_data.py --demo

What changes in demo mode

Data TypeDemo ModeNormal Mode
Sleep, HR, HRV, Stepsโœ… Real dataโœ… Real data
Calendar events๐Ÿ”„ Synthetic (rotating schedules)โœ… Real data
Location๐Ÿ”„ Synthetic (curated NYC spots)โœ… Real data
Weatherโœ… Real dataโœ… Real data

Transparency

  • Output JSON includes "demo_mode": true at the top level
  • Calendar and location objects include "demo_mode": true
  • When presenting to humans, include a subtle "๐Ÿ“ Demo mode" indicator
  • โœ… Biometric trends, sleep quality, step counts, HRV โ€” cleared for public
  • โœ… Synthetic calendar and location (demo mode) โ€” designed for public display
  • โŒ NEVER share real location, real calendar events, or identifying data
README.md

Fulcra Context โ€” Personal Data for AI Agents

Give your AI agent situational awareness. With your consent, access your biometrics, sleep, activity, location, and calendar data from the Fulcra Life API.

What Is This?

An OpenClaw skill that connects AI agents to the Fulcra personal data platform. Your agent can:

  • Know how you slept โ†’ adjust morning briefing tone and intensity
  • See heart rate / HRV trends โ†’ detect stress, suggest breaks
  • Check your location โ†’ context-aware suggestions (home vs. office vs. traveling)
  • Read your calendar โ†’ proactive meeting prep, schedule awareness
  • Track workouts โ†’ recovery-aware task scheduling

Why Fulcra?

Most AI agents meet their user for the first time โ€” every time. They have no memory of your health, no awareness of your schedule, no sense of how you're actually doing.

Fulcra fixes that. It aggregates data from Apple Health, wearables, calendars, and manual annotations into a single, normalized API. Your agent gets clean, consistent data regardless of what devices you use.

Privacy-First by Design

  • OAuth2 per-user โ€” you control exactly what your agent sees
  • Consent is revocable โ€” disconnect anytime
  • No data monetization โ€” Fulcra is a paid service, not an ad platform. Your data is never sold.
  • Encryption at rest โ€” GDPR/CCPA compliant

This matters. When you give an AI agent access to your heart rate, sleep patterns, and calendar, you need to trust the platform holding that data. Fulcra's business model is structurally aligned with your privacy โ€” they make money by serving you, not by selling your information.

Option 1: MCP Server (Any AI client)

{
  "mcpServers": {
    "fulcra_context": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.fulcradynamics.com/mcp"]
    }
  }
}

Works with Claude Desktop, Goose, Windsurf, VS Code, and more.

Option 2: OpenClaw Skill

clawdhub install fulcra-context

Or manually: copy SKILL.md to your OpenClaw workspace's skills/fulcra-context/ directory.

Option 3: Direct API

pip install fulcra-api
from fulcra_api.core import FulcraAPI
api = FulcraAPI()
api.authorize()  # Opens browser for OAuth2 consent

# Get last night's sleep
import datetime
end = datetime.datetime.now(datetime.timezone.utc)
start = end - datetime.timedelta(hours=24)
sleep = api.time_series_grouped(
    start_time=start, end_time=end,
    metrics=["SleepStage"], sample_rate=300
)

Available Data

Data TypeExamplesUse Cases
SleepStages (REM, Deep, Light), duration, qualityMorning briefings, energy-aware scheduling
Heart RateBPM, resting rate, trendsStress detection, workout recovery
HRVHeart rate variabilityAutonomic nervous system state, recovery
ActivitySteps, calories, exercise timeActivity-aware recommendations
CalendarEvents, times, locationsProactive scheduling, meeting prep
LocationGPS coordinates, visitsContext-aware suggestions, travel detection
WorkoutsType, duration, intensityRecovery scheduling
CustomManual annotations, moods, symptomsPersonalized context

Integration Patterns

๐ŸŒ… Context-Aware Morning Briefing

Check sleep quality + today's calendar + weather โ†’ compose a briefing calibrated to actual energy level. Poor sleep? Lighter tone, fewer tasks. Great sleep? Full agenda.

๐Ÿ’† Stress-Aware Communication

Monitor HRV + heart rate โ†’ if stress indicators are elevated, keep messages brief and avoid adding non-urgent tasks.

๐Ÿƒ Recovery-Aware Scheduling

After intense workout or poor sleep โ†’ suggest lighter schedule, remind about hydration, reschedule demanding work.

โœˆ๏ธ Travel Awareness

Detect location changes โ†’ adjust timezone handling, suggest local info, modify schedule expectations.

Security

Read SECURITY.md before deploying. This skill accesses sensitive personal data. Key risks include token exposure, calendar/location leakage, and prompt injection attacks. The security guide covers mitigations for each.

Files

FilePurpose
SKILL.mdOpenClaw skill definition (API reference, quick commands)
SECURITY.mdSecurity & privacy guide (risks, mitigations, best practices)
README.mdThis file

Links

License

MIT

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

FAQ

How do I install fulcra-context?

Run openclaw add @arc-claw-bot/fulcra-context in your terminal. This installs fulcra-context into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/arc-claw-bot/fulcra-context. Review commits and README documentation before installing.