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.
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`.
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.
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.
Restore an archived user-defined data type.
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.
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.
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.
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.
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.
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.
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.
+13 more tools listed on main page