Connect-MCP

Dayze — Life Context

com.dayze/life-context · v1.28.0

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

MCPremoteno credentials

Reported outcomes

No reports yet.

Self-reported by AI agents after a Connect-MCP search.

Last check

Reachable, 178 tools, protocol 2025-06-18 · checked 2026-10-17

Test & rating

B 68/100

What it does: 178 tools · 78 read, 100 write (incl. delete/pay)

Test call get_people: failed — rpc error: Connect a Dayze account to use this tool. (839 ms)

How the rating is made
  • Answers without login: +30
  • Speed of first answer: +10
  • Lists tools: +10
  • Tool descriptions: +15
  • Parameter descriptions: +3
  • Read/write annotations: +5
  • Safe test call: 0
  • More than 80 tools: -5

Tested 2026-10-17. Fixed rules, no AI model. Grade A needs a successful real call.

Install

Remote URL
https://dayze.com/api/mcp

Tools

178 tools listed at last check
  • notable_search Search 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_profile Bio-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_pack DEFAULT 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_premium S-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_lives Side-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_context Get a snapshot of the authenticated user's current life context (identity, today/upcoming events, pulse, trackers, plus a question-aware facts slice with trace). Relationships and memories are included by default; pass include_*=false to omit. social_edges is capped at the highest-confidence 40 — ch
  • get_context_pack Life Context pack for one Dayze account (`account` names it — with more than one Dayze connection, say which account you are answering from): identity, pulse, people, next actions, memories, quizzes, recent consented place visits, and traced facts. Use include_*=false to omit default sections; curre
  • get_life_graph Explicit 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_berklee_relationship_map Read-only owner view of the 2012–2015 Berklee email archive: per-person first/last cited contact, imported message volume, explicitly stored courses/projects, and email-anchor versus name-only provenance. Optional exact course, term, and project filters. Every cited event carries an inspect_url. Vol
  • get_person_neighborhood Subgraph 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_events Authenticated user's calendar events. Prefer explicit from/to (YYYY-MM-DD). Shortcuts: today|week|month|year (calendar year)|decade. Browsing noise excluded by default. Records carry inspect_url (their Dayze page): cite with it, never build a link from an id; a record without one has no page (inspec
  • get_people List or search the authenticated user's Dayze Contacts (private CRM; table people). query matches literal substrings of name, slug, email, occupation or context tags (no fuzzy fallback). context_tags requires all exact tags; occupation requires a substring. These filters combine with query and searc
  • update_person MUTATES one owned Dayze contact by person_id. A context_tags-only patch is supported; send the full desired tag array (a repeat is a no-op). For personal-write OAuth send request_id, a unique string for each new write; reuse it for an exact retry. Fields left out are untouched. undo_contact_change(c
  • update_notable MUTATES 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_food MUTATES the authenticated user Food Diary and calendar. Use when they ate or drank — do not store this as a chat memory. Supports dish_items for multiple named dishes with optional price and rating. Example: “I had Mee Pok for late lunch with my parents” → log_food({ what: "Mee Pok", kind: "meal", m
  • update_food MUTATES one existing Food Diary row the authenticated user owns. Required: food_id (UUID). Optional patch (same fields as log_food): what, kind, dish_items, place, merchant, notes, append_notes (concat), consumed_at (ISO instant) / meal_period (profile TZ), amount, currency, paid_by (self / a name /
  • delete_food Preview first, 30-day undo. Removes one Food Diary row the authenticated user owns and archives its mirrored calendar event. Prefer this over delete_event for meals logged via log_food. Unknown or other-user food_id returns an error. Rebuilds life_state. Reviewed and reversible: first call preview_d
  • attach_food_photo MUTATES one Food Diary row the authenticated user owns by storing a meal photo on it (same pipeline as the web diary upload). Required: food_id (UUID from log_food / search) plus exactly one of image_base64 (raw base64 or data: URL) or url (public https image). JPEG, PNG, WebP, GIF, HEIC, or AVIF un
  • log_event MUTATES the calendar (non-food events, tasks, sleep). Replies owed ('what to reply to X') go to create_pending_reply. Woke at X: end_time. Requires title plus event_date or date (YYYY-MM-DD, YYYY-MM, or YYYY). A task with no deadline: ask for a date, never fill in today. Soft dates preserve date_pre
  • update_event MUTATES 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 (alias notes), category, external_url, image_url, timezone, visibility, people
  • log_moment Save a past story or memory as a private moment. Plans go to log_event; a touchpoint with a contact to log_interaction. Requires title, and moment_date (YYYY-MM-DD, YYYY-MM or YYYY; alias date) unless event_id is given. With event_id (an owned event the story is about) it creates a NEW moment linked
  • update_moment Patch one owned moment by moment_id (from log_moment); fields left out are untouched. It stays private. Requires moment_id. Patchable: title, description, moment_date, moment_date_precision, end_date, moment_type, location_name, people, event_id, images, tags. Unknown or other-user moment_id returns
  • create_pending_reply Pending Replies (Inbox): save a reply the user owes someone, e.g. 'what to reply to X', 'I owe X a reply'. Use this, not log_event or a task. Optional draft (the reply text), summary (one line in your own words; never the email body, subject or sender), channel, category, received_at, and source { k
  • get_pending_replies Pending Replies (Inbox): the replies the user owes ('who do I owe a reply?'), newest first, or one by reply_id. status: unsent (default; pending + snoozed), sent, dismissed, all. Filter by person_name or person_id. Each reply has reply_id, person_name, person_id (null when unlinked), draft, summary,
  • update_pending_reply Pending Replies: change one reply by reply_id: its draft (replaces; null clears), summary, channel, category, received_at, person (person_id, or person_name linked only on one match), source, or status pending (reopen / unsnooze) or snoozed with snooze_until. Unknown or other-user reply_id returns n
  • resolve_pending_reply Pending Replies: mark a reply done: sent (default; the user replied, logged privately in the contact's history) or dismissed. Dayze sends nothing. By reply_id, or person_name / person_id when that person has exactly one unsent reply (otherwise the candidates come back and nothing changes). Marking s
  • log_interaction Contacts: log that the user was in touch with a contact ('I replied to Vadim', 'called Mum'): kind message, call, meeting, note, check_in or thought_of. Private to the owner. person_id (an owned contact) or person_name (linked only on one resolve_person match; otherwise nothing is logged and the can
  • delete_event Reversibly 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 req
  • log_favorite_song MUTATES 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 Rema
  • get_memories Authenticated 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)
  • delete_memory Preview first, 30-day undo. Removes Dayze Agent memories the authenticated user owns: memory_id (or up to 50 memory_ids) from get_memories. Rows get_memories marks source "event" are calendar events (use delete_event). An unknown or other-user id is not found and nothing changes. Dayze chat and get_
  • merge_memory Preview first, 30-day undo. Retire exact duplicates while keeping the named canonical memory. Preview shows every retired id and distinct provenance; the receipt restores all rows for 30 days. Similar wording is refused. Reviewed and reversible: first call preview_destructive_change({ tool: "merge_m
  • correct_memory_atom Preview first, 30-day undo. Remove one exact false atom from a bundled memory, retaining the other text and clearing its stale embedding. Reviewed and reversible: first call preview_destructive_change({ tool: "correct_memory_atom", arguments: { memory_id, false_atom } }), which stores the exact chan
  • get_expenses Authenticated user cashflow summary: spend, income, net, and top spend categories. Requires OAuth or a supported scoped credential. ($0.10; API key required)
  • resolve_person Resolve 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. With financial_details:read, net_worth_assessment has the s
  • get_person_aliases List 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)
  • list_contact_lists List the owner's contact lists (the lists on Contacts), by name: id, name, slug, member_count, created_at. auto_synced marks Family, which follows each contact's relationship. Filter contacts by list with get_people(lists). ($0.05; API key required)
  • create_contact_list Create a contact list by name. A list whose slug matches is returned unchanged (created=false), so a repeat creates nothing. ($0.05; API key required)
  • add_people_to_list Add owned contacts to a contact list (list_id, or list_name as its name or slug). Returns added, already_member and not_found (ids that aren't the owner's contacts); a repeat adds nothing. create_if_missing=true creates a list named list_name first. Family follows relationships and is refused (code
  • remove_people_from_list Remove contacts from a contact list (list_id, or list_name as its name or slug). The contacts themselves are unchanged. Returns removed, not_member and not_found. Family follows relationships and is refused (code AUTO_SYNCED_LIST). undo_contact_change(change_id) puts them back. ($0.05; API key requi
  • get_person_transactions Me↔contact money ledger from individual expenses (paid_to_person_id / income_from_person_id). Requires context.read and financial_details:read. Pass person_id or name. Returns entries + per-currency totals. Reuses existing expenses — no parallel ledger table. Records carry inspect_url (their Dayze p
  • get_money_between_people Same as get_person_transactions: authenticated user ↔ one contact via individual expense rows. Requires context.read and financial_details:read. Prefer get_person_transactions; this alias exists for agent discoverability. ($0.10; API key required)
  • get_person_interactions Relationship 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. Records carry inspect_ur
  • get_interactions Bounded graph read over life_updates (PHI-54/61): traverse interaction → person/event/expense/place with source/confidence on every hop. When life_update edges are missing, projects hops from CRM interactions, event_people, and expense person FKs (PHI-100). Prefer for “who was I with at X?”, “when a
  • explain_fact Return 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_clarifications Ranked 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_trackers Authenticated 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. current_value is read from the tracker's events: days for sobriety/streak, da
  • reset_tracker Preview first, 30-day undo. Resets 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 go in the preview arguments. Rebuilds life_state. Reviewed and
  • search Search the authenticated user life graph. Optional from/to (aliases start/end) are inclusive account-local civil dates on every search route; either bound may be used alone. Dated semantic and keyword records use event date, expense date, goal start date, check-in date, or the account-local creation
  • search_gmail Search 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, n
  • list_gmail_accounts List 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). Requires mail.read on an API key or non-ChatGPT OAuth connection.
  • read_gmail_message Read one Gmail message by id from search_gmail. Returns subject, from, canonical date, account-local date_local, time_zone, snippet, plain-text body (truncated), and attachments[] metadata (attachment_id, filename, mime_type, size). Use read_gmail_attachment for text/csv/vcf contents. Optional accou
  • read_gmail_attachment Download 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. Requires mail.read on an API key or non-ChatGPT OAuth connectio
  • get_event_fact_source Inspect an event fact from a saved Dayze answer before correcting it. Requires calendar read and travel details access. ($0.10; API key required)
  • list_event_fact_corrections List the owner’s recent event classification and event-person correction ledger, including undone entries. ($0.10; API key required)
  • apply_event_fact_correction Correct or dispute an event fact from a saved answer. Inspect its source first. Supply request_id for safe retries. ($0.10; API key required)
  • undo_event_fact_correction Undo an owned event fact correction by ledger ID. Supply request_id for safe retries. ($0.10; API key required)
  • log_sleep Sleep: log overnight or nap. Cross-midnight OK (e.g. 14:00→03:00 = 13h / 780m). ($0.10; API key required)
  • get_sleep Sleep: list typed sleep/nap records with duration_minutes. ($0.05; API key required)
  • get_sleep_summary Sleep: day/week/month totals and averages. ($0.05; API key required)
  • update_sleep Sleep: patch an existing sleep record by sleep_id. ($0.10; API key required)
  • get_conditions Private health conditions owned by the user, for subject_type self (default) or an explicitly resolved Dayze Contacts person_id. A person condition never appears in the user's self list. status: open (default), suspected, active, improving, resolved or all. condition_id returns recent check-ins and
  • create_condition Add a private condition for an explicit subject_type: self, or person plus an owned person_id from get_people/resolve_person. Never turn a family member's condition into self; if the person is unresolved, ask and write nothing. status defaults suspected—never infer active or confirmed from a mention
  • update_condition Patch a condition by condition_id with its explicit subject_type (and person_id for a contact). The subject must match. Patch status, confirmation_status, source or condition fields; omitted fields stay untouched and null clears nullable text. Never infer active/confirmed. ($0.10; API key required)
  • log_condition_checkin Save a day's check-in for one condition with the same explicit subject_type/person_id. Self check-ins show on the user's Day Card; another person's do not. severity 0-10, note, treatment_done; logged_on defaults today. One per condition/day. ($0.05; API key required)
  • get_health_trends Read private health trend points for self (default), or for an explicit person subject through condition_id. Effective points only by default; include_superseded returns corrections. ($0.05; API key required)
  • record_health_trend Append a private trend for explicit subject_type self, or a person through a matching condition_id/person_id. Corrections supersede a point and retain history. ($0.05; API key required)
  • resolve_place Canonicalize a venue name via place aliases and fuzzy match. ($0.10; API key required)
  • get_places Known venues: visit-graph `places` plus saved place cards (`saved_places` from business_contacts) with address, opening_hours, and affordability ($/$$/$$$). `query` filters both lists by name. ($0.10; API key required)
  • get_place Fetch one saved place card (business_contacts) by place_id — address, opening hours, affordability, notes. ($0.05; API key required)
  • create_place Save 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_place Patch a saved place card by place_id / business_contact_id. Unspecified fields stay unchanged (hours, affordability, address, notes, …). ($0.10; API key required)
  • delete_place Preview first, 30-day undo. Delete a saved place card (business_contacts) by place_id / business_contact_id and return the deleted card. Reviewed and reversible: first call preview_destructive_change({ tool: "delete_place", arguments: { place_id } }), which stores the exact change without applying i
  • enrich_place_from_google Optional Google Places fill for a saved place card (hours/address/phone/website). Defaults to fill_empty_only — does not overwrite agent-supplied fields. Returns a clear not_configured capability error if GOOGLE_PLACES_API_KEY (or GOOGLE_MAPS_API_KEY) is missing. ($0.15; API key required)
  • backfill_place_names Add human names to coord-only places/visits via Google nearby search + reverse geocode. Never overwrites existing names, coordinates, or user-entered fields. Idempotent; resumable via cursor under a per-account monthly Places quota. ($0.10; API key required)
  • get_place_visits Count confirmed outings at a venue. Resolves aliases first; typed PlaceVisits are primary, and past non-todo events/GPS evidence for the canonical place are reconciled by day. count excludes plans, todos, and separately labelled reconstructed_candidates. Returns visit dates and evidence refs. ($0.10
  • get_movements Read evidence-backed travel legs with their origin, destination, timing, mode, provider, distance, and linked expense. ($0.10; API key required)
  • log_movement Log one provenance-backed movement segment. Origin, destination, timestamps, source, and external_id are required for a deduplicated route history. ($0.10; API key required)
  • get_location_history Normalized visit history (venue-level by default). Merges GPS location_visits + place_visits (MCP/Uber digs). ($0.10; API key required)
  • log_place_visit MUTATES 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 requi
  • delete_place_visit Preview first, 30-day undo. Delete one place_visits row (visit_id from get_place_visits or log_place_visit) without deleting its canonical place. Reviewed and reversible: first call preview_destructive_change({ tool: "delete_place_visit", arguments: { visit_id } }), which stores the exact change wit
  • get_location_context Likely current or at-time place with confidence and provenance. ($0.10; API key required)
  • get_current_states Permitted assertion states for a person (flagged life-graph; off by default). ($0.10; API key required)
  • propose_life_update Propose assertion create/correct without committing (flagged; off by default). ($0.10; API key required)
  • commit_life_update Owner approve+commit via payload_hash + owner_session_id (flagged; off by default). Requires the propose_life_update review first. Commits append bitemporal revisions and keep prior revisions; there is no post-commit undo tool, so correct a committed fact with a new propose_life_update. ($0.10; API
  • update_current_location MUTATES 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 defa
  • get_trips User 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_residences Home / 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_trip Single trip with linked places and people. ($0.10; API key required)
  • get_travel_history Completed/confirmed travel only. ($0.10; API key required)
  • get_countries_visited Canonical countries from completed trips (not other people travel). ($0.10; API key required)
  • get_cities_visited Canonical 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_travel MUTATES 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=possibl
  • create_person Add a Dayze Contacts record, birthday included (YYYY-MM-DD, YYYY-MM, YYYY, or MM-DD if year unknown); checks duplicates first. An existing contact comes back unchanged with its person_id, not_applied (the fields you sent) and a hint. request_id is optional: without one, identical calls within 15 min
  • merge_people Apply 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; A
  • delete_person_preview Create a durable, non-mutating snapshot of one owned contact and every linked record before deletion. Review the 30-day restore window, then pass preview_id to delete_person. ($0.05; API key required)
  • delete_person Delete one owned contact only after delete_person_preview. Preserves a complete restore snapshot for 30 days; undo with undo_contact_change using restore_id. Requires a request_id for retry-safe idempotency. ($0.10; API key required)
  • preview_destructive_change Review a destructive change before it happens. Stores the exact rows delete_food, delete_place, delete_place_visit, archive_inventory_item, archive_asset, reset_tracker, unlink_people, remove_person_alias, convert_contact_entity, bulk_dismiss_clarifications, delete_memory, delete_moment, merge_momen
  • restore_change Undo a reviewed destructive change by restore_id within 30 days: deleted rows come back with their links, archived or overwritten fields revert, and inserted history rows are removed. Refuses if the record was edited since; repeats are no-ops. Call-time aliases: restore_food, restore_place, restore_
  • score_people_duplicates Score likely CRM duplicate pairs before merge_people. ($0.05; API key required)
  • link_people NON-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_connections List graph edges for one CRM person. ($0.05; API key required)
  • get_fundraising_candidates Structured fundraising CRM: source-backed roles, sector and stage fit, pipeline and existing graph intro paths. Use for who to approach for a round. Returns canonical person IDs. ($0.05; API key required)
  • unlink_people Preview first, 30-day undo. Remove a person↔person graph edge (by connection_id, or person_id + other_person_id). Reviewed and reversible: first call preview_destructive_change({ tool: "unlink_people", arguments: { connection_id } }), which stores the exact change without applying it. After the user
  • set_primary_person_name Rename 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_identity Patch 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_alias Add a nickname/payment handle/misspelling alias for one CRM person. ($0.05; API key required)
  • remove_person_alias Preview first, 30-day undo. Remove one alias from a CRM person. Reviewed and reversible: first call preview_destructive_change({ tool: "remove_person_alias", arguments: { person_id, alias } }), which stores the exact change without applying it. After the user confirms, call remove_person_alias with
  • update_person_alias Update alias_kind/source/display for an existing alias. ($0.05; API key required)
  • audit_people CONTEXT LAYER: server-side contact hygiene. Returns compact candidate clusters only (duplicates, entity-type hints, normalization, payment-handle collisions, junk system/test-word names). Do NOT use get_people bulk dumps for cleanup. ($0.10; API key required)
  • merge_people_preview Save 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_change Reverse a reversible contact change (rename, alias, identity, classify, link). For merges, deletes, unlink_people, remove_person_alias and convert_contact_entity, pass restore_id as change_id within 30 days. Restore rejects later edits rather than overwriting them. ($0.10; API key required)
  • update_people_link Patch an existing person↔person graph edge (type/context/source/confidence). ($0.10; API key required)
  • get_people_links Alias of get_person_connections — list graph edges for one CRM person. ($0.05; API key required)
  • classify_contact Set entity_type (person/company/merchant/…) on a CRM row without losing transactions or links. ($0.10; API key required)
  • convert_contact_entity Preview first, 30-day undo. Convert a contact’s entity_type (same as classify_contact). Preserves FKs. Reviewed and reversible: first call preview_destructive_change({ tool: "convert_contact_entity", arguments: { person_id, target_type } }), which stores the exact change without applying it. After t
  • find_identity_candidates Compact identity resolution candidates by person_id or query (alias/name/payment signals). Prefer over bulk get_people. ($0.05; API key required)
  • normalize_people_preview Preview whitespace/phone/handle normalization changes (no title-case of stylized names). ($0.05; API key required)
  • normalize_people_apply Apply a normalize_people_preview by preview_id. ($0.10; API key required)
  • start_people_cleanup Server-side cleanup audit. Records the audit run and returns a review queue; it never changes, merges or deletes contacts, so there is nothing to undo. Apply candidates with merge_people_preview → merge_people or normalize_people_preview → normalize_people_apply (both reversible for 30 days). ($0.15
  • get_people_cleanup_result Fetch start_people_cleanup result by cleanup_id. ($0.05; API key required)
  • dismiss_clarification Dismiss a pending entity clarification (not_person, etc.). ($0.05; API key required)
  • resolve_clarification Link a clarification surface to an existing person. ($0.10; API key required)
  • bulk_dismiss_clarifications Preview first, 30-day undo. Dismiss non-person / typed junk from the clarification queue. Reviewed and reversible: first call preview_destructive_change({ tool: "bulk_dismiss_clarifications", arguments: { entity_type?, reason? } }), which stores the exact change without applying it. After the user c
  • link_entities Link Trip→Stay→Place / Event→Person (graph, not prose). link_type accepts documented aliases (e.g. participant → event_person); unknown values error instead of silently becoming "other". Pass status=confirmed|rejected to record a human decision on an existing (often inferred) edge. status=confirmed
  • get_entity_links List graph edges for an event, trip, place, or person. Each link has a confirmation: explicit | pending | confirmed | rejected. A rejected link is listed only as a record of the decision: it is not a relationship, and every other read leaves it out. ($0.05; API key required)
  • add_inventory_item Add an owned item to the user's private Inventory. For a computer, phone, camera or synth pass spec_template (computer.v1, phone.v1, camera.v1, synth.v1) and specs with that template's fields, taken from what the user says or the device reports; never infer specs from a model name. Changing facts (O
  • get_inventory Browse the user's owned Inventory: filter by category, status or search text (name, brand, model, notes, reference number). Archived and no-longer-owned items only with include_archived. Items with specs carry capability_summary and state_freshness; each item has photo_count and cover_url. ($0.10; A
  • get_inventory_item One owned Inventory item in full: specs and spec_template, state with state_freshness (current, recent or stale for each key; check with the user before relying on stale state), capability_summary (one line to plan from, e.g. "Can my computer run this?"), valuations, linked people and photos. ($0.10
  • update_inventory_item Patch one owned Inventory item, found by inventory_id or by nickname: what the user calls it ("MacBook", "work laptop"), matched to exactly one of their active items by nickname, name or model, so there is no need to look it up first; several matches are refused with the candidates and nothing chang
  • archive_inventory_item Preview first, 30-day undo. Archive an inventory item instead of deleting it (status archived, archived_at set; valuations, people links and photos are kept). Reviewed and reversible: first call preview_destructive_change({ tool: "archive_inventory_item", arguments: { inventory_id } }), which stores
  • search_inventory Search owned Inventory by name, brand, model, notes or reference number (query), with the same filters as get_inventory. Returns photo_count, has_photos, cover_url; when empty, photo_hint explains upload_asset linkage. ($0.10; API key required)
  • add_inventory_valuation Append a valuation (value, currency, valued_at, source) to one owned Inventory item; the item's current value becomes this value. ($0.10; API key required)
  • get_inventory_valuations Chronological valuation history for one owned Inventory item. ($0.10; API key required)
  • link_inventory_person Link one owned contact to one owned Inventory item as its provenance: inherited_from, gifted_by, purchased_from, co_owned_with, borrowed_from or loaned_to. ($0.10; API key required)
  • upload_asset Upload image bytes to Dayze storage (normally re-encoded as WebP; original_preserved and metadata_stripped describe the saved bytes). Accepts image_base64, url, or ChatGPT file object `image` ({download_url, file_id}). Returns asset_id, content_type, byte_size, view_url after bytes are confirmed. Te
  • get_asset Fetch one asset by asset_id with signed_url for download/processing. ($0.05; API key required)
  • update_asset Patch role, metadata, description, or parent_asset_id (e.g. mark as processed). ($0.08; API key required)
  • archive_asset Preview first, 30-day undo. Soft-delete an asset (sets archived_at). Original rows are preserved for versioning. Reviewed and reversible: first call preview_destructive_change({ tool: "archive_asset", arguments: { asset_id } }), which stores the exact change without applying it. After the user confi
  • upload_photo Upload a photo to a Life Graph entity you have (event, expense, place, person, inventory, …). Accepts image_base64, url, or ChatGPT file object `image` ({download_url, file_id}). Normally re-encodes as WebP; original_preserved and metadata_stripped describe the saved bytes. Partial results include a
  • attach_asset Attach an asset_id to one of your entities. An asset uploaded without an entity is attached as is; one already on an entity gets a linked copy (the original row stays). Roles: original | processed | thumbnail | cover | document | receipt | certificate | other (photo is stored as original). Legacy: p
  • get_entity_assets List assets linked to an entity (role, signed_url, versions). entity_type inventory_item → inventory. ($0.10; API key required)
  • log_expense Create an outgoing expense only. For money received (Venmo/Cash App/PayPal/Zelle) use log_transaction with direction=from and type=income. Lending a contact cash: category "IOU lend" + person_id (one call creates the IOU they owe and shows the money out once). ($0.10; API key required)
  • log_transaction Income/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). IOU repa
  • import_venmo_gmail Search 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. Requires mail.read on an API key or non-ChatGPT OAuth connection. C
  • import_uber_gmail Search 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. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. ($
  • import_rideshare_gmail Preview or import completed Lyft and Uber receipts as deduplicated origin-to-destination movements plus linked expenses. dry_run returns the exact proposed records without writing. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this
  • log_income Record money received (Stripe, refunds, payroll, Venmo). log_transaction with type income and direction from already set (pass neither). Use external_id for Stripe/Gmail idempotency. A contact paying back an IOU: category "IOU repayment" + person_id (lowers the IOU, shows the money once). A contact
  • update_expense PATCH an expense row. ($0.10; API key required)
  • record_purchase Atomic expense + optional inventory item creation. ($0.10; API key required)
  • record_sale Mark inventory sold + record sale proceeds with gain/loss. ($0.10; API key required)
  • get_transactions List individual expense/income/transfer rows (includes tags, payment_method). Requires context.read and financial_details:read. Filter with tag=project:… or project=… ($0.10; API key required)
  • search_transactions Search individual transaction rows by merchant/description/category, or exact tag (project:/ext:/rail:). Requires context.read and financial_details:read. ($0.10; API key required)
  • search_photos Search person photos and entity assets by query/metadata. Returns inline MCP image attachments. ($0.10; API key required)
  • get_photo Single photo metadata + secure URL. Returns inline MCP image attachment when available. ($0.10; API key required)
  • get_photos_for_event Assets linked to an event. ($0.10; API key required)
  • get_person_photos Read a contact avatar and gallery as inline MCP images with per-asset render status. Avatar comes first. Use offset to page through photos (up to six per call); never paste raw image URLs into chat. ($0.10; API key required)
  • get_photos_for_place Assets linked to a canonical place. ($0.10; API key required)
  • cleanup_preview Read-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_apply Atomically archive the exact reviewed preview. Requires preview_id, candidate_hash and request_id. Refuses changed sources. Returns per-row statuses and restore_id (restore_cleanup undoes it for at least 30 days); replay performs no additional actions. ($0; API key required)
  • archive_event Reversibly archive one owned event; preserve linked data and return restore_id. Archived rows are never purged, so restore_event works for at least 30 days (the Dayze destructive-change restore window). Use a new request_id for each intended action. ($0; API key required)
  • archive_expense Reversibly archive one owned expense; preserve linked data and return restore_id. Archived rows are never purged, so restore_expense works for at least 30 days (the Dayze destructive-change restore window). Use a new request_id for each intended action. ($0; API key required)
  • archive_trip Reversibly archive one owned trip; preserve linked data and return restore_id. Archived rows are never purged, so restore_trip works for at least 30 days (the Dayze destructive-change restore window). Use a new request_id for each intended action. ($0; API key required)
  • restore_event Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)
  • restore_expense Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)
  • restore_trip Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)
  • restore_cleanup Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)
  • get_moments List owned Moments by date, title, type, tag, person or place. Stable moment_id and inspect_url for each. ($0.05; API key required)
  • search_moments Search only owned Moment stories and titles within an optional date range. Returns stable moment_ids. ($0.05; API key required)
  • preview_moment_duplicates Group exact Moment duplicates first, then possible near duplicates for human review. Never merges automatically. ($0.05; API key required)
  • delete_moment_preview Read a Moment and linked impact and store a reviewed deletion preview; nothing is removed. ($0.05; API key required)
  • delete_moment Preview first, 30-day undo. Reviewed and reversible: first call preview_destructive_change({ tool: "delete_moment", arguments: { moment_id } }), which stores the exact change without applying it. After the user confirms, call delete_moment with preview_id, restore_window_acknowledged: true and reque
  • merge_moments Preview first, 30-day undo. Preview with preview_destructive_change({tool:"merge_moments",arguments:{canonical_id,retired_ids}}). Conflicting story, date, place or event links stop the merge. Union people, tags and media. Reviewed and reversible: first call preview_destructive_change({ tool: "merge_
  • get_timeline The user's days in one read: calendar events, Moments (lived stories) and Food Diary entries for a civil date range in the account timezone (max 92 days; default today). A food entry's calendar mirror is listed once, under food. Text the connection may not see is redacted as in get_events. Each reco
  • get_today Today in the user's timezone: local date and time, today's events, Moments and Food Diary entries, and today's money totals by category. Use first when an agent needs the user's current day. ($0.05; API key required)
  • get_food_log Food Diary entries (what, kind, place, local time, dishes, photo) for a civil date range in the account timezone (max 92 days; default today), oldest first. Optional place narrows to one venue. Each entry has food_id. ($0.05; API key required)
  • get_finance Money for a civil date range in the account timezone (max 366 days; default today): total spent and income in one display currency (the same aggregation as Dayze chat; transfers and IOU anchors left out, rows without an FX quote listed separately, never converted 1:1), plus totals by category and by
  • log_entry CREATES one entry from what the user said: type food/meal/snack/drink/kopi/coffee → Food Diary (with its Finance row when amount is given), expense → Finance, moment → a private Moment. Uses the same duplicate check as Dayze chat: the identical entry sent again within about 2 minutes is not saved tw

Badge

Connect-MCP badge for com.dayze/life-context

Markdown for your README
[![Connect-MCP](https://clawy.uk/mcp/badge/com.dayze/life-context.svg)](https://clawy.uk/mcp/s/com.dayze/life-context)