Symptoms
get_symptomsRetrieve decrypted recent symptoms from Apple Health and self-reported episodes, grouped by owner, with severity, dates, and coverage for analysis.
Instructions
Decrypt recent symptoms locally, grouped by data owner — both sources.
SENSITIVE. Each entry in owners carries owner_user_id and two lists:
· days — symptoms imported from Apple Health (cramps, headache, fatigue,
coughing…), one row per day with each sample's severity
(mild/moderate/severe/present/…). These reach this server only when the
user opted in on iOS — their own AI toggle, or the partner-AI toggle for
a partner's. symptom_counts counts logged DAYS per type.
· reported — episodes a person reported themselves, through
log_symptom or the Vaultbeat app: entry_id, symptom_type,
display_name (their own words), severity, local_date, onset_at /
end_at (end_recorded: false means no end was logged — ask, do not
assume it is still going), duration_minutes, body_location,
triggers, note. reported_counts counts EPISODES per type.
A type that exists in Apple Health is spelled the same in both lists
(healthkit_type: true), so "headache" from either source is one symptom.
To correct or remove a reported entry use update_symptom /
delete_symptom with its entry_id; imported days are edited in Apple Health.
Stays on-device, never re-exported.
Returns YOUR symptoms by default; partner=true returns your partner's
Apple Health days only (if they share symptoms with you from their own
app). A partner's reported episodes never reach you: the app and
log_symptom seal them for their owner's own AI alone, so an empty
reported under partner=true means "not shareable", not "none logged".
Carries a coverage block: quote coverage.days_covered (distinct days, not
the row count) and coverage.span_days beside any average or trend.
coverage.window_satisfied: false alone does NOT mean a short history: it is
also false when older days exist beyond your window. 🔴 Before saying how far
back someone's data goes, read coverage.more_available: true means this
server can decrypt days OLDER than first_day that your limit left behind —
re-read with a larger limit, or quote coverage.oldest_available as the real
start of their history. Never report a limit-shaped window as the extent of
their data.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fresh | No | ||
| limit | No | ||
| partner | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||