Skip to main content
Glama
Fino-wind

Vaultbeat MCP Server

Log state of mind

log_state_of_mind

Record how someone says they feel as an Apple Health State of Mind entry, converting conversational mood reports into valence, labels, and notes.

Instructions

Record how the person says they feel, as Apple Health's State of Mind (agent write).

This is where "今天工作好累,被掏空了" / "刚散步回来,心情特别平静" / "I'm so anxious about tomorrow" goes when they tell you how they feel — people rarely open an app to log a feeling, but they say it to you. One call per feeling. This tool only ever adds; delete_state_of_mind removes a mistaken one.

valence: -1 (very unpleasant) … 0 (neutral) … +1 (very pleasant), YOUR reading of how pleasant it felt FROM THEIR WORDS. Apple splits the range into seven equal regions: about -0.85 very unpleasant, -0.55 unpleasant, -0.3 slightly unpleasant, 0 neutral, +0.3 slightly pleasant, +0.55 pleasant, +0.85 very pleasant. Stay inside what they said; do not dramatise "有点烦" into very unpleasant.

labels: Apple's feeling words that THEIR words support, usually one to three — amazed, amused, angry, annoyed, anxious, ashamed, brave, calm, confident, content, disappointed, discouraged, disgusted, drained, embarrassed, excited, frustrated, grateful, guilty, happy, hopeful, hopeless, indifferent, irritated, jealous, joyful, lonely, overwhelmed, passionate, peaceful, proud, relieved, sad, satisfied, scared, stressed, surprised, worried. Leave it empty rather than guess when they only said "心情还行". associations: what it is about, only if they said — community, current_events, dating, education, family, fitness, friends, health, hobbies, identity, money, partner, self_care, spirituality, tasks, travel, weather, work. kind: "momentaryEmotion" (default — how they feel right now or at one moment) or "dailyMood" (how the whole day has been). logged_at: the moment, ISO 8601 with their UTC offset, e.g. "2026-10-04T14:20+08:00"; omit it for right now. A dailyMood about a past day may give just that day as date ("2026-10-03") — do not invent an hour. note: a short summary in their words, only if useful later. It stays in Vaultbeat; Apple Health has no place for text.

The person's iPhone writes it into Apple Health (Mental Wellbeing → State of Mind) only if they turned on "Allow AI to update Apple Health" in the app — it is off by default; either way it shows in Vaultbeat's mood calendar (app 1.3.0 and later; an older app keeps it without showing it). Returns entry_id (for delete_state_of_mind) and the entry as read back. Read everything with get_state_of_mind. Encrypted end to end before it leaves here, for the owner and this machine; the owner's iPhone then re-seals it for their other paired machines and — only if they turned on sharing moods with their partner's AI — for that AI too, note included, so write nothing in note they would not want that reader to see.

Input Schema

NameRequiredDescriptionDefault
dateNo
kindNomomentaryEmotion
noteNo
labelsNo
valenceYes
logged_atNo
associationsNo

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.9.3

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare non-read-only, non-destructive, non-idempotent; the description adds the append-only guarantee ('only ever adds'), the iPhone write gate that is off by default, the app-version caveat for the mood calendar, the returned `entry_id`, and the encryption/partner-sharing implications of `note`. That privacy warning about who can read `note` is exactly the kind of context structured fields cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and trigger come first, then per-parameter guidance, then a caveats paragraph — a sensible front-loaded order with no filler sentences. It is long, and the multi-line example and encryption sentences are dense, but nearly every line carries operational information an agent would otherwise get wrong.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A seven-parameter write tool with a 0%-coverage schema, a 0% description deficit would be fatal here, and none exists; return values are backed by an output schema and are nevertheless summarized (`entry_id` plus the entry as read back). Write-gating, privacy of `note`, and the delete counterpart are all present, leaving nothing essential to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must carry all seven parameters — and it does: valence gets the -1..+1 scale plus Apple's seven-region mapping and an anti-dramatisation rule, labels and associations get controlled vocabularies with a 'leave it empty rather than guess' rule, kind gets both allowed values with their meanings, and logged_at/date get concrete ISO formats and a 'do not invent an hour' constraint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a concrete verb+resource ('Record how the person says they feel, as Apple Health's State of Mind') and anchors it with realistic utterance examples that map directly to the trigger condition. It is trivially distinguishable from `get_state_of_mind` (read) and `delete_state_of_mind` (remove a mistaken one), both of which are named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use ('when they tell you how they feel'), why it matters ('people rarely open an app to log a feeling'), the cadence ('one call per feeling'), and the corrective path via `delete_state_of_mind`. It also points to `get_state_of_mind` for reading back, covering the alternative-selection burden completely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.