Skip To Main Content
All modules

Journal

Fields marked * are required. Updates keep every field they are not given. An AI app can ask vritto_describe for the same details, filtered to what its connection may use.

Journal Entryjournal_entry

A private journal entry with mood and reflections.

journal_findFindthrough vritto_find

Read the Journal: search entries the user shared with AI by text, kind, mood, tag or date (newest first; `withheld` counts matches not shared), one entry by id, or view 'stats' for a year's cadence (totals, streak, average mood and energy, by month) over every active entry. ALWAYS pass from/to when the question concerns a period.

FieldTypeDescription
idstringReturn just this entry.
entryIdstringOlder name for id.
viewone of stats'stats': journalling cadence for a year, counted over ACTIVE entries whatever their sharing; never touches a body. Prefer it for how-often, how-many and streak questions.
yearstringWith view 'stats': the four-digit year (default the current one).
querystringFree-text search over titles, bodies, and tags.
kindone of daily, reflection, gratitude, dream, check_inFilter by entry kind.
moodone of great, good, okay, low, hardFilter by mood.
entryDatestringFilter to one entry date YYYY-MM-DD.
fromstringOnly entries dated ON or AFTER this YYYY-MM-DD date.
tostringOnly entries dated ON or BEFORE this YYYY-MM-DD date.
tagstringFilter by tag.
includeArchivedbooleanAlso return ARCHIVED entries; deleted entries are never returned.
detailone of summary, full"summary" (default, id/title/entryDate/mood/excerpt/tags) or "full" (every field incl. the complete body).
limitintegerMax records (default 50 in summary mode).
Example input
{
  "from": "2026-09-01",
  "to": "2026-09-30"
}
journal_addCreatethrough vritto_create

Add a private journal entry. Only a title is required; include entryDate (YYYY-MM-DD), kind, mood, energy (1-5), body, gratitude lines and tags when the user gives them, e.g. an evening reflection with mood "good" and energy 4.

FieldTypeDescription
recordobjectJournal entry fields; only title is required.
record.title*stringEntry title.
record.bodystringPrivate journal body.
record.entryDatestringLocal entry date YYYY-MM-DD; defaults to today.
record.kindone of daily, reflection, gratitude, dream, check_inEntry kind; defaults to "daily".
record.statusone of active, archived, deletedEntry status; defaults to "active".
record.moodone of great, good, okay, low, hardMood check-in; defaults to "okay".
record.energyintegerEnergy from 1 (drained) to 5 (energized); defaults to 3.
record.promptstringPrompt that inspired the entry.
record.gratitudelist of stringGratitude lines.
record.tagslist of stringTags.
record.linkedRefslist of objectLinked module records this entry references.
record.locationNamestringOptional place label.
record.weatherstringOptional weather or ambient context.
record.favoritebooleanMark the entry as a favorite.
record.privatebooleanWhether the entry is private; defaults to true.
record.aiContextEnabledbooleanWhether the user shared this entry with SahAI and connected AI clients. Defaults to FALSE for Journal, never set it to true unless the user asks for that entry to be readable by AI.
record.idempotencyKeystringStable dedupe key so a retried create does not duplicate the entry.
entryobjectOlder form of record (journal_createJournalEntry).
entry.titlestring
Example input
{
  "record": {
    "title": "Quiet Saturday",
    "body": "Slow morning, long walk by the lake.",
    "entryDate": "2026-09-26",
    "kind": "daily",
    "mood": "good"
  }
}
journal_changeUpdatethrough vritto_update

Change one journal entry by record.id, e.g. { record: { id, favorite: true } }: only the fields sent change, everything else is kept.

FieldTypeDescription
recordobjectThe entry's id plus the fields to change; omitted fields are kept.
record.titlestringEntry title.
record.bodystringPrivate journal body.
record.entryDatestringLocal entry date YYYY-MM-DD; defaults to today.
record.kindone of daily, reflection, gratitude, dream, check_inEntry kind; defaults to "daily".
record.statusone of active, archived, deletedEntry status; defaults to "active".
record.moodone of great, good, okay, low, hardMood check-in; defaults to "okay".
record.energyintegerEnergy from 1 (drained) to 5 (energized); defaults to 3.
record.promptstringPrompt that inspired the entry.
record.gratitudelist of stringGratitude lines.
record.tagslist of stringTags.
record.linkedRefslist of objectLinked module records this entry references.
record.locationNamestringOptional place label.
record.weatherstringOptional weather or ambient context.
record.favoritebooleanMark the entry as a favorite.
record.privatebooleanWhether the entry is private; defaults to true.
record.aiContextEnabledbooleanWhether the user shared this entry with SahAI and connected AI clients. Defaults to FALSE for Journal, never set it to true unless the user asks for that entry to be readable by AI.
record.idempotencyKeystringStable dedupe key so a retried create does not duplicate the entry.
record.id*stringJournal entry ID from journal_find, never invented.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
entryIdstringOlder form (journal_patchJournalEntry): the entry, with patch.
patchobjectOlder form, with entryId: the fields to change.
patch.privateboolean
patch.aiContextEnabledboolean
entryobjectOlder form (journal_updateJournalEntry): a whole replacement entry with its id and title.
entry.idstringVritto record ID.
entry.privateboolean
entry.aiContextEnabledboolean
Example input
{
  "record": {
    "id": "je_quiet_sat",
    "mood": "great",
    "favorite": true
  }
}
journal_removeDeletethrough vritto_delete

Delete one journal entry by id (soft delete). Use only for explicit deletion requests.

FieldTypeDescription
idstringThe entry to delete.
entryIdstringOlder name for id.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.