{"name":"com.dayze/life-context","slug":"dayze-life-context","title":"Dayze — Life Context","description":"Life context for agents: get_context_pack + public notable packs. x402 + OAuth.","url":"https://mcp.market/server/dayze-life-context","rating":null,"grade":"B","score":80,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":23,"stars":0,"forks":1,"downloads_week":null,"last_push_at":"2026-09-18T18:40:58.000Z","license":"MIT"},"uptime":{"percent":100,"checks":9,"ok":9,"last_checked_at":"2026-09-21T13:31:06.978Z","last_ok_at":"2026-09-21T13:31:06.978Z","latency_ms":530},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/gohluke/dayze-mcp","website":"https://dayze.com","version":"1.28.0","remotes":[{"type":"streamable-http","url":"https://dayze.com/api/mcp"},{"type":"streamable-http","url":"https://dayze.com/api/mcp/key"}],"packages":[],"tools":[{"name":"add_inventory_item","description":"Add an owned object to Life Inventory. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["name"],"additionalProperties":true}},{"name":"add_inventory_valuation","description":"Append immutable valuation observation. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"inventory_id":{"type":"string"},"value":{"type":"number"},"currency":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["inventory_id","value"],"additionalProperties":true}},{"name":"add_person_alias","description":"Add a nickname/payment handle/misspelling alias for one CRM person. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"alias":{"type":"string"},"alias_kind":{"type":"string"},"source":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["person_id","alias"],"additionalProperties":false}},{"name":"archive_asset","description":"Soft-delete an asset (sets archived_at). Original rows are preserved for versioning. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"asset_id":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["asset_id"],"additionalProperties":false}},{"name":"archive_event","description":"Reversibly archive one owned event; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string"},"reason":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["event_id","request_id"],"additionalProperties":false}},{"name":"archive_expense","description":"Reversibly archive one owned expense; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"expense_id":{"type":"string"},"reason":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["expense_id","request_id"],"additionalProperties":false}},{"name":"archive_inventory_item","description":"Archive instead of destructive delete. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"inventory_id":{"type":"string"},"reason":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["inventory_id"],"additionalProperties":false}},{"name":"archive_trip","description":"Reversibly archive one owned trip; preserve linked data and return restore_id. Use a new request_id for each intended action. ($0; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"trip_id":{"type":"string"},"reason":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["trip_id","request_id"],"additionalProperties":false}},{"name":"attach_asset","description":"Link 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"asset_id":{"type":"string"},"entity_type":{"type":"string"},"entity_id":{"type":"string"},"role":{"type":"string","enum":["original","processed","thumbnail","cover","document","receipt","certificate","photo","other"],"description":"original | cover | thumbnail | …"},"asset_type":{"type":"string"},"url":{"type":"string"},"metadata":{"type":"object"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["entity_type","entity_id"],"additionalProperties":true}},{"name":"audit_people","description":"CONTEXT 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"checks":{"type":"array","items":{"type":"string"}},"min_confidence":{"type":"number"},"limit":{"type":"number"}},"additionalProperties":false}},{"name":"bulk_dismiss_clarifications","description":"Dismiss non-person / typed junk from the clarification queue. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"reason":{"type":"string"},"entity_type":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"classify_contact","description":"Set entity_type (person/company/merchant/…) on a CRM row without losing transactions or links. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"entity_id":{"type":"string"},"person_id":{"type":"string"},"entity_type":{"type":"string"},"identity_status":{"type":"string"},"confidence":{"type":"number"},"source":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["entity_type"],"additionalProperties":false}},{"name":"cleanup_apply","description":"Atomically 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"preview_id":{"type":"string"},"candidate_hash":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["preview_id","candidate_hash","request_id"],"additionalProperties":false}},{"name":"cleanup_preview","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"family":{"type":"string","enum":["events","expenses","trips"]},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["family"],"additionalProperties":false}},{"name":"commit_life_update","description":"Owner approve+commit via payload_hash + owner_session_id (flagged; off by default). ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"proposal_id":{"type":"string"},"payload_hash":{"type":"string"},"owner_session_id":{"type":"string"},"idempotency_key":{"type":"string"},"request_id":{"type":"string"}},"required":["proposal_id","payload_hash","owner_session_id"],"additionalProperties":false}},{"name":"compare_lives","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug_a":{"type":"string","description":"First person slug"},"slug_b":{"type":"string","description":"Second person slug"},"similar":{"type":"number","default":4},"peers":{"type":"number","default":6},"date":{"type":"string","description":"YYYY-MM-DD target date for both packs"}},"required":["slug_a","slug_b"],"additionalProperties":false}},{"name":"convert_contact_entity","description":"Convert a contact’s entity_type (same as classify_contact). Preserves FKs. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"entity_id":{"type":"string"},"person_id":{"type":"string"},"target_type":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["target_type"],"additionalProperties":false}},{"name":"create_person","description":"Add a Dayze Contacts record; checks duplicates first. Advertised name create_person is stable; tools/call also accepts create_contact. ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string"},"relationship":{"type":"string"},"tier":{"type":"string"},"notes":{"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["name"],"additionalProperties":false}},{"name":"create_place","description":"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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string"},"address":{"type":"string"},"opening_hours":{"type":"string"},"hours":{"type":"string","description":"Alias for opening_hours"},"affordability":{"type":"string","description":"$ | $$ | $$$ (or 1–3)"},"price_level":{"type":"string","description":"Alias for affordability"},"category":{"type":"string","description":"restaurant|cafe|supermarket|shop|hawker|… (aliases mapped to business_contacts.category)"},"area":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"website":{"type":"string"},"phone":{"type":"string"},"phone_numbers":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"hours_source":{"type":"string","description":"agent | google_places | user"},"idempotency_key":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."}},"required":["name"],"additionalProperties":false}},{"name":"delete_event","description":"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 required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","description":"UUID of a calendar event the authenticated user owns"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["event_id","request_id"],"additionalProperties":false}},{"name":"delete_food","description":"MUTATES 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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"food_id":{"type":"string","description":"UUID of a Food Diary row the authenticated user owns"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["food_id"],"additionalProperties":false}},{"name":"dismiss_clarification","description":"Dismiss a pending entity clarification (not_person, etc.). ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clarification_id":{"type":"string"},"reason":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["clarification_id"],"additionalProperties":false}},{"name":"enrich_place_from_google","description":"Optional 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place_id":{"type":"string"},"business_contact_id":{"type":"string"},"fill_empty_only":{"type":"boolean"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"explain_fact","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Fact or phrase to explain"},"fact":{"type":"string","description":"Alias for query"},"limit":{"type":"number","description":"Max evidence rows 1–20, default 8"}},"required":["query"],"additionalProperties":false}},{"name":"find_identity_candidates","description":"Compact identity resolution candidates by person_id or query (alias/name/payment signals). Prefer over bulk get_people. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"query":{"type":"string"},"limit":{"type":"number"}},"additionalProperties":false}},{"name":"get_asset","description":"Fetch one asset by asset_id with signed_url for download/processing. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"asset_id":{"type":"string"},"include_signed_url":{"type":"boolean"}},"required":["asset_id"],"additionalProperties":false}},{"name":"get_cities_visited","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"additionalProperties":false}},{"name":"get_context_pack","description":"Life 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Optional focus query for semantic memories"},"include_location":{"type":"boolean","default":false,"description":"Include city/country label; never returns a precise address"},"include_relationships":{"type":"boolean","default":true,"description":"Include who_matters (inner-circle, relationship health, reach-out). Default true."},"include_money":{"type":"boolean","default":false,"description":"Include the private cashflow summary"},"include_memories":{"type":"boolean","default":true,"description":"Include recent memories (default true). A query always enables focused memories."},"include_quiz_results":{"type":"boolean","default":true,"description":"Include latest quiz results (slug, result_type, result_data). Default true."},"include_places":{"type":"boolean","default":false,"description":"Include recent canonical places (venue-level, no GPS points)"},"include_trips":{"type":"boolean","default":false,"description":"Include recent/upcoming trips from completed travel history"},"focus":{"type":"string","description":"Optional focus hint echoed in the pack (e.g. places, travel, people)"}},"additionalProperties":false}},{"name":"get_countries_visited","description":"Canonical countries from completed trips (not other people travel). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"include_residence":{"type":"boolean"}},"additionalProperties":false}},{"name":"get_current_states","description":"Permitted assertion states for a person (flagged life-graph; off by default). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"people_id":{"type":"string","description":"CRM people.id UUID"},"person_id":{"type":"string","description":"Alias for people_id"},"predicates":{"type":"array","items":{"type":"string"}},"valid_at":{"type":"string"},"known_at":{"type":"string"}},"additionalProperties":false}},{"name":"get_entity_assets","description":"List assets linked to an entity (role, signed_url, versions). entity_type inventory_item → inventory. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"entity_type":{"type":"string"},"entity_id":{"type":"string"},"asset_type":{"type":"string"}},"required":["entity_type","entity_id"],"additionalProperties":false}},{"name":"get_entity_links","description":"List graph edges for an event, trip, place, or person. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"entity_type":{"type":"string"},"entity_id":{"type":"string"}},"required":["entity_type","entity_id"],"additionalProperties":false}},{"name":"get_events","description":"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. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"number","minimum":1,"maximum":500},"cursor":{"type":"string"},"include_archived":{"type":"boolean"},"from":{"type":"string","description":"Inclusive YYYY-MM-DD (preferred over range)"},"to":{"type":"string","description":"Inclusive YYYY-MM-DD"},"range":{"type":"string","enum":["today","week","month","year","decade","all"]},"include_browsing":{"type":"boolean","description":"Include extension \"Browsed domain · Xm\" auto-events (default false)"},"include_calendar_blocks":{"type":"boolean","description":"Include Focus Time / calendar_block rows (default false)"},"kinds":{"type":"array","items":{"type":"string"},"description":"Filter event_kind e.g. [\"life_event\",\"todo\"]"}},"additionalProperties":false}},{"name":"get_expenses","description":"Authenticated user cashflow summary: spend, income, net, and top spend categories. Requires OAuth or a supported scoped credential. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"get_interactions","description":"Bounded graph read over life_updates (PHI-54/61): traverse interaction → person/event/expense/place with source/confidence on every hop. Prefer for “who was I with at X?”, “when am I meeting Y next?”, “how much at Z?”. 93-day default window. Pass person_name, place_query, or ids. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"person_name":{"type":"string"},"place_id":{"type":"string"},"place_query":{"type":"string","description":"Venue/merchant substring"},"expense_id":{"type":"string"},"event_id":{"type":"string"},"from":{"type":"string","description":"Inclusive YYYY-MM-DD"},"to":{"type":"string","description":"Inclusive YYYY-MM-DD"},"limit":{"type":"number","description":"Max 1–50, default 25"}},"additionalProperties":false}},{"name":"get_inventory","description":"Browse owned inventory with filters. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":true}},{"name":"get_inventory_item","description":"Full item with valuations, people links, assets. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"inventory_id":{"type":"string"}},"required":["inventory_id"],"additionalProperties":false}},{"name":"get_inventory_valuations","description":"Chronological valuation history for an item. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"inventory_id":{"type":"string"}},"required":["inventory_id"],"additionalProperties":false}},{"name":"get_life_context","description":"Get 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"include_location":{"type":"boolean","default":false,"description":"Include city/country label; never returns a precise address"},"include_relationships":{"type":"boolean","default":true,"description":"Include inner-circle and relationship summaries (default true; set false to omit)"},"include_memories":{"type":"boolean","default":true,"description":"Include recent memory summaries (default true; set false to omit)"}},"additionalProperties":false}},{"name":"get_life_graph","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"include_event_links":{"type":"boolean","default":false},"event_links_limit":{"type":"number","default":25},"max_people":{"type":"number","default":80},"full":{"type":"boolean","default":false,"description":"Include additional people by last interaction, up to max_people"}},"additionalProperties":false}},{"name":"get_location_context","description":"Likely current or at-time place with confidence and provenance. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"at":{"type":"string","description":"ISO timestamp"}},"additionalProperties":false}},{"name":"get_location_history","description":"Normalized visit history (venue-level by default). Merges GPS location_visits + place_visits (MCP/Uber digs). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"place":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"precision":{"type":"string","enum":["point","venue","neighborhood","city","country"]}},"additionalProperties":false}},{"name":"get_memories","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Semantic focus (optional)"},"limit":{"type":"number","description":"Max rows 1–50, default 20"}},"additionalProperties":false}},{"name":"get_money_between_people","description":"Same 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string","description":"CRM people.id"},"name":{"type":"string","description":"Surface name if person_id unknown"},"from":{"type":"string","description":"Inclusive YYYY-MM-DD filter"},"to":{"type":"string","description":"Inclusive YYYY-MM-DD filter"},"limit":{"type":"number","description":"Max rows 1–200, default 50"}},"additionalProperties":false}},{"name":"get_people","description":"List 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cursor":{"type":"string"},"limit":{"type":"number","description":"Page size (default 100, max 500)"},"offset":{"type":"number","description":"Skip N rows (default 0)"},"include_notes":{"type":"boolean","description":"When true, include notes (server-redacted). Default false."}},"additionalProperties":false}},{"name":"get_people_cleanup_result","description":"Fetch start_people_cleanup result by cleanup_id. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cleanup_id":{"type":"string"}},"required":["cleanup_id"],"additionalProperties":false}},{"name":"get_people_links","description":"Alias of get_person_connections — list graph edges for one CRM person. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"}},"required":["person_id"],"additionalProperties":false}},{"name":"get_person_aliases","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string","description":"CRM people.id"},"name":{"type":"string","description":"Surface name if person_id unknown"}},"additionalProperties":false}},{"name":"get_person_connections","description":"List graph edges for one CRM person. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"}},"required":["person_id"],"additionalProperties":false}},{"name":"get_person_interactions","description":"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. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"name":{"type":"string"},"from":{"type":"string","description":"Inclusive YYYY-MM-DD filter"},"to":{"type":"string","description":"Inclusive YYYY-MM-DD filter"},"kind":{"type":"string","description":"Optional filter: meeting, visit, gift, stayed_over, met, …"},"limit":{"type":"number","description":"Max rows 1–100, default 40"}},"additionalProperties":false}},{"name":"get_person_neighborhood","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string","description":"UUID"},"include_notes":{"type":"boolean","description":"When true, include center.notes (server-redacted). Default false."}},"required":["person_id"],"additionalProperties":false}},{"name":"get_person_photos","description":"Gallery 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"}},"required":["person_id"],"additionalProperties":false}},{"name":"get_person_transactions","description":"Me↔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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string","description":"CRM people.id"},"name":{"type":"string","description":"Surface name if person_id unknown"},"from":{"type":"string","description":"Inclusive YYYY-MM-DD filter"},"to":{"type":"string","description":"Inclusive YYYY-MM-DD filter"},"limit":{"type":"number","description":"Max rows 1–200, default 50"}},"additionalProperties":false}},{"name":"get_photo","description":"Single photo metadata + secure URL. Returns inline MCP image attachment when available. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"photo_id":{"type":"string"}},"required":["photo_id"],"additionalProperties":false}},{"name":"get_photos_for_event","description":"Assets linked to an event. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string"}},"required":["event_id"],"additionalProperties":false}},{"name":"get_photos_for_place","description":"Assets linked to a canonical place. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place_id":{"type":"string"}},"required":["place_id"],"additionalProperties":false}},{"name":"get_place","description":"Fetch one saved place card (business_contacts) by place_id — address, opening hours, affordability, notes. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place_id":{"type":"string"},"business_contact_id":{"type":"string"},"id":{"type":"string"}},"additionalProperties":false}},{"name":"get_place_visits","description":"When was I at a venue — merges place_visits, location_visits, and event locations. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place":{"type":"string"},"place_id":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"person_ids":{"type":"array","items":{"type":"string"}}},"required":["place"],"additionalProperties":false}},{"name":"get_places","description":"Known venues: visit-graph `places` plus saved place cards (`saved_places` from business_contacts) with address, opening_hours, and affordability ($/$$/$$$). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"city":{"type":"string"},"country":{"type":"string"},"area":{"type":"string"},"near":{"type":"string","description":"Filter saved cards by area/tag/notes (e.g. Madeira)."},"tag":{"type":"string"},"affordability":{"type":"string","description":"$ | $$ | $$$"},"limit":{"type":"number"}},"additionalProperties":false}},{"name":"get_residences","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"limit":{"type":"number"},"include_eras":{"type":"boolean","description":"Include life_eras rows (default true)"}},"additionalProperties":false}},{"name":"get_sleep","description":"Sleep: list typed sleep/nap records with duration_minutes. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"limit":{"type":"number"}},"additionalProperties":false}},{"name":"get_sleep_summary","description":"Sleep: day/week/month totals and averages. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"range":{"type":"string","enum":["day","week","month"]}},"additionalProperties":false}},{"name":"get_trackers","description":"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. Requires OAuth or a supported scoped credential. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"get_transactions","description":"List expense/income/transfer rows (includes tags, payment_method). Filter with tag=project:… or project=… ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cursor":{"type":"string","description":"Continue the same immutable one-hour snapshot; other filters remain frozen."},"include_archived":{"type":"boolean"},"from":{"type":"string"},"to":{"type":"string"},"type":{"type":"string"},"tag":{"type":"string","description":"Exact tag, e.g. project:max-soko-poker-venture or rail:zelle"},"project":{"type":"string","description":"Project label or slug → project:{slug}"},"limit":{"type":"number"}},"additionalProperties":true}},{"name":"get_travel_history","description":"Completed/confirmed travel only. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"}},"additionalProperties":false}},{"name":"get_trip","description":"Single trip with linked places and people. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"trip_id":{"type":"string"}},"required":["trip_id"],"additionalProperties":false}},{"name":"get_trips","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cursor":{"type":"string","description":"Continue the same immutable one-hour snapshot; other filters remain frozen."},"include_archived":{"type":"boolean"},"from":{"type":"string"},"to":{"type":"string"},"status":{"type":"string"},"limit":{"type":"number"}},"additionalProperties":false}},{"name":"import_uber_gmail","description":"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. ($0.15; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Override Gmail search (default from:uber.com receipt/trip)"},"max_results":{"type":"number"},"dry_run":{"type":"boolean"},"account":{"type":"string"},"email":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"import_venmo_gmail","description":"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. ($0.15; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Override Gmail search (default from:venmo.com paid/payment)"},"max_results":{"type":"number"},"dry_run":{"type":"boolean"},"mirror_event":{"type":"boolean","description":"Also create Money · calendar annotations"},"account":{"type":"string","description":"Mailbox email or connection id"},"email":{"type":"string","description":"Alias for account"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"link_entities","description":"Link Trip→Stay→Place / Event→Person (graph, not prose). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from_type":{"type":"string"},"from_id":{"type":"string"},"to_type":{"type":"string"},"to_id":{"type":"string"},"link_type":{"type":"string"},"notes":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["from_type","from_id","to_type","to_id"],"additionalProperties":false}},{"name":"link_inventory_person","description":"Provenance link e.g. inherited_from, gifted_by. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"inventory_id":{"type":"string"},"person_id":{"type":"string"},"relationship":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["inventory_id","person_id","relationship"],"additionalProperties":true}},{"name":"link_people","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"other_person_id":{"type":"string"},"relationship_type":{"type":"string"},"notes":{"type":"string"},"source":{"type":"string"},"confidence":{"type":"number"},"direction":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["person_id","other_person_id"],"additionalProperties":false}},{"name":"list_clarifications","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"limit":{"type":"number","description":"Max rows 1–50, default 15"},"kind":{"type":"string","description":"Optional: entity_mention | duplicate_people"},"auto_cleanup":{"type":"boolean","description":"Auto-dismiss non-person / auto-link existing (default true)"}},"additionalProperties":false}},{"name":"list_gmail_accounts","description":"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). Share tokens cannot call. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{},"additionalProperties":false}},{"name":"log_event","description":"MUTATES 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","anyOf":[{"type":"object","properties":{"title":{"type":"string","description":"Event title (required)."},"idempotency_key":{"type":"string","description":"Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes."},"request_id":{"type":"string","description":"Alias for idempotency_key (preferred by some clients)."},"event_time":{"type":"string","description":"Optional start time: 8pm, 20:00, or 20:00:00. Alias: time."},"time":{"type":"string","description":"Alias for event_time."},"end_date":{"type":"string","description":"Optional end date YYYY-MM-DD (all-day multi-day)."},"end_time":{"type":"string","description":"Optional end time (same formats as event_time)."},"location":{"type":"string","description":"Free-text place. Or pass city + country."},"city":{"type":"string","description":"Structured city (composed into location if location omitted)"},"country":{"type":"string","description":"Structured country"},"description":{"type":"string"},"category":{"type":"string","description":"e.g. funeral, family, work, travel. Stored as events.category and event_type."},"external_url":{"type":"string"},"visibility":{"type":"string","enum":["private","friends","public"],"description":"Calendar visibility. public → appears on /explore and gets share_url https://dayze.com/e/{id}. Default private."},"image_url":{"type":"string","description":"Optional cover image URL for Explore + /e share cards."},"timezone":{"type":"string","description":"IANA timezone for wall-clock display (e.g. America/New_York)."},"date_precision":{"type":"string","enum":["day","month","year","approx"],"description":"Soft date precision stored in metadata. YYYY/YYYY-MM dates default to year/month."},"share_with":{"type":"array","items":{"type":"string"},"description":"Dayze profile handles to add as collaborators via shared_events (e.g. [\"boof\"]). Leading @ stripped."},"people":{"type":"array","items":{"type":"string"},"description":"People names or person UUIDs to tag (event_people role=with)."},"with":{"type":"array","items":{"type":"string"},"description":"Alias for people."},"people_names":{"type":"array","items":{"type":"string"}},"person_ids":{"type":"array","items":{"type":"string"},"description":"Owned person UUIDs to tag (user-scoped)."},"person_name":{"type":"string"},"amount":{"type":"number","description":"If set, also writes a /money transaction (dual-write). Prefer log_transaction / import_venmo_gmail for cashflow-first digs."},"direction":{"type":"string","enum":["from","to"],"description":"With amount: from=received, to=sent"},"source":{"type":"string","description":"With amount: venmo/zelle/…"},"external_id":{"type":"string","description":"With amount: idempotency key"},"person_id":{"type":"string","description":"With amount: CRM person UUID"},"currency":{"type":"string"},"mirror_transaction":{"type":"boolean","description":"Default true when amount is set; set false to keep calendar-only"},"event_date":{"type":"string","description":"Start date YYYY-MM-DD. Alias: date."},"date":{"type":"string","description":"Alias for event_date."}},"required":["title","event_date"],"additionalProperties":false},{"type":"object","properties":{"title":{"type":"string","description":"Event title (required)."},"idempotency_key":{"type":"string","description":"Optional client key (max 128 chars). Retries with the same key return the original result instead of creating a duplicate. If omitted, Dayze fingerprints args for ~15 minutes."},"request_id":{"type":"string","description":"Alias for idempotency_key (preferred by some clients)."},"event_time":{"type":"string","description":"Optional start time: 8pm, 20:00, or 20:00:00. Alias: time."},"time":{"type":"string","description":"Alias for event_time."},"end_date":{"type":"string","description":"Optional end date YYYY-MM-DD (all-day multi-day)."},"end_time":{"type":"string","description":"Optional end time (same formats as event_time)."},"location":{"type":"string","description":"Free-text place. Or pass city + country."},"city":{"type":"string","description":"Structured city (composed into location if location omitted)"},"country":{"type":"string","description":"Structured country"},"description":{"type":"string"},"category":{"type":"string","description":"e.g. funeral, family, work, travel. Stored as events.category and event_type."},"external_url":{"type":"string"},"visibility":{"type":"string","enum":["private","friends","public"],"description":"Calendar visibility. public → appears on /explore and gets share_url https://dayze.com/e/{id}. Default private."},"image_url":{"type":"string","description":"Optional cover image URL for Explore + /e share cards."},"timezone":{"type":"string","description":"IANA timezone for wall-clock display (e.g. America/New_York)."},"date_precision":{"type":"string","enum":["day","month","year","approx"],"description":"Soft date precision stored in metadata. YYYY/YYYY-MM dates default to year/month."},"share_with":{"type":"array","items":{"type":"string"},"description":"Dayze profile handles to add as collaborators via shared_events (e.g. [\"boof\"]). Leading @ stripped."},"people":{"type":"array","items":{"type":"string"},"description":"People names or person UUIDs to tag (event_people role=with)."},"with":{"type":"array","items":{"type":"string"},"description":"Alias for people."},"people_names":{"type":"array","items":{"type":"string"}},"person_ids":{"type":"array","items":{"type":"string"},"description":"Owned person UUIDs to tag (user-scoped)."},"person_name":{"type":"string"},"amount":{"type":"number","description":"If set, also writes a /money transaction (dual-write). Prefer log_transaction / import_venmo_gmail for cashflow-first digs."},"direction":{"type":"string","enum":["from","to"],"description":"With amount: from=received, to=sent"},"source":{"type":"string","description":"With amount: venmo/zelle/…"},"external_id":{"type":"string","description":"With amount: idempotency key"},"person_id":{"type":"string","description":"With amount: CRM person UUID"},"currency":{"type":"string"},"mirror_transaction":{"type":"boolean","description":"Default true when amount is set; set false to keep calendar-only"},"event_date":{"type":"string","description":"Start date YYYY-MM-DD. Alias: date."},"date":{"type":"string","description":"Alias for event_date."}},"required":["title","date"],"additionalProperties":false}]}},{"name":"log_expense","description":"Create 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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"amount":{"type":"number"},"currency":{"type":"string"},"date":{"type":"string"},"merchant":{"type":"string","description":"Payee name (defaults when omitted)"},"category":{"type":"string"},"notes":{"type":"string"},"description":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["amount"],"additionalProperties":true}},{"name":"log_favorite_song","description":"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 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"title":{"type":"string","description":"Track title (required unless track blob parses)"},"artist":{"type":"string","description":"Artist name (required unless track blob parses)"},"track":{"type":"string","description":"Optional \"Artist - Title (year remaster)\" blob"},"year_note":{"type":"string","description":"Optional year or remaster note"},"remaster_note":{"type":"string","description":"Alias for year_note"},"source_url":{"type":"string","description":"Optional https link"},"url":{"type":"string","description":"Alias for source_url"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"log_food","description":"MUTATES 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"what":{"type":"string","description":"What they ate or drank (required). Example: Mee Pok"},"kind":{"type":"string","enum":["meal","snack","drink"]},"meal_period":{"type":"string","description":"Spoken period when consumed_at is omitted, e.g. \"late lunch\""},"consumed_at":{"type":"string","description":"ISO 8601 datetime; wins over meal_period"},"place":{"type":"string","description":"Venue or location"},"merchant":{"type":"string","description":"Restaurant, stall, or shop"},"amount":{"type":"number","description":"Price if mentioned"},"currency":{"type":"string","description":"ISO currency, e.g. SGD"},"with":{"type":"array","items":{"type":"string"},"description":"Companion names, aliases, ids, or group tokens. \"my parents\" / Mum / Dad resolve via aliases; \"family\" expands to CRM rows with family relationship labels"},"people_names":{"type":"array","items":{"type":"string"},"description":"Alias for with"},"person_ids":{"type":"array","items":{"type":"string"},"description":"Owned person UUIDs to tag (user-scoped)"},"notes":{"type":"string"},"paid_by":{"type":"string","description":"Who paid (name or alias)"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["what"],"additionalProperties":false}},{"name":"log_income","description":"Record 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"amount":{"type":"number"},"date":{"type":"string"},"currency":{"type":"string"},"merchant":{"type":"string"},"notes":{"type":"string"},"source":{"type":"string"},"external_id":{"type":"string"},"payment_method":{"type":"string"},"person_id":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["amount"],"additionalProperties":true}},{"name":"log_place_visit","description":"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 required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place":{"type":"string"},"name":{"type":"string","description":"Alias for place"},"place_id":{"type":"string"},"arrived_at":{"type":"string","description":"ISO or YYYY-MM-DD"},"date":{"type":"string","description":"Alias for arrived_at"},"departed_at":{"type":"string"},"source":{"type":"string"},"evidence_expense_id":{"type":"string"},"evidence_event_id":{"type":"string"},"address":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"confidence":{"type":"number"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"log_sleep","description":"Sleep: log overnight or nap. Cross-midnight OK (e.g. 14:00→03:00 = 13h / 780m). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"started_at":{"type":"string","description":"ISO start"},"ended_at":{"type":"string","description":"ISO end"},"sleep_type":{"type":"string","enum":["overnight","nap","unknown"]},"timezone":{"type":"string"},"timezone_start":{"type":"string"},"timezone_end":{"type":"string"},"quality":{"type":"number"},"notes":{"type":"string"},"source":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["started_at","ended_at"],"additionalProperties":false}},{"name":"log_transaction","description":"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). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"account_id":{"type":"string","description":"Stable provider account identity for imported payments."},"message_id":{"type":"string"},"extractor_version":{"type":"string"},"amount":{"type":"number"},"direction":{"type":"string","enum":["from","to"]},"type":{"type":"string","enum":["income","expense","transfer"]},"person_id":{"type":"string"},"date":{"type":"string"},"currency":{"type":"string"},"merchant":{"type":"string"},"notes":{"type":"string"},"source":{"type":"string"},"external_id":{"type":"string"},"payment_method":{"type":"string"},"mirror_event":{"type":"boolean","description":"Also insert optional Money · calendar event (default false)"},"project":{"type":"string","description":"Venture/project label → stored as project:{slug} tag (e.g. Max Soko poker venture)"},"tags":{"type":"array","items":{"type":"string"},"description":"Optional tags. Prefer project: / ext: / rail: grammar."},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["amount","direction"],"additionalProperties":true}},{"name":"log_travel","description":"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=possible and stay off cities/map until confidence=confirmed. Zelle/Venmo money belongs in log_transaction — not here. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"city":{"type":"string"},"country":{"type":"string"},"start_date":{"type":"string","description":"YYYY-MM-DD"},"date":{"type":"string","description":"Alias for start_date"},"end_date":{"type":"string"},"kind":{"type":"string","enum":["trip","residence","soft_pin"]},"confidence":{"type":"string","enum":["confirmed","likely","possible"]},"title":{"type":"string"},"evidence":{"type":"string","description":"Source note (Gmail id, address, etc.)"},"mirror_event":{"type":"boolean","description":"Also insert category=travel calendar event (default true)"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["city"],"additionalProperties":false}},{"name":"merge_people","description":"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; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"preview_id":{"type":"string","description":"Durable preview_id returned by merge_people_preview; review the 30-day restore window before applying."},"primary_person_id":{"type":"string"},"duplicate_person_ids":{"type":"array","items":{"type":"string"}},"restore_window_acknowledged":{"type":"boolean","description":"Must be true — confirms the 30-day restore window was reviewed before apply."},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["primary_person_id","duplicate_person_ids","preview_id","restore_window_acknowledged"],"additionalProperties":false}},{"name":"merge_people_preview","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"primary_person_id":{"type":"string"},"duplicate_person_ids":{"type":"array","items":{"type":"string"}},"field_choices":{"type":"object","additionalProperties":true},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["primary_person_id","duplicate_person_ids"],"additionalProperties":false}},{"name":"normalize_people_apply","description":"Apply a normalize_people_preview by preview_id. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"preview_id":{"type":"string"},"candidate_hash":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["preview_id","candidate_hash","request_id"],"additionalProperties":false}},{"name":"normalize_people_preview","description":"Preview whitespace/phone/handle normalization changes (no title-case of stylized names). ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"rules":{"type":"array","items":{"type":"string"}},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"notable_pack","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Person slug, e.g. albert-einstein"},"similar":{"type":"number","default":8},"peers":{"type":"number","default":12},"date":{"type":"string","description":"YYYY-MM-DD target date"}},"required":["slug"],"additionalProperties":false}},{"name":"notable_pack_premium","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Person slug, e.g. elon-musk"},"similar":{"type":"number","default":12},"peers":{"type":"number","default":20},"date":{"type":"string"}},"required":["slug"],"additionalProperties":false}},{"name":"notable_profile","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Person slug, e.g. albert-einstein"}},"required":["slug"],"additionalProperties":false}},{"name":"notable_search","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","anyOf":[{"type":"object","properties":{"limit":{"type":"number","description":"Max results 1–20","default":8},"q":{"type":"string","description":"Primary search query."},"query":{"type":"string","description":"Alias for q."}},"required":["q"],"additionalProperties":false},{"type":"object","properties":{"limit":{"type":"number","description":"Max results 1–20","default":8},"q":{"type":"string","description":"Primary search query."},"query":{"type":"string","description":"Alias for q."}},"required":["query"],"additionalProperties":false}]}},{"name":"propose_life_update","description":"Propose assertion create/correct without committing (flagged; off by default). ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"people_id":{"type":"string"},"person_id":{"type":"string"},"predicate":{"type":"string"},"value":{"type":"object","additionalProperties":true},"source_text":{"type":"string"},"operations":{"type":"array","items":{"type":"object","additionalProperties":true}},"client_id":{"type":"string"},"idempotency_key":{"type":"string"},"request_id":{"type":"string"}},"additionalProperties":false}},{"name":"read_gmail_attachment","description":"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. Share tokens cannot call. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"message_id":{"type":"string"},"attachment_id":{"type":"string"},"account":{"type":"string"},"email":{"type":"string"}},"required":["message_id","attachment_id"],"additionalProperties":false}},{"name":"read_gmail_message","description":"Read 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"message_id":{"type":"string","description":"Gmail message id from search_gmail"},"id":{"type":"string","description":"Alias for message_id"},"account":{"type":"string","description":"Mailbox selector (email or connection id)"},"email":{"type":"string","description":"Alias for account"}},"required":["message_id"],"additionalProperties":false}},{"name":"record_purchase","description":"Atomic expense + optional inventory item creation. ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string"},"amount":{"type":"number"},"currency":{"type":"string"},"date":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["name","amount"],"additionalProperties":true}},{"name":"record_sale","description":"Mark inventory sold + record sale proceeds with gain/loss. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"inventory_id":{"type":"string"},"amount":{"type":"number"},"currency":{"type":"string"},"sold_at":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["inventory_id","amount"],"additionalProperties":true}},{"name":"remove_person_alias","description":"Remove one alias from a CRM person. ($0.05; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"alias":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["person_id","alias"],"additionalProperties":false}},{"name":"reset_tracker","description":"MUTATES 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"tracker_id":{"type":"string","description":"Event UUID of the tracker"},"tracker_title":{"type":"string","description":"Title match when id unknown"},"title":{"type":"string","description":"Alias of tracker_title"},"reset_at":{"type":"string","description":"ISO datetime of the reset (default now)"},"note":{"type":"string","description":"Optional note stored in tracking history"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"resolve_clarification","description":"Link a clarification surface to an existing person. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"clarification_id":{"type":"string"},"person_id":{"type":"string"},"person_name":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["clarification_id"],"additionalProperties":false}},{"name":"resolve_person","description":"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. 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Nickname or display name to resolve"},"query":{"type":"string","description":"Alias for name"},"include_notes":{"type":"boolean","description":"Include redacted notes (default false)","default":false}},"required":["name"],"additionalProperties":false}},{"name":"resolve_place","description":"Canonicalize a venue name via place aliases and fuzzy match. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"place":{"type":"string"},"query":{"type":"string"},"name":{"type":"string"}},"additionalProperties":false}},{"name":"restore_cleanup","description":"Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"restore_id":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["restore_id","request_id"],"additionalProperties":false}},{"name":"restore_event","description":"Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"restore_id":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["restore_id","request_id"],"additionalProperties":false}},{"name":"restore_expense","description":"Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"restore_id":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["restore_id","request_id"],"additionalProperties":false}},{"name":"restore_trip","description":"Restore an archive or normalization receipt. Requires restore_id and request_id. Refuses intervening edits; repeats are no-ops. ($0; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"restore_id":{"type":"string"},"request_id":{"type":"string"},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["restore_id","request_id"],"additionalProperties":false}},{"name":"score_people_duplicates","description":"Score likely CRM duplicate pairs before merge_people. ($0.05; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string","description":"Score against one person; omit for global scan."},"limit":{"type":"number"},"min_probability":{"type":"number"}},"additionalProperties":false}},{"name":"search","description":"Search 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","anyOf":[{"type":"object","properties":{"limit":{"type":"number","description":"Max results 1–50","default":10},"query":{"type":"string","description":"Primary search query."},"q":{"type":"string","description":"Alias for query."}},"required":["query"],"additionalProperties":false},{"type":"object","properties":{"limit":{"type":"number","description":"Max results 1–50","default":10},"query":{"type":"string","description":"Primary search query."},"q":{"type":"string","description":"Alias for query."}},"required":["q"],"additionalProperties":false}]}},{"name":"search_gmail","description":"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, 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Gmail search query, e.g. \"is:unread newer_than:7d\", \"from:airline subject:itinerary\", \"receipt newer_than:30d\""},"q":{"type":"string","description":"Alias for query"},"max_results":{"type":"number","description":"Max messages to return (default 10, max 20)","default":10},"account":{"type":"string","description":"Mailbox email, connection id, or Google subject (from list_gmail_accounts)"},"email":{"type":"string","description":"Alias for account"}},"required":["query"],"additionalProperties":false}},{"name":"search_inventory","description":"Search 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string"}},"additionalProperties":true}},{"name":"search_photos","description":"Search person photos and entity assets by query/metadata. Returns inline MCP image attachments. ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"person_ids":{"type":"array","items":{"type":"string"}},"place_id":{"type":"string"}},"additionalProperties":true}},{"name":"search_transactions","description":"Keyword search over merchant/description/category, or exact tag query (project:/ext:/rail:). ($0.10; API key required)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"cursor":{"type":"string","description":"Continue the same immutable one-hour snapshot; other filters remain frozen."},"include_archived":{"type":"boolean"},"query":{"type":"string"},"tag":{"type":"string"},"project":{"type":"string"},"limit":{"type":"number"}},"additionalProperties":true}},{"name":"set_primary_person_name","description":"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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"name":{"type":"string"},"preserve_old_name_as_alias":{"type":"boolean"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["person_id","name"],"additionalProperties":false}},{"name":"start_people_cleanup","description":"Server-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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"checks":{"type":"array","items":{"type":"string"}},"auto_merge_threshold":{"type":"number"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"undo_contact_change","description":"Reverse 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)","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"change_id":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["change_id"],"additionalProperties":false}},{"name":"unlink_people","description":"Remove a person↔person graph edge. ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"connection_id":{"type":"string"},"person_id":{"type":"string"},"other_person_id":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"update_asset","description":"Patch role, metadata, description, or parent_asset_id (e.g. mark as processed). ($0.08; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"asset_id":{"type":"string"},"role":{"type":"string","enum":["original","processed","thumbnail","cover","document","receipt","certificate","photo","other"],"description":"original | cover | thumbnail | …"},"asset_type":{"type":"string"},"description":{"type":"string"},"filename":{"type":"string"},"parent_asset_id":{"type":"string"},"metadata":{"type":"object"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["asset_id"],"additionalProperties":true}},{"name":"update_current_location","description":"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 defaults true; check_in defaults true when place or coordinates are set. Does not invent GPS when omitted. ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"location":{"type":"string","description":"Freeform “City, Country” or “Venue, City, Country”"},"city":{"type":"string"},"country":{"type":"string"},"place":{"type":"string","description":"Venue / residence name (e.g. The Madeira)"},"venue":{"type":"string","description":"Alias for place"},"address":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"set_home":{"type":"boolean","description":"Also write profiles.location / home_location (default true)"},"check_in":{"type":"boolean","description":"Write a location_visits row when place or coordinates are set (default true in that case)"},"idempotency_key":{"type":"string"},"request_id":{"type":"string"}},"additionalProperties":false}},{"name":"update_event","description":"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, 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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"event_id":{"type":"string","description":"UUID of a calendar event the authenticated user owns"},"title":{"type":"string","description":"Updated title (replaces). Cannot be empty."},"event_date":{"type":"string","description":"Start date YYYY-MM-DD, YYYY-MM, or YYYY. Alias: date."},"date":{"type":"string","description":"Alias for event_date."},"date_precision":{"type":"string","enum":["day","month","year","approx"],"description":"Soft date precision stored in metadata."},"event_time":{"type":"string","description":"Start time: 8pm, 20:00, or 20:00:00. Empty or null clears. Alias: time."},"time":{"type":"string","description":"Alias for event_time."},"end_date":{"type":"string","description":"Optional end date YYYY-MM-DD (all-day multi-day)."},"end_time":{"type":"string","description":"Optional end time (same formats as event_time)."},"location":{"type":"string","description":"Empty or null clears"},"description":{"type":"string","description":"Empty or null clears"},"category":{"type":"string","description":"e.g. funeral, family, work, travel. Stored as events.category and event_type."},"external_url":{"type":"string"},"people":{"type":"array","items":{"type":"string"},"description":"People names or person UUIDs to add (event_people role=with). Does not remove existing tags."},"with":{"type":"array","items":{"type":"string"},"description":"Alias for people."},"people_names":{"type":"array","items":{"type":"string"}},"person_ids":{"type":"array","items":{"type":"string"},"description":"Owned person UUIDs to tag (user-scoped)."},"person_name":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original successful result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["event_id"],"additionalProperties":false}},{"name":"update_expense","description":"PATCH an expense row. ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"expense_id":{"type":"string"},"amount":{"type":"number"},"category":{"type":"string"},"merchant":{"type":"string"},"notes":{"type":"string"},"description":{"type":"string"},"date":{"type":"string","description":"YYYY-MM-DD expense_date"},"currency":{"type":"string"},"payment_method":{"type":"string","description":"e.g. venmo, cash, card"},"source":{"type":"string","description":"Alias of payment_method"},"project":{"type":"string","description":"Venture label → project:{slug} tag"},"tags":{"type":"array","items":{"type":"string"}},"external_id":{"type":"string","description":"Optional; merges ext:{source}:{id} into tags"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["expense_id"],"additionalProperties":false}},{"name":"update_food","description":"MUTATES 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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"food_id":{"type":"string","description":"UUID of a food diary row the authenticated user owns"},"what":{"type":"string","description":"Full updated dish/drink text (replaces, does not append). Example: Salmon Bento + hot tea"},"kind":{"type":"string","enum":["meal","snack","drink"]},"meal_period":{"type":"string","description":"Spoken period when consumed_at is omitted, e.g. \"late lunch\""},"consumed_at":{"type":"string","description":"ISO 8601 datetime; wins over meal_period"},"place":{"type":"string","description":"Venue or location. Empty or null clears"},"merchant":{"type":"string","description":"Restaurant, stall, or shop. Empty or null clears"},"amount":{"type":"number","description":"Price if mentioned"},"currency":{"type":"string","description":"ISO currency, e.g. SGD"},"with":{"type":"array","items":{"type":"string"},"description":"Companion names, aliases, or ids to add (does not remove existing tags)"},"people_names":{"type":"array","items":{"type":"string"},"description":"Alias for with"},"person_ids":{"type":"array","items":{"type":"string"},"description":"Owned person UUIDs to tag (user-scoped)"},"notes":{"type":"string","description":"Replaces notes. Empty or null clears"},"append_notes":{"type":"string","description":"Append text to existing notes (newline-separated)"},"paid_by":{"type":"string","description":"Who paid (name or alias)"},"payment_method":{"type":"string","description":"Alias of paid_by for expense-style agents"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["food_id"],"additionalProperties":false}},{"name":"update_inventory_item","description":"PATCH semantics — unspecified fields untouched. ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"inventory_id":{"type":"string"},"name":{"type":"string","description":"What the user naturally calls the item."},"category":{"type":"string","description":"Broad type: clothing, instruments, electronics, …"},"subtype":{"type":"string","description":"Specific subtype (sweatshirt, jacket, guitar). Alias: item_type."},"item_type":{"type":"string","description":"Alias for subtype."},"brand":{"type":"string"},"model":{"type":"string"},"reference_number":{"type":"string"},"serial_number":{"type":"string"},"condition":{"type":"string"},"status":{"type":"string"},"location":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"},"description":"Replace tags array (sanitized against category mismatches)."},"subtype_confidence":{"type":"number","description":"0–1 confidence when subtype is uncertain (agent_inferred)."},"estimated_value":{"type":"number"},"purchase_price":{"type":"number"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["inventory_id"],"additionalProperties":false}},{"name":"update_notable","description":"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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string","description":"Notable person slug (e.g. taylor-swift)"},"bio":{"type":"string"},"about":{"type":"string"},"occupation":{"type":"string"},"birth_place":{"type":"string"},"birth_date":{"type":"string","description":"YYYY, YYYY-MM, or YYYY-MM-DD. Null/empty clears"},"net_worth":{"type":"string"},"residence":{"type":"string"},"before_fame":{"type":"string"},"trivia":{"type":"string"},"family_life":{"type":"string"},"zodiac":{"type":"string"},"flag":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["slug"],"additionalProperties":false}},{"name":"update_people_link","description":"Patch an existing person↔person graph edge (type/context/source/confidence). ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"connection_id":{"type":"string"},"person_id":{"type":"string"},"other_person_id":{"type":"string"},"relationship_type":{"type":"string"},"notes":{"type":"string"},"source":{"type":"string"},"confidence":{"type":"number"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"update_person","description":"MUTATES 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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string","description":"UUID of a person the authenticated user owns"},"name":{"type":"string","description":"Rename contact (also refreshes URL slug). Prefer this over create+merge for spelling fixes"},"preserve_old_name_as_alias":{"type":"boolean","description":"When renaming, keep the previous name as a former_name alias (default true)"},"is_favorite":{"type":"boolean","description":"Favorite flag. Favorites (and VIP) appear in get_context_pack inner_circle"},"tier":{"type":"string","enum":["vip","normal","low"],"description":"Relationship priority. VIP stays in inner_circle even when not favorited"},"relationship":{"type":"string","description":"Relationship label (friend, sister, …). Empty or null clears"},"notes":{"type":"string","description":"Replaces people.notes (does not append). Empty or null clears"},"birthday":{"type":"string","description":"YYYY, YYYY-MM, YYYY-MM-DD, or MM-DD / --MM-DD (year unknown). Null/empty clears"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["person_id"],"additionalProperties":false}},{"name":"update_person_alias","description":"Update alias_kind/source/display for an existing alias. ($0.05; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"alias":{"type":"string"},"alias_kind":{"type":"string"},"source":{"type":"string"},"alias_display":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["person_id","alias"],"additionalProperties":false}},{"name":"update_person_identity","description":"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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"person_id":{"type":"string"},"legal_name":{"type":"string"},"preferred_name":{"type":"string"},"pronouns":{"type":"string"},"website":{"type":"string"},"social_handles":{"type":"object","additionalProperties":true},"aliases":{"type":"array","items":{"type":"object","additionalProperties":true}},"user_relationships":{"type":"array","items":{"type":"object","additionalProperties":true}},"force":{"type":"boolean"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["person_id"],"additionalProperties":false}},{"name":"update_place","description":"Patch a saved place card by place_id / business_contact_id. Unspecified fields stay unchanged (hours, affordability, address, notes, …). ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"place_id":{"type":"string"},"business_contact_id":{"type":"string"},"id":{"type":"string"},"name":{"type":"string"},"address":{"type":"string"},"opening_hours":{"type":"string"},"hours":{"type":"string"},"affordability":{"type":"string"},"price_level":{"type":"string"},"category":{"type":"string"},"area":{"type":"string"},"city":{"type":"string"},"country":{"type":"string"},"notes":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"website":{"type":"string"},"phone":{"type":"string"},"phone_numbers":{"type":"array","items":{"type":"string"}},"description":{"type":"string"},"hours_source":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":false}},{"name":"update_sleep","description":"Sleep: patch an existing sleep record by sleep_id. ($0.10; API key required)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"sleep_id":{"type":"string"},"started_at":{"type":"string"},"ended_at":{"type":"string"},"sleep_type":{"type":"string","enum":["overnight","nap","unknown"]},"quality":{"type":"number"},"notes":{"type":"string"},"timezone":{"type":"string"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["sleep_id"],"additionalProperties":false}},{"name":"upload_asset","description":"Upload 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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"image_base64":{"type":"string"},"url":{"type":"string"},"filename":{"type":"string"},"mime_type":{"type":"string"},"asset_type":{"type":"string","description":"photo | receipt | certificate | document | thumbnail | …"},"role":{"type":"string","enum":["original","processed","thumbnail","cover","document","receipt","certificate","photo","other"],"description":"original | cover | thumbnail | …"},"parent_asset_id":{"type":"string"},"entity_type":{"type":"string","description":"inventory_item maps to inventory"},"entity_id":{"type":"string"},"description":{"type":"string"},"metadata":{"type":"object"},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"additionalProperties":true}},{"name":"upload_photo","description":"Upload 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)","write_action":true,"price_micros":0,"input_schema":{"type":"object","anyOf":[{"type":"object","properties":{"entity_type":{"type":"string"},"entity_id":{"type":"string"},"content_type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"set_as_avatar":{"type":"boolean"},"image_base64":{"type":"string","description":"Base64 image bytes (optional data: URL prefix)."},"url":{"type":"string","description":"Remote image URL to fetch and store."},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["entity_type","entity_id","image_base64"],"additionalProperties":true},{"type":"object","properties":{"entity_type":{"type":"string"},"entity_id":{"type":"string"},"content_type":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"set_as_avatar":{"type":"boolean"},"image_base64":{"type":"string","description":"Base64 image bytes (optional data: URL prefix)."},"url":{"type":"string","description":"Remote image URL to fetch and store."},"request_id":{"type":"string","description":"Client idempotency key (retries return original result)."},"idempotency_key":{"type":"string","description":"Alias for request_id."}},"required":["entity_type","entity_id","url"],"additionalProperties":true}]}}],"scan":{"score":80,"grade":"B","scanned_at":"2026-09-19T20:27:48.520Z","report":{"scannerVersion":"0.1.5","scannedAt":"2026-09-19T20:27:48.440Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1430ms"]},"poisoning":{"score":15,"max":15,"notes":["130 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 25 write-action tools with no auth"]},"maintenance":{"score":15,"max":15,"notes":["last push 1 days ago"]},"identity":{"score":7,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year","website matches verified namespace"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"}],"inputs":{"probes":[{"url":"https://dayze.com/api/mcp","reachable":true,"authRequired":false,"latencyMs":1430,"serverInfo":{"name":"dayze","version":"1.33.0"}},{"url":"https://dayze.com/api/mcp/key","reachable":true,"authRequired":false,"latencyMs":8662,"serverInfo":{"name":"dayze","version":"1.33.0"}}],"packages":[],"repo":{"found":true,"owner":"gohluke","repo":"dayze-mcp","archived":false,"pushedAt":"2026-09-18T18:40:58Z","stars":0,"forks":1,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/16628998?v=4","ownerCreatedAt":"2016-01-10T00:51:54Z","license":"MIT"},"icon":{"url":"https://dayze.com/favicon.ico","source":"registry","width":48,"height":48},"presence":{"stars":0,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-18T18:40:58.000Z","score":23}}}},"grade_history":[],"reviews":[]}