Dayze — Life Context

Life context for agents: getcontextpack + public notable packs.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

    What data it sees

    Do you need an account

    No: the server works without sign-in

    Life context for agents: get_context_pack + public notable packs. x402 + OAuth.

    How to connect

    How to connect Dayze — Life Context to Claude

    The server address to paste into Claude settings:

    https://dayze.com/api/mcp

    1. Open Claude (claude.ai or the desktop app).
    2. Go to Settings → Connectors.
    3. Click Add custom connector.
    4. Paste the server address copied below into Remote MCP server URL and click Add.
    5. In a chat, click + → Connectors and switch the new connector on.

    Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.

    Authorization

    After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.

    How to connect Dayze — Life Context to ChatGPT

    The server address to paste into ChatGPT settings:

    https://dayze.com/api/mcp

    1. Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
    2. Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
    3. Open Settings → Connectors and click Create.
    4. Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
    5. Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
    6. In a new chat open + → Apps/Connectors and enable the connector.

    OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.

    Authorization

    On first use ChatGPT opens the service's sign-in window. Sign in and approve access.

    How to connect Dayze — Life Context to Cursor

    The server address to paste into Cursor settings:

    https://dayze.com/api/mcp

    Fastest: click Open in Cursor below and confirm the prompt.

    Manually:

    1. In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
    2. Paste the JSON copied below into ~/.cursor/mcp.json (per project: .cursor/mcp.json in the repo root).
    3. Save the file. The server appears in the MCP list; authorize it there if asked.

    Authorization

    If the service needs sign-in, an authorize button appears next to the server in the MCP list.

    Server tool list (129)

    Raw names from tools/list. Only developers need these.

    notable_searchSearch the public Dayze notable-people catalog by name, occupation, or slug. Use when you need to find a person before fetching a pack. Example slug: albert-einstein. ($0.01)
    notable_profileBio-only profile JSON by slug (no life-in-days, similar, or birthday peers). Prefer notable_pack for “who is X / age in days / peers”. Example: taylor-swift. ($0.02)
    notable_packDEFAULT for who is X: profile + life_in_days (age/day_number) + similar people + birthday peers. Timeline events include day_number. Prefer this over notable_profile. Example: albert-einstein. ($0.05)
    notable_pack_premiumS-tier guaranteed pack (score≥85, timeline≥8, image, embedding). Errors if below bar. Use when you need high-quality, complete notable context. Example slug: elon-musk. ($0.10)
    compare_livesSide-by-side notable packs for two slugs (life_in_days + day_number timelines). One call instead of two notable_pack. Example: elon-musk vs steve-jobs. ($0.08)
    get_life_contextGet a snapshot of the authenticated user's current life context (identity, today/upcoming events, pulse, trackers). Relationships and memories are included by default; pass include_*=false to omit. Location is opt-in. Requires an authenticated Dayze account via OAuth; scoped API keys are also supported for direct clients. ($0.15; API key required)
    get_context_packLife Context Protocol (LCP) pack for the authenticated user: identity, pulse, who_matters, whats_next, memories, quiz_results. Pass include_relationships/include_memories/include_quiz_results false to omit those sections; location and money stay opt-in. Spec: https://dayze.com/docs/life-context ($0.20; API key required)
    get_life_graphExplicit private life-graph export: favorites/VIP plus people with edges or recent event tags. Pass full=true for a larger capped list. Optional event–people links. Requires OAuth or a supported scoped credential. ($0.25; API key required)
    get_person_neighborhoodSubgraph around one user-owned person_id — profile (avatar_url, photo_count, has_photos) plus declared connections. Use get_person_photos for the full gallery. Notes omitted unless include_notes=true (redacted). Requires OAuth or a supported scoped credential. ($0.15; API key required)
    get_eventsAuthenticated user's calendar events. Prefer explicit from/to (YYYY-MM-DD). Shortcuts: today|week|month|year (calendar year)|decade. Browsing noise excluded by default. ($0.10; API key required)
    get_peopleList the authenticated user's Dayze Contacts (private CRM; table people). Each contact includes avatar_url, photo_count, and has_photos; use get_person_photos(person_id) for the full gallery. Notes omitted by default (has_notes flag); pass include_notes=true for progressive fetch (credential/secret spans are redacted server-side). Supports limit (default 100, max 500) and offset; returns total and truncated. Distinct from public notable People at /people. Advertised name get_people is stable; tools/call also accepts get_contacts / list_contacts. Requires OAuth or a supported scoped credential. ($0.10; API key required)
    update_personMUTATES Dayze Contacts. Patch one existing contact the user owns (person_id UUID required). Optional fields: name (renames + refreshes slug), is_favorite, tier (vip|normal|low), relationship, notes (replaces stored notes — read first if you need to append), birthday (YYYY|YYYY-MM|YYYY-MM-DD|MM-DD|--MM-DD or null to clear; MM-DD stores month_day precision). Rejects unknown fields. Does not create or delete contacts. Rebuilds life_state so the next get_context_pack inner_circle is fresh. Advertised name update_person is stable; tools/call also accepts update_contact. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    update_notableMUTATES public notable_people. Superuser only. Patch by slug (bio, about, occupation, birth_place, birth_date, net_worth, residence, before_fame, trivia, family_life, zodiac, flag). Rejects unknown fields. No create/delete. Stamps last_updated_via=mcp. ($0.10; API key required)
    log_foodMUTATES the authenticated user Food Diary and calendar. Use when they ate or drank — do not store this as a chat memory. Example: “I had Mee Pok for late lunch with my parents” → log_food({ what: "Mee Pok", kind: "meal", meal_period: "late lunch", with: ["my parents"] }). Optional: place/merchant, amount, consumed_at (ISO). Resolves with/Mum/Dad via person aliases; unknown names do not fail the food write. Tags companions on the mirrored event. Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    update_foodMUTATES one existing Food Diary row the authenticated user owns. Required: food_id (UUID). Optional patch (same fields as log_food): what, kind, place, merchant, notes, append_notes (concat), consumed_at / meal_period (profile TZ civil wall-clock), amount, currency, paid_by / payment_method, with / people_names / person_ids. Example: add hot tea onto an existing Salmon Bento → update_food({ food_id, what: "Salmon Bento + hot tea" }). Unknown or other-user food_id returns an error and does not create a row. Syncs the mirrored calendar event and rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    delete_foodMUTATES by removing one Food Diary row the authenticated user owns and its mirrored calendar event. Required: food_id (UUID). Prefer this over delete_event for meals logged via log_food. Unknown or other-user food_id returns an error. Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    log_eventMUTATES the authenticated user calendar. Use for non-food days — funeral, cremation, appointment, dinner, anything that is not a food log. Do not store this as a chat memory. Example (funeral tonight): log_event({ title: "Funeral service — Mr Goh Choo Taw", date: "2026-08-29", time: "8pm", location: "Multi Purpose Hall, Blk 661 Jurong West St 64", category: "funeral" }). Example (Sunday cremation): log_event({ title: "Cremation — Mr Goh Choo Taw", date: "2026-08-30", location: "Mandai Crematorium", category: "funeral" }). Required: title + event_date (YYYY-MM-DD, YYYY-MM, or YYYY; alias date). Soft dates expand to first-of-period and set metadata.date_precision (day|month|year|approx). Optional: event_time (8pm or 20:00; alias time), end_date, end_time, location / city+country, description, category, external_url, visibility (private|friends|public), image_url, timezone, date_precision, share_with (Dayze handles e.g. ["boof"]), people / with / person_ids, idempotency_key (recommended; retries reuse the first write). For trips/residences prefer log_travel({ city, country, start_date, kind }). Unknown people names do not fail the write. Public events return share_url (/e/{id}) for Explore + social. Inserts public.events, optional event_people / shared_events, then rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    update_eventMUTATES one existing calendar event the authenticated user owns. Required: event_id (UUID). Optional patch (same fields as log_event): title, date / event_date, time / event_time, end_date, end_time, location, description, category, external_url, people / with / person_ids. Unknown or other-user event_id returns an error and does not create a row. For food-diary meals, prefer update_food (it syncs the mirrored event). Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    delete_eventReversibly archives one owned event. Required event_id and request_id. Returns the prior row in deleted for compatibility, changed, restore_id and life_state_rebuilt. All food, people and asset links are preserved. Restore with restore_event. Replays perform no additional action. ($0.10; API key required)
    log_favorite_songMUTATES the authenticated user favorite tracks list at /music. Use when they favorite or save a song — do not store this as a chat memory or in music_preferences. Example: “Henry Mancini - Piano And Strings (1995 Remastered)” → log_favorite_song({ track: "Henry Mancini - Piano And Strings (1995 Remastered)" }) or title + artist. Optional year_note, source_url. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    get_memoriesAuthenticated user memories from Dayze Agent. Pass query for semantic/keyword retrieval. Prefer search for event-first trip and calendar titles. Requires OAuth or a supported scoped credential. ($0.10; API key required)
    get_expensesAuthenticated user cashflow summary: spend, income, net, and top spend categories. Requires OAuth or a supported scoped credential. ($0.10; API key required)
    resolve_personResolve a nickname or surface name to a Dayze Contacts row via person_aliases → exact name → slug → unique substring. Returns avatar_url, photo_count, has_photos, and photos[{url,is_primary}] preview; use get_person_photos for full gallery. Notes omitted unless include_notes=true (redacted). Prefer this before money or relationship tools when the agent only has a nickname. Advertised name resolve_person is stable; tools/call also accepts resolve_contact. ($0.05; API key required)
    get_person_aliasesList canonical aliases (nicknames) for a CRM person. Pass person_id or name (resolved via aliases). Requires OAuth or a supported scoped credential. ($0.05; API key required)
    get_person_transactionsMe↔contact money ledger from expenses (paid_to_person_id / income_from_person_id). Pass person_id or name. Returns entries + per-currency totals. Reuses existing expenses — no parallel ledger table. ($0.10; API key required)
    get_money_between_peopleSame as get_person_transactions: authenticated user ↔ one contact via expenses FKs. Prefer get_person_transactions; this alias exists for agent discoverability. ($0.10; API key required)
    get_person_interactionsRelationship timeline for one CRM person: interactions rows (message/call/meeting/note + extended kinds like visit/gift/stayed_over encoded in summary) plus co-tagged calendar events. Prefer this over dumping people.notes for “when did I last see X?”. Pass person_id or name. ($0.10; API key required)
    explain_factReturn evidence/provenance for a claim: polaris_learned_facts, life_events / life_event_relationships when present, then memories. Use when the agent must cite why it believes something — do not invent sources. ($0.10; API key required)
    list_clarificationsRanked clarification queue: only person-typed mentions + duplicate CRM people. Non-person junk (places, orgs, media, command fragments) is auto-dismissed. Existing contacts auto-link. ($0.05; API key required)
    get_trackersAuthenticated user live trackers only; expired countdowns and inactive streaks are omitted. Sobriety/streak trackers remain visible at day 0 after a reset. Merges event-backed trackers with the trackers table when present. Requires OAuth or a supported scoped credential. ($0.10; API key required)
    reset_trackerMUTATES a sobriety/streak tracker for the authenticated user (sets current value to 0 and restarts the clock). Prefer tracker_id from get_trackers, or tracker_title fuzzy match. Optional reset_at (ISO) and note. Rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)
    searchSearch the authenticated user life graph. Deterministic routing first: food + relative dates (e.g. "what did I eat yesterday?"); timeline/current-context; money+person; who-is → resolve_person. Otherwise semantic/keyword search. Event hits include event_date and food_id when mirrored from Food Diary. Browser-history titles are excluded. Credential/secret spans are redacted. Requires OAuth or a supported scoped credential. ($0.15; API key required)
    search_gmailSearch one of the authenticated user's connected Gmail inboxes (read-only). Reuses Integrations hub Gmail (service_connections provider=gmail). Optional account/email selects a mailbox when multiple are connected — call list_gmail_accounts first. Prefer Gmail operators: from:, subject:, is:unread, newer_than:7d, has:attachment. Returns id, subject, from, date, snippet only (no body). Follow up with read_gmail_message. Cannot send, archive, or delete. Never invent email contents. If Gmail is not connected, connect at /integrations. Requires API key or OAuth with scope context. Share tokens cannot call this tool. ($0.10; API key required)
    list_gmail_accountsList connected Gmail mailboxes for the authenticated user (id, email, is_default). Use account on search_gmail / read_gmail_* / import_*_gmail to pick a mailbox. Connect another inbox at /integrations (multi-mailbox after migration). Share tokens cannot call. ($0.05; API key required)
    read_gmail_messageRead one Gmail message by id from search_gmail. Returns subject, from, date, snippet, plain-text body (truncated), and attachments[] metadata (attachment_id, filename, mime_type, size). Use read_gmail_attachment for text/csv/vcf contents. Optional account when multiple mailboxes. Read-only. Share tokens cannot call. ($0.10; API key required)
    read_gmail_attachmentDownload one Gmail attachment by message_id + attachment_id (from read_gmail_message.attachments). Returns utf-8 text for text/csv/vcf/vcard; binary types return filename/mime/size + a note (no base64 dump). Optional account. Read-only. Share tokens cannot call. ($0.10; API key required)
    log_sleepSleep: log overnight or nap. Cross-midnight OK (e.g. 14:00→03:00 = 13h / 780m). ($0.10; API key required)
    get_sleepSleep: list typed sleep/nap records with duration_minutes. ($0.05; API key required)
    get_sleep_summarySleep: day/week/month totals and averages. ($0.05; API key required)
    update_sleepSleep: patch an existing sleep record by sleep_id. ($0.10; API key required)
    resolve_placeCanonicalize a venue name via place aliases and fuzzy match. ($0.10; API key required)
    get_placesKnown venues: visit-graph `places` plus saved place cards (`saved_places` from business_contacts) with address, opening_hours, and affordability ($/$$/$$$). ($0.10; API key required)
    get_placeFetch one saved place card (business_contacts) by place_id — address, opening hours, affordability, notes. ($0.05; API key required)
    create_placeSave a venue card (business_contacts): address, opening_hours, affordability ($/$$/$$$), notes, tags. Idempotent by name or idempotency_key — does not create calendar notes. ($0.10; API key required)
    update_placePatch a saved place card by place_id / business_contact_id. Unspecified fields stay unchanged (hours, affordability, address, notes, …). ($0.10; API key required)
    enrich_place_from_googleOptional Google Places fill for a saved place card (hours/address/phone/website). Defaults to fill_empty_only — does not overwrite agent-supplied fields. ($0.15; API key required)
    get_place_visitsWhen was I at a venue — merges place_visits, location_visits, and event locations. ($0.10; API key required)
    get_location_historyNormalized visit history (venue-level by default). Merges GPS location_visits + place_visits (MCP/Uber digs). ($0.10; API key required)
    log_place_visitMUTATES place_visits for map/history digs (Uber dropoff, address evidence). Required: place (or place_id) + arrived_at/date. Optional: departed_at, source (uber|mcp|…), evidence_expense_id (idempotent), city/country/address. Prefer this over stuffing streets only into expenses. ($0.10; API key required)
    get_location_contextLikely current or at-time place with confidence and provenance. ($0.10; API key required)
    get_current_statesPermitted assertion states for a person (flagged life-graph; off by default). ($0.10; API key required)
    propose_life_updatePropose assertion create/correct without committing (flagged; off by default). ($0.10; API key required)
    commit_life_updateOwner approve+commit via payload_hash + owner_session_id (flagged; off by default). ($0.10; API key required)
    update_current_locationMUTATES where the user is now: profiles.location + polaris current_city/country (same as in-app Dayze chat). Pass location ("The Madeira, Singapore") and/or city+country; optional place/venue + lat/lon records a fresh location_visits check-in so get_location_context returns is_current. set_home defaults true; check_in defaults true when place or coordinates are set. Does not invent GPS when omitted. ($0.10; API key required)
    get_tripsUser trips with status filter (planned/completed/etc.). Residences also appear here with metadata.kind=residence — prefer get_residences for home history. ($0.10; API key required)
    get_residencesHome / residence history separate from trips: trips with metadata.kind=residence (from log_travel) plus optional life_eras. Use for Boylston / Madeira / current home cards. ($0.10; API key required)
    get_tripSingle trip with linked places and people. ($0.10; API key required)
    get_travel_historyCompleted/confirmed travel only. ($0.10; API key required)
    get_countries_visitedCanonical countries from completed trips (not other people travel). ($0.10; API key required)
    get_cities_visitedCanonical cities from confirmed/completed trips only (excludes soft pins / status=possible). Inference requires category=travel + structured location — not todo titles. ($0.10; API key required)
    log_travelMUTATES trips (+ optional calendar travel event). Prefer this over free-text log_event for map/history. Required: city + start_date. Optional: country, end_date, kind (trip|residence|soft_pin), confidence (confirmed|likely|possible), evidence, title, mirror_event. Soft pins default to status=possible and stay off cities/map until confidence=confirmed. Zelle/Venmo money belongs in log_transaction — not here. ($0.10; API key required)
    create_personAdd a Dayze Contacts record; checks duplicates first. Advertised name create_person is stable; tools/call also accepts create_contact. ($0.10; API key required)
    merge_peopleApply a reviewed durable preview atomically; undo_contact_change accepts restore_id for 30 days if unchanged. Fold duplicate CRM contact(s) into primary_person_id (same human, spelling variants). Prefer score_people_duplicates first. Not for “X knows Y” — use link_people for relationships. ($0.10; API key required)
    score_people_duplicatesScore likely CRM duplicate pairs before merge_people. ($0.05; API key required)
    link_peopleNON-DESTRUCTIVE: create/update a person_connections edge between two distinct people (friends/family/knows/…). Both contacts remain. Do not use for duplicate cleanup — use merge_people. ($0.10; API key required)
    get_person_connectionsList graph edges for one CRM person. ($0.05; API key required)
    unlink_peopleRemove a person↔person graph edge. ($0.10; API key required)
    set_primary_person_nameRename a CRM contact’s canonical name and refresh slug. By default preserves the old name as a former_name alias. Prefer this over create+merge for spelling fixes. Dayze is the context layer — bounded mutation only. ($0.10; API key required)
    update_person_identityPatch identity fields (legal/preferred name, pronouns, social handles, user_relationships[]). Never infer sensitive identity from appearance. Confirmed user_relationships are preserved unless force=true. ($0.10; API key required)
    add_person_aliasAdd a nickname/payment handle/misspelling alias for one CRM person. ($0.05; API key required)
    remove_person_aliasRemove one alias from a CRM person. ($0.05; API key required)
    update_person_aliasUpdate alias_kind/source/display for an existing alias. ($0.05; API key required)
    audit_peopleCONTEXT LAYER: server-side contact hygiene. Returns compact candidate clusters only (duplicates, entity-type hints, normalization, payment-handle collisions). Do NOT use get_people bulk dumps for cleanup. ($0.10; API key required)
    merge_people_previewSave a durable restore snapshot without modifying contacts before merge_people. Returns resulting name/aliases, preserved counts, field conflicts, safe_to_merge. ($0.05; API key required)
    undo_contact_changeReverse a reversible contact_mutations row (rename, alias, identity, classify, link). For merges, pass restore_id as change_id within 30 days. Restore rejects later edits rather than overwriting them. ($0.10; API key required)
    update_people_linkPatch an existing person↔person graph edge (type/context/source/confidence). ($0.10; API key required)
    get_people_linksAlias of get_person_connections — list graph edges for one CRM person. ($0.05; API key required)
    classify_contactSet entity_type (person/company/merchant/…) on a CRM row without losing transactions or links. ($0.10; API key required)
    convert_contact_entityConvert a contact’s entity_type (same as classify_contact). Preserves FKs. ($0.10; API key required)
    find_identity_candidatesCompact identity resolution candidates by person_id or query (alias/name/payment signals). Prefer over bulk get_people. ($0.05; API key required)
    normalize_people_previewPreview whitespace/phone/handle normalization changes (no title-case of stylized names). ($0.05; API key required)
    normalize_people_applyApply a normalize_people_preview by preview_id. ($0.10; API key required)
    start_people_cleanupServer-side read-only cleanup audit. Returns a review queue; never automatically merges contacts. Use normalize_people_preview/apply for reversible normalization. ($0.15; API key required)
    get_people_cleanup_resultFetch start_people_cleanup result by cleanup_id. ($0.05; API key required)
    dismiss_clarificationDismiss a pending entity clarification (not_person, etc.). ($0.05; API key required)
    resolve_clarificationLink a clarification surface to an existing person. ($0.10; API key required)
    bulk_dismiss_clarificationsDismiss non-person / typed junk from the clarification queue. ($0.05; API key required)
    link_entitiesLink Trip→Stay→Place / Event→Person (graph, not prose). ($0.10; API key required)
    get_entity_linksList graph edges for an event, trip, place, or person. ($0.05; API key required)
    add_inventory_itemAdd an owned object to Life Inventory. ($0.10; API key required)
    get_inventoryBrowse owned inventory with filters. ($0.10; API key required)
    get_inventory_itemFull item with valuations, people links, assets. ($0.10; API key required)
    update_inventory_itemPATCH semantics — unspecified fields untouched. ($0.10; API key required)
    archive_inventory_itemArchive instead of destructive delete. ($0.10; API key required)
    search_inventorySearch owned inventory by name/brand/model/notes. Returns photo_count, has_photos, cover_url; when empty, photo_hint explains upload_asset linkage. ($0.10; API key required)
    add_inventory_valuationAppend immutable valuation observation. ($0.10; API key required)
    get_inventory_valuationsChronological valuation history for an item. ($0.10; API key required)
    link_inventory_personProvenance link e.g. inherited_from, gifted_by. ($0.10; API key required)
    upload_assetUpload image bytes to Dayze storage (WebP re-encode strips EXIF/AI metadata). Returns asset_id. For inventory item photos: pass entity_type=inventory, entity_id=inventory_id, role=photo, image_base64 from chat images. Or upload then attach_asset. ($0.15; API key required)
    get_assetFetch one asset by asset_id with signed_url for download/processing. ($0.05; API key required)
    update_assetPatch role, metadata, description, or parent_asset_id (e.g. mark as processed). ($0.08; API key required)
    archive_assetSoft-delete an asset (sets archived_at). Original rows are preserved for versioning. ($0.05; API key required)
    upload_photoUpload a photo to a Life Graph entity. Accepts image_base64 or url (one required). Re-encodes via WebP (strips EXIF/AI metadata). Person uploads also write the CRM gallery (person_photos) and avatar when set_as_avatar=true. ($0.15; API key required)
    attach_assetLink an existing asset_id to another entity by creating a linked copy (does not move the original row). Roles: original | processed | thumbnail | cover | document | receipt | certificate | other. Legacy: pass url instead of asset_id. ($0.10; API key required)
    get_entity_assetsList assets linked to an entity (role, signed_url, versions). entity_type inventory_item → inventory. ($0.10; API key required)
    log_expenseCreate an outgoing expense only. For money received (Venmo/Cash App/PayPal/Zelle) use log_transaction with direction=from and type=income. ($0.10; API key required)
    log_transactionIncome/expense/transfer write. direction=from + type=income for Venmo/Stripe/refunds received. Positive amount; external_id dedupes imports. Optional project/tags. Zelle always USD. Optional mirror_event creates a calendar Money · annotation (ledger is still the source of truth for /money). ($0.10; API key required)
    import_venmo_gmailSearch connected Gmail for Venmo receipts and write log_transaction rows with external_id=venmo-gmail-{gmail_id} (idempotent). Optional dry_run, max_results, query, mirror_event, account. Prefer this over calendar-only Money · digs. ($0.15; API key required)
    import_uber_gmailSearch connected Gmail for Uber trip receipts and write log_place_visit rows with sources gmail:uber-{gmail_id} (idempotent). Optional dry_run, max_results, query, account. ($0.15; API key required)
    log_incomeRecord money received (Stripe, refunds, payroll, Venmo). Alias of log_transaction with type=income and direction=from. Use external_id for Stripe/Gmail idempotency. ($0.10; API key required)
    update_expensePATCH an expense row. ($0.10; API key required)
    record_purchaseAtomic expense + optional inventory item creation. ($0.10; API key required)
    record_saleMark inventory sold + record sale proceeds with gain/loss. ($0.10; API key required)
    get_transactionsList expense/income/transfer rows (includes tags, payment_method). Filter with tag=project:… or project=… ($0.10; API key required)
    search_transactionsKeyword search over merchant/description/category, or exact tag query (project:/ext:/rail:). ($0.10; API key required)
    search_photosSearch person photos and entity assets by query/metadata. Returns inline MCP image attachments. ($0.10; API key required)
    get_photoSingle photo metadata + secure URL. Returns inline MCP image attachment when available. ($0.10; API key required)
    get_photos_for_eventAssets linked to an event. ($0.10; API key required)
    get_person_photosGallery image URLs for a CRM contact. Returns photos[{ id, url, is_primary, created_at }] plus inline MCP image attachments for chat render. Accepts person_id. ($0.10; API key required)
    get_photos_for_placeAssets linked to a canonical place. ($0.10; API key required)
    cleanup_previewRead-only account audit and durable archive plan for events, expenses or trips. Returns source hashes, linked records, field differences, rollback payloads and a review queue. Review the exact candidate set before cleanup_apply. Preview expires after 30 minutes. ($0; API key required)
    cleanup_applyAtomically archive the exact reviewed preview. Requires preview_id, candidate_hash and request_id. Refuses changed sources. Returns per-row statuses and restore_id; replay performs no additional actions. ($0; API key required)
    archive_eventReversibly archive one owned event; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)
    archive_expenseReversibly archive one owned expense; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)
    archive_tripReversibly archive one owned trip; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)
    restore_eventRestore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)
    restore_expenseRestore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)
    restore_tripRestore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)
    restore_cleanupRestore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)