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_getJournalEntryFindthrough vritto_find

Fetch one journal entry by ID. Use only when the entry ID is already known; otherwise search with queryJournalEntries. Returns a compact summary unless detail is "full"; only shared entries are readable.

FieldTypeDescription
entryId*stringJournal entry ID.
detailone of summary, fullRow shape: "summary" (default, id/title/entryDate/mood/excerpt/tags) or "full" (every field incl. the complete body). Ask for "full" only when the user needs the body itself.
journal_queryJournalEntriesFindthrough vritto_find

Search private journal entries with optional text query and kind/mood/date/tag filters, e.g. the last 10 entries with mood "low". Returns active entries the user shared with AI, sorted by entry date, newest first; deleted entries are never returned. Supports an entry-date range, ALWAYS pass from/to when the question concerns a period (a year, a month, 'recently'). Rows are compact summaries; pass detail 'full' or fetch one entry with journal_getJournalEntry when the user needs the full body. `withheld` counts entries that matched but are not shared with AI.

FieldTypeDescription
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 alongside active ones; default false. Deleted entries are never returned by this tool, with or without this flag.
detailone of summary, fullRow shape: "summary" (default, id/title/entryDate/mood/excerpt/tags) or "full" (every field incl. the complete body).
limitintegerMax records to return (default 50 in summary mode).
journal_queryJournalStatsFindthrough vritto_find

Journalling cadence for one year, counted server-side over ACTIVE entries only (deleted and archived are excluded, and sharing does not affect the counts): total entries, entries this week, current streak, average mood and energy, plus a per-month breakdown. Prefer this over journal_queryJournalEntries for every how-often/how-many/streak question, it never touches a body.

FieldTypeDescription
yearstringFour-digit year for the by-month breakdown (defaults to the current year).
journal_createJournalEntryCreatethrough vritto_create

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

FieldTypeDescription
entry*objectJournal entry fields; only title is required.
entry.title*stringEntry title.
entry.bodystringPrivate journal body.
entry.entryDatestringLocal entry date YYYY-MM-DD; defaults to today.
entry.kindone of daily, reflection, gratitude, dream, check_inEntry kind; defaults to "daily".
entry.statusone of active, archived, deletedEntry status; defaults to "active".
entry.moodone of great, good, okay, low, hardMood check-in; defaults to "okay".
entry.energyintegerEnergy from 1 (drained) to 5 (energized); defaults to 3.
entry.promptstringPrompt that inspired the entry.
entry.gratitudelist of stringGratitude lines.
entry.tagslist of stringTags.
entry.linkedRefslist of objectLinked module records this entry references.
entry.locationNamestringOptional place label.
entry.weatherstringOptional weather or ambient context.
entry.favoritebooleanMark the entry as a favorite.
entry.privatebooleanWhether the entry is private; defaults to true.
entry.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.
entry.idempotencyKeystringStable dedupe key so a retried create does not duplicate the entry.
Example input
{
  "entry": {
    "title": "Quiet Saturday",
    "body": "Slow morning, long walk by the lake.",
    "entryDate": "2026-09-26",
    "kind": "daily",
    "mood": "good"
  }
}
journal_patchJournalEntryUpdatethrough vritto_update

Update selected fields of one journal entry, e.g. { entryId, patch: { favorite: true } }. Only include the fields being changed; everything else is preserved.

FieldTypeDescription
entryId*stringJournal entry ID.
patch*objectJournal entry fields to change; omitted fields are kept.
patch.titlestringEntry title.
patch.bodystringPrivate journal body.
patch.entryDatestringLocal entry date YYYY-MM-DD; defaults to today.
patch.kindone of daily, reflection, gratitude, dream, check_inEntry kind; defaults to "daily".
patch.statusone of active, archived, deletedEntry status; defaults to "active".
patch.moodone of great, good, okay, low, hardMood check-in; defaults to "okay".
patch.energyintegerEnergy from 1 (drained) to 5 (energized); defaults to 3.
patch.promptstringPrompt that inspired the entry.
patch.gratitudelist of stringGratitude lines.
patch.tagslist of stringTags.
patch.linkedRefslist of objectLinked module records this entry references.
patch.locationNamestringOptional place label.
patch.weatherstringOptional weather or ambient context.
patch.favoritebooleanMark the entry as a favorite.
patch.privatebooleanWhether the entry is private; defaults to true.
patch.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.
patch.idempotencyKeystringStable dedupe key so a retried create does not duplicate the entry.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.
Example input
{
  "entryId": "je_quiet_sat",
  "patch": {
    "mood": "great",
    "favorite": true
  }
}
journal_deleteJournalEntryDeletethrough vritto_delete

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

FieldTypeDescription
entryId*stringJournal entry ID.
expectedRevisionintegerOptional revision guard; the write is rejected if the stored revision differs.

Kept in the Vritto app

  • journal_updateJournalEntry: Replaces a whole record and clears omitted fields; the merge operation is on MCP instead.