State of mind (moods)
get_state_of_mindRetrieve and decrypt recent State of Mind records locally, including Apple Health and AI-logged moods with valence, labels, and associations. Filter by date range or partner.
Instructions
Decrypt recent states of mind (how the person felt) locally — both sources.
SENSITIVE. Apple Health's "State of Mind": each record is one feeling with
valence (-1 very unpleasant … 0 neutral … +1 very pleasant),
valence_classification (Apple's seven regions, veryUnpleasant …
veryPleasant — use these words rather than inventing a grade), labels
(Apple's feeling words: drained, stressed, calm, grateful…),
associations (the life area: work, family, partner, health…), kind
(momentaryEmotion = how they felt at that moment, dailyMood = how the
day went overall), local_date / local_time.
source says where it came from:
· "apple_health" — logged by the person on their Watch, in the Health app
or in another app, and imported by their iPhone (app names it);
· "ai" — recorded by an AI through log_state_of_mind (entry_id,
note). Remove a mistaken one with delete_state_of_mind.
Each owner also carries daily (per day: count, mean_valence,
lowest_valence, highest_valence, daily_mood_valence) and counts per
region, label and life area. Describe what was logged; a day with one
record says far less than a day with ten — quote count beside any
average, and never read a day with no record as a neutral day.
By default the newest 100 records (about three months of daily moods).
since / until ("YYYY-MM-DD", local days, both inclusive) read a
calendar window instead — "how was I in March", or anything older than
the default page — and then limit applies only if you pass it. A
record with its tallies is roughly 450 bytes, so about 130 fit in one
result; a longer window comes back as result_too_large — read it a
month or a quarter at a time.
Returns YOUR records by default; partner=true returns your partner's —
only if they turned on sharing their moods with your AI in their own
Vaultbeat app (off by default). Stays on-device, never re-exported.
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 records OLDER than first_day that your read left behind —
read them with a since / until window ending before first_day (a much
larger limit does not fit in one result), 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 | ||
| since | No | ||
| until | No | ||
| partner | No |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||