# Context by Fulcra (pypi · fulcra-context-mcp)

Connect your Fulcra Context personal datastore: access your metrics, events, agent data and more

- Trust score: 66/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-21

## Components

- remote · `mcp.fulcradynamics.com`: 36/100, [markdown](https://verifymcp.io/servers/com-fulcradynamics-context/mcp.md), [page](https://verifymcp.io/servers/com-fulcradynamics-context/mcp)
- pypi · `fulcra-context-mcp`: 66/100 (this document), [markdown](https://verifymcp.io/servers/com-fulcradynamics-context/fulcra-context-mcp.md), [page](https://verifymcp.io/servers/com-fulcradynamics-context/fulcra-context-mcp)

## Channel facts

- Registry: `pypi`
- Package: `fulcra-context-mcp`
- Version: `0.3.3`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-21.

- **Supply Chain Security**: 95/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects pytest 7.4.4, reached via fulcra-api > pytest. A fixed version is available.
  - Runs setuptools.build_meta at install time, a recognised native-build step with no shell scripting around it.
  - 6 of 65 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 3 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 3514 tokens (~140/item across 25 items; 25 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 0/100
  - Stability not yet verified: not enough scan history yet (needs a 30-day window).
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 26 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Context by Fulcra MCP server?

Context by Fulcra runs locally as a PyPI package, launched with uvx fulcra-context-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add com-fulcradynamics-context -- uvx fulcra-context-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "com-fulcradynamics-context": {
      "command": "uvx",
      "args": [
        "fulcra-context-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "com-fulcradynamics-context": {
      "command": "uvx",
      "args": [
        "fulcra-context-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add com-fulcradynamics-context -- uvx fulcra-context-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-fulcradynamics-context": {
      "type": "local",
      "command": [
        "uvx",
        "fulcra-context-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add com-fulcradynamics-context --command uvx --arg fulcra-context-mcp
```

### Hermes

```yaml
mcp_servers:
  com-fulcradynamics-context:
    command: "uvx"
    args: ["fulcra-context-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "com-fulcradynamics-context": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "fulcra-context-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add com-fulcradynamics-context -t stdio -c uvx -a fulcra-context-mcp
```

### Other

```json
{
  "mcpServers": {
    "com-fulcradynamics-context": {
      "command": "uvx",
      "args": [
        "fulcra-context-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-18 (score 66, +31)

- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: excellent
- [functional] First check of Schema quality: fail
- [functional] First check of Destructive annotations: 100
- [functional] First check of Tool coverage: 100
- [functional] First check of Tool coverage: 100

### 2026-09-17 (score 35)

First indexed and scored.

## MCP tools (25)

### `get_workouts` (~109 tokens)

Get Workouts

Get details about the workouts that the user has done during a period of time.
Result timestamps will include time zones. Always translate timestamps to the user's local
time zone when this is known.

Input parameters:

- `end_time` (string, required): the ending time of the period. Must include tz (ISO8601).
- `fulcra_userid`: Retrieve data for another Fulcra user (if shared)
- `start_time` (string, required): The starting time of the period. Must include tz (ISO8601).

Output parameters:

- `result` (string)

### `annotations_catalog` (~60 tokens)

List Annotation Data Types

Get the list of all annotation data types the user has defined.
This does not get the actual values the user has recorded; for that, use the `get_records` tool.
Use this tool to get the IDs and types to pass to `get_records`.

Output parameters:

- `result` (string)

### `create_data_type` (~249 tokens)

Create Data Type

Create a user-defined data type so the user can track something new.

Choose base_type by what gets recorded: "moment" (a point in time),
"duration" (a time range), "boolean" (yes/no), "numeric" (a number,
optionally with a unit), or "scale" (a 1-5 rating with labels).

The new type appears in get_data_catalog, and recorded values are readable
with get_records. Creation is reversible with archive_data_type.

Input parameters:

- `base_type` (string, required): What kind of values this type records (see above).
- `default_value`: Value pre-filled when recording. boolean/numeric only.
- `description`: Optional description of what the type tracks.
- `metric_kind`: "cumulative" or "discrete". boolean/numeric/scale only.
- `name` (string, required): Human-readable name (e.g. "Caffeine Intake").
- `scale_labels`: Exactly 5 labels for the 1-5 scale values. scale only.
- `tags`: Optional tag names to attach; missing tags are created automatically.
- `unit`: Unit for recorded values (e.g. "mg"). numeric only.

Output parameters:

- `result` (string)

### `archive_data_type` (~78 tokens)

Archive Data Type

Archive (soft-delete) a user-defined data type.

The type and its recorded data are recoverable with restore_data_type.
Only user-defined types (created via create_data_type or the Context app)
can be archived.

Input parameters:

- `data_type` (string, required): The "<BaseType>/<uuid>" ID from get_data_catalog, or the bare UUID.

Output parameters:

- `result` (string)

### `restore_data_type` (~42 tokens)

Restore Data Type

Restore an archived user-defined data type.

Input parameters:

- `data_type` (string, required): The "<BaseType>/<uuid>" ID of the archived type, or the bare UUID.

Output parameters:

- `result` (string)

### `record_data` (~201 tokens)

Record Data

Record a single record for a recordable data type.

Use get_data_catalog to find data types; user-defined ones use the
"<BaseType>/<uuid>" ID form (create new ones with create_data_type).
Recorded data can be read back with get_records.

Input parameters:

- `data_type` (string, required): The ID of the data type to record to.
- `end_time`: When the recorded range ended. Must include tz (ISO8601). Only for duration-style types, where it is required.
- `note`: Free-text note stored with the record.
- `start_time`: When the record occurred; defaults to now. Must include tz. ISO8601. Duration-style types require it.
- `tags`: Tag names to attach; missing tags are created automatically.
- `value`: The value to record, for types that take one. E.g. "75.5" for numeric, "true" for boolean, "3" for scale.

Output parameters:

- `result` (string)

### `get_data_catalog` (~135 tokens)

Get Data Catalog

Get all data types available for this user, grouped by relevant MCP tool.
Includes health and sensor measurements,
location, events, and user-defined annotation types.

Call this before requesting time-series data or raw records, and only use a
data type with the tools named in its group.

Input parameters:

- `category`: Optional. Filter by category. E.g. "healthkit", "annotations", "sleep", "mindfulness", "user_configured", "base_type".
- `data_type`: Optional. Return only the data type with this exact ID.
- `name`: Optional. Filter results by partial, case-insensitive name match.

Output parameters:

- `result` (string)

### `get_time_series` (~227 tokens)

Get Time Series

Get calculated per-interval time-series values for a single data type.

Only data types that `get_data_catalog` lists as usable with this tool are
supported; other types can be read with `get_records`. Result timestamps
include time zones; translate them to the user's local time zone when known.

Input parameters:

- `calculations`: Extra per-slice calculations to include. One or more of "max", "min", "delta", "mean", "uniques", "allpoints", "rollingmean". Not supported on "cumulative" kinds.
- `data_type` (string, required): The data type ID to retrieve (see `get_data_catalog`).
- `end_time` (string, required): Range end (exclusive). Must include tz (ISO8601).
- `fulcra_userid`: Retrieve data for another Fulcra user (if shared)
- `replace_nulls`: Replace missing values (NA) with 0.
- `sample_rate`: Seconds per sample; may be fractional.
- `start_time` (string, required): Range start (inclusive). Must include tz (ISO8601).

Output parameters:

- `result` (string)

### `get_records` (~206 tokens)

Get Records

Retrieve the raw records of any data type during a time period.

Works with every type listed by `get_data_catalog`, including user-defined
ones ("<BaseType>/<uuid>" IDs); the correct API endpoint is chosen
automatically. Records that cover a time range are included when any part
of it intersects the requested window. Results are raw samples — they may
come from multiple sources and can overlap; for calculated per-interval
values of numeric data types, prefer `get_time_series`. Result
timestamps include time zones; translate them to the user's local time
zone when known.

Input parameters:

- `data_type` (string, required): The data type ID, as returned by `get_data_catalog`.
- `end_time` (string, required): Range end (exclusive). Must include tz (ISO8601).
- `fulcra_userid`: Retrieve data for another Fulcra user (if shared)
- `start_time` (string, required): Range start (inclusive). Must include tz (ISO8601).

Output parameters:

- `result` (string)

### `get_data_updates` (~167 tokens)

Get Data Updates

Summarize the data that arrived in the user's account during a period of time.

The time range filters on when records were processed/synced into Fulcra,
NOT on the records' own timestamps — e.g. last night's sleep records
typically arrive this morning. Use this to find out what new data exists
since a previous check, then query the changed types with the appropriate
tools.

Input parameters:

- `end_time` (string, required): The end of the time range (exclusive). Must include tz (ISO8601).
- `fulcra_userid`: Check another Fulcra user's account instead. Only what they share is reported; poll to notice their agent's writes.
- `start_time` (string, required): The start of the time range (inclusive). Must include tz (ISO8601).

Output parameters:

- `result` (string)

### `get_sleep` (~442 tokens)

Get Sleep

Return the user's sleep data at a chosen level of detail.

Pick the coarsest level that answers the question — results grow with detail:
\- "aggregate": stage totals per period (default 1 day), one row per period
  per stage. Best for multi-day questions ("how did I sleep this month").
\- "cycles": one row per sleep session.
\- "stages": every stage interval (the full hypnogram); single-night detail.

Sleep spans midnight (starts day N, ends day N+1) — extend the time range
accordingly. Stage integers: 0=In Bed, 1=Asleep/Unknown, 2=Awake, 3=Light,
4=Deep, 5=REM. Result timestamps include time zones; translate them to the
user's local time zone when known.

Input parameters:

- `agg_functions`: "aggregate" level only. E.g. "sum", "mean" (default ["sum"]).
- `clip_to_range`: Clip results to the requested range (default True).
- `cycle_gap`: Minimum interval separating distinct cycles (e.g. "PT2H").
- `end_time` (string, required): Range end (exclusive). Must include tz (ISO8601).
- `gap_stages`: Stage integers treated as gaps between cycles.
- `level` (string): Level of detail (see above).
- `merge_contiguous`: "stages" level only. Merge adjacent same-stage samples (default True).
- `merge_overlapping`: "stages" level only. Merge overlapping stages (default True).
- `mode`: "aggregate" only. Assign by "start", "end" or "split" (default "end").
- `period`: "aggregate" level only. Period length, e.g. "1d", "1w" (default "1d").
- `stages`: Stage integers to include (default: all).
- `start_time` (string, required): Range start (inclusive). Must include tz (ISO8601).
- `time_zone`: "aggregate" only. IANA tz for period bounds; use the user's local one.

Output parameters:

- `result` (string)

### `get_location_at_time` (~149 tokens)

Get Location at Time

Gets the user's location at the given time.

If no sample is available for the exact time, searches for the closest one up to
window_size seconds away.

Result timestamps will include time zones. Always translate timestamps to the user's local
time zone when this is known.

Input parameters:

- `include_after` (boolean): Allow the closest sample to be after `time` (default true).
- `reverse_geocode` (boolean): Include the address of the location (default true).
- `time` (string, required): The point in time to locate the user at. Must include tz (ISO8601).
- `window_size` (integer): Seconds around `time` to search for samples (default 14400).

Output parameters:

- `result` (string)

### `get_location_time_series` (~129 tokens)

Get Location Time Series

Retrieve a time series of locations that the user was at.
Result timestamps will include time zones. Always translate timestamps to the user's local tz when this is known.

Input parameters:

- `change_meters`: Drop samples fewer than this many meters from the previous one.
- `end_time` (string, required): Range end (exclusive). Must include tz (ISO8601).
- `reverse_geocode`: Include the address of each location (default false).
- `sample_rate`: Seconds per sample (default 900).
- `start_time` (string, required): Range start (inclusive). Must include tz (ISO8601).

Output parameters:

- `result` (string)

### `get_calendars` (~52 tokens)

Get Calendars

List the user's calendars, grouped by account/source.

Use the names or IDs with get_calendar_events to filter by calendar.

Input parameters:

- `fulcra_userid`: List calendars of another Fulcra user (if shared)

Output parameters:

- `result` (string)

### `get_calendar_events` (~165 tokens)

Get Calendar Events

Retrieve the user's calendar events within a time range.
This will return events that occur (at least partially)
during the range.

Each event carries a participant_count; pass include_participants=true
when you need who was invited and their responses. Result timestamps
include time zones; translate them to the user's local time zone when
known.

Input parameters:

- `calendars`: Only these calendars (names or IDs); default is all.
- `end_time` (string, required): Range end (exclusive). Must include tz (ISO8601).
- `fulcra_userid`: Retrieve events of another Fulcra user (if shared)
- `include_participants` (boolean): Include each event's participant list.
- `start_time` (string, required): Range start (inclusive). Must include tz (ISO8601).

Output parameters:

- `result` (string)

### `list_files` (~148 tokens)

List Files

List the files in the user's Fulcra account, or files another user shares.

Files can be used to pass data between agents: one agent writes a file with
\`write_file`, others notice the change via `get_data_updates` and read it
with `read_file`.

Input parameters:

- `fulcra_userid`: List another Fulcra user's files (only the paths they share).
- `include_versions` (boolean): Return all stored versions of one file, newest first. `path` must then be a single file's full path. Version IDs can be passed to `restore_file`.
- `path` (string): A folder to list (default "/"), or a single file's full path.

Output parameters:

- `result` (string)

### `read_file` (~131 tokens)

Read File

Read a file from the user's Fulcra account, or one another user shares.

Input parameters:

- `fulcra_userid`: Read a file of another Fulcra user (if shared).
- `include_binary` (boolean): Return non-UTF-8 files base64-encoded (default false). Otherwise binary files are refused with their size.
- `max_bytes` (integer): Truncate text content beyond this many bytes (default 100000). Pass a larger value only when the full content is truly needed; large files consume a lot of context.
- `path` (string, required): The full path of the file to read.

Output parameters:

- `result` (string)

### `write_file` (~146 tokens)

Write File

Write a text file to the user's Fulcra account.

Writing to an existing path creates a new version; earlier versions are
kept and can be restored with `restore_file`. Other agents can detect the
change through `get_data_updates` (under "file_changes") and read it with
\`read_file`, so files are a good way to pass data between agents.

Input parameters:

- `content` (string, required): The text content to write.
- `content_type` (string): Optional MIME type. Defaults to "text/plain"; use e.g. "application/json" when writing JSON.
- `path` (string, required): The full path to write to (e.g. "/agents/state.json").

Output parameters:

- `result` (string)

### `delete_file` (~71 tokens)

Delete File

Delete a file stored in the user's Fulcra account.

This is a soft delete: earlier versions of the file are kept and can be
restored with `restore_file` (find version IDs via list_files with
include_versions=true).

Input parameters:

- `path` (string, required): The full path of the file to delete.

Output parameters:

- `result` (string)

### `restore_file` (~47 tokens)

Restore File Version

Restore a previous version of a file in the user's Fulcra account.

Input parameters:

- `version_id` (string, required): The UUID of the file version to restore. Found via list_files with include_versions=true.

Output parameters:

- `result` (string)

### `create_share` (~308 tokens)

Create Share

Share files or data types from this account with other Fulcra users (read-only).

Recipients read them by passing this user's ID as `fulcra_userid` to the
file and data tools; they can never write here. For agent-to-agent
coordination, share a folder like "/shared/<topic>/" and have the other
user share one back; each agent writes to its own account and reads the
other's. Only share what the user asked to share.

Input parameters:

- `data_types`: Data type IDs to share (see `get_data_catalog`). Also accepts "calendars" and "calendar_events".
- `file_paths`: Files or folders to share; a folder path must end with "/".
- `include_file_history` (boolean): Also share earlier versions of the files.
- `name` (string, required): A short label for the share, shown to recipients.
- `share_all_data` (boolean): Share the entire account, only on explicit request. Excludes file_paths and data_types.
- `time_end`: Only share data records before this time. Must include tz. ISO8601. Not allowed with file_paths.
- `time_start`: Only share data records from this time on. Must include tz. ISO8601. Not allowed with file_paths: file shares are never time-bounded.
- `with_group_ids`: Fulcra data group IDs to share with (all members).
- `with_user_ids`: Fulcra user IDs to share with.

Output parameters:

- `result` (string)

### `list_shares` (~99 tokens)

List Shares

List what this user shares with others and what others share with them.

Incoming entries show what another user shares (read it by passing their
\`sharing_fulcra_userid` as `fulcra_userid` to the file and data tools).
Also reports this user's own ID, which others need in order to share
with them.

Input parameters:

- `direction` (string): Which shares to list: "outgoing", "incoming", or "both".

Output parameters:

- `result` (string)

### `delete_share` (~50 tokens)

Delete Share

Stop sharing: delete a share this user created, revoking all recipients' access.

Input parameters:

- `share_id` (string, required): The "datashare_id" from `list_shares(direction="outgoing")`.

Output parameters:

- `result` (string)

### `debug_token_info` (~42 tokens)

Debug Token Info

Return info about the local session's Fulcra credentials.

Shows expiry and refresh-token presence for the stdio session's stored
credentials. Useful for diagnosing authentication issues.

Output parameters:

- `result` (string)

### `get_user_info` (~35 tokens)

Get User Info

Return general info about the Context by Fulcra user.

Returns user references such as time zone, calendar ids, and other metadata.

Output parameters:

- `result` (string)

## Diagnostics

Captured diagnostic sections: Provenance, Install scripts, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/com-fulcradynamics-context/fulcra-context-mcp#diagnostics

## Score history

- 2026-09-21: 66
- 2026-09-20: 66
- 2026-09-19: 66
- 2026-09-18: 66
- 2026-09-17: 35

## Common questions

### What is the Context by Fulcra MCP server?

Context by Fulcra is an MCP server listed in the public MCP registry as com.fulcradynamics/context. Connect your Fulcra Context personal datastore: access your metrics, events, agent data and more. This page covers its PyPI package (fulcra-context-mcp).

### Is the Context by Fulcra MCP server safe to use?

Context by Fulcra scores 66 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Context by Fulcra MCP server expose?

Context by Fulcra exposes 25 tools: get_workouts, annotations_catalog, create_data_type, archive_data_type, restore_data_type, and 20 more. Their descriptions and schemas cost roughly 3,488 tokens of context every time the server is loaded.

### Is the Context by Fulcra MCP server still maintained?

Context by Fulcra is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- PyPI project: https://pypi.org/project/fulcra-context-mcp/
- Socket report: https://socket.dev/pypi/package/fulcra-context-mcp
- Repository: https://github.com/fulcradynamics/fulcra-context-mcp
- Website: https://fulcradynamics.com/
- Changelog RSS feed: https://verifymcp.io/servers/com-fulcradynamics-context/fulcra-context-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/com-fulcradynamics-context/fulcra-context-mcp.json
- HTML version of this page: https://verifymcp.io/servers/com-fulcradynamics-context/fulcra-context-mcp
