About
Fulcra is a personal data platform: a context lake where a human collects and stores their real-world data and shares it with their AI agents. The data belongs to the user, not to any single agent, so it persists across sessions, agents, and harnesses. An agent running in Claude, ChatGPT/Codex, Hermes, OpenClaw, a cron job, or a Jupyter notebook can all read and write the same datastore. This facilitates inter-agent coordination and synchronization.
What a Fulcra datastore holds:
- Records of Data Types. A Data Type describes something a user records; a Record is one saved instance. Fulcra ships a catalog of built-in Data Types, and users (or their agents) can create custom ones. Every Data Type has a Record Type: Events (a point or span in time) or Metrics (a measurable value over time). Records carry a
recorded_at timestamp, a source chain, and optional tags.
- Files, with full version history and restore. Files are a secure object store for anything an agent needs to keep: memory, notes, preferences, task boards, exports, dashboards.
- Device-collected data, if the user opts in. The optional Context by Fulcra iOS app can sync Apple Health, location, and calendar data into the same datastore in the background.
- Shares and groups. Users can share Data Types and files with other Fulcra users, and with groups so every member gets access.
All Records and Files are encrypted at rest. Platform concepts are documented at docs.fulcradynamics.com/fulcra-platform.
What agents use Fulcra for
- Durable memory across harnesses. Back up an agent's memory, preferences, or working state to Fulcra files, then restore or clone it into a different agent or a fresh session.
- Structured tracking. Create a custom Data Type for anything (mood, market data, habits, build times, a project's progress), record values over time, and query them back later.
- Multi-agent coordination. Several agents working for the same user share files and records through one datastore and poll
data-updates to learn what changed since they last looked.
- Situational awareness. Combine the user's own records with device data (sleep, workouts, location, calendar) when the user has connected those sources.
Interactive access for the human
The human explores their data, manages files and shares, and reviews what their agents have written using the Context Web app and the Context iOS app.
Interfaces for agents and code
| Interface | Best for | Where |
|---|
CLI fulcra (run as uvx fulcra-api) | Agents with a shell. JSON output, agent-friendly auth. | CLI docs |
| MCP server | Agents without a shell (Claude, ChatGPT, Codex, Goose, and other MCP clients). | MCP docs, endpoint https://mcp.fulcradynamics.com/mcp |
Python library fulcra-api | Code-first agents and notebooks. | Library docs, PyPI |
| REST API (the "Life API") | Any HTTP client. OAuth2 bearer tokens. | REST reference, OpenAPI spec |
The CLI and the Python library are the same PyPI package (fulcra-api, Python 3.11 or newer). The MCP server is open source at fulcradynamics/fulcra-context-mcp and published to PyPI as fulcra-context-mcp.
Getting connected
The fastest agent entry point
If you are an agent reading this: fetch and follow https://docs.fulcradynamics.com/agent-get-started.txt. It walks you through connecting, authenticating, and doing something useful in the same session.
MCP
Point an OAuth2-capable MCP client at https://mcp.fulcradynamics.com/mcp (Streamable HTTP transport). The client prompts the user to log in; the login applies only to that client's session, and the server never exposes the exchanged tokens to the client.
The core loop
- Ask what changed first. Before re-reading anything, ask Fulcra what was added or updated since you last looked: CLI
uvx fulcra-api data-updates "1 hour", MCP tool get_data_updates, REST GET /data/v1/updates. One call summarizes record ingestion and file changes across the datastore. Pass a user ID to see updates to data another user has shared with you.
- Discover before you query.
uvx fulcra-api catalog (MCP get_data_catalog) lists every Data Type you can query or record, including the user's custom types and types shared with them. Filter with -c <category> (for example user_configured or base_type) or -n <name>.
- Read and write records.
uvx fulcra-api get-records <DataType> "1 week" returns JSON lines for a relative window or an explicit start and end. uvx fulcra-api record <DataType> [value] records one sample, or pipe JSON lines into it for many. uvx fulcra-api data-type schema <DataType> prints the record schema as JSON Schema.
- Create your own Data Types.
uvx fulcra-api data-type create <BaseType> <Name> --description "...", where the base type is one of MomentAnnotation, DurationAnnotation, NumericAnnotation, ScaleAnnotation, or BooleanAnnotation. Custom types are referenced as <BaseType>/<UUID>, for example NumericAnnotation/642f37c8-67aa-4758-8cc9-9368b47dd766.
- Use files for anything unstructured.
uvx fulcra-api file upload|list|stat|download|delete|restore|share, and fulcra file download <path> - to print a file's contents to stdout. Remote paths are always /-rooted with forward slashes on every platform.
uvx fulcra-api --help and uvx fulcra-api <command> --help document every command, including share, group, and tag for sharing data with other users and groups. Most query commands print JSON lines that pipe cleanly into jq.
Ready-to-run notebooks are in the demos repository, openable directly in Google Colab.
Best practices for agents
- Timestamps are always timezone-aware. Naive datetimes are a bug. Prefer ISO 8601 with an explicit offset or
Z.
- Check
data-updates before re-reading. It is the cheapest way to learn whether anything changed.
- Name things for other agents. Files and custom Data Types are shared with every agent the user connects. Use descriptive names and paths, and check the catalog and file list before creating duplicates.
- Files are versioned. Overwriting a file keeps history; a deleted file or version can be restored. Prefer overwriting a known path over creating many similar files.
- Choose a sensible
sample_rate for time series: 3600 seconds for daily overviews, 60 to 300 seconds for detail.
- Sleep spans midnight. A night's sleep starts on day N and ends on day N+1, so extend the query range.
- Correlate across domains. The value of one datastore is combining streams: an agent's own records with calendar events, or user-logged events with device data.
Support
Official domains
- fulcradynamics.com
- context.fulcradynamics.com
- docs.fulcradynamics.com
- api.fulcradynamics.com
- mcp.fulcradynamics.com
- fulcra.ai
Comments