Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,547Letters: 14Defects: 1,324counted 4 min ago
teppi

Server definition

Hash
sha256:0703e41489533fd55c5500d0a275e995df895abff42562580b08a6c49ab99b6f
What it is
What a remote MCP server returned when asked what it offers: 169 tools

The blob, as servednamed by its sha256

{ "instructions": "Public notable_* tools need no API key (free tier). Private life-graph tools need OAuth (Bearer dayze_at_*) or an API key (Bearer dayze_k_*), and only the scopes the owner granted that connection or key (context.read, context.write, context.delete, mail.read, …): tools/list omits the rest, and calling one returns 403 INSUFFICIENT_SCOPE naming the scope. Prefer get_context_pack for a signed-in user life-graph bootstrap; use notable_pack only for the public notable-people catalog. Sleep: log_sleep / get_sleep / get_sleep_summary / update_sleep (pack sleep section is read-only). Person photos: get_person_photos returns inline MCP image attachments. Inventory photos: search_inventory → upload_asset(image_base64, entity_type=inventory, entity_id, role=photo) or upload_asset then attach_asset. Replies owed (\"what to reply to X\", \"I owe X a reply\"): create_pending_reply (Inbox → Pending Replies, optional draft), not log_event; get_pending_replies / update_pending_reply / resolve_pending_reply. Dayze never sends the reply. A task with no deadline: ask for a date rather than using today. Calendar writes are private; set log_event visibility to friends or public only when the user asks to share. Events are planned life, Moments are lived anecdotes: a past story or memory goes to log_moment (always private; event_id links the event it is about and never changes it), not log_event, and one thing is saved once. Citing: reads give each record that has a Dayze page an inspect_url. Link each claim you take from a record to that inspect_url; never build a URL from an id; if a record has no inspect_url, say it has no Dayze page. Say which Dayze account the records are from (account.handle). When records disagree on a date (date_conflict, or two dates for one thing), give both and say which record says which.", "tools": [ { "description": "Add an owned item to the user's private Inventory. For a computer, phone, camera or synth pass spec_template (computer.v1, phone.v1, camera.v1, synth.v1) and specs with that template's fields, taken from what the user says or the device reports; never infer specs from a model name. Changing facts (OS version, free space, battery, service readiness) go in state, one observation with observed_at. Never ask for or store device or account identifiers. Returns inventory_id and the item with capability_summary. Example: { name: \"MacBook Pro 14 (2023)\", spec_template: \"computer.v1\", specs: { manufacturer: \"Apple\", model_name: \"MacBook Pro\", model_identifier: \"Mac15,11\", chip: \"Apple M3 Max\", performance_cores: 10, efficiency_cores: 4, total_cores: 14, memory_bytes: 38654705664, memory: \"36 GB\", architecture: \"arm64\" }, state: { os: { name: \"macOS\", version: \"15.4.1\", build: \"24E263\" }, observed_at: \"2026-09-29T14:00:00Z\", source: \"user_reported\" } } ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "acquired_date": { "description": "YYYY-MM-DD it came into the user's life (gift, inheritance). add_inventory_item also stores it as purchase_date when none is given.", "type": "string" }, "acquired_from": { "description": "Shop or person it came from.", "type": "string" }, "acquisition_type": { "description": "purchase | gift | inheritance | …", "type": "string" }, "brand": { "type": "string" }, "category": { "description": "electronics | instruments | clothing | shoes | bags | accessories | jewelry | watches | collectibles | sports | health | home | tools | vehicles | furniture | other. Computers, phones and cameras are electronics; synths are instruments. Defaults to the spec_template's category, else other.", "type": "string" }, "condition": { "enum": [ "new", "excellent", "good", "worn", "needs_repair", "retired" ], "type": "string" }, "currency": { "description": "ISO 4217, e.g. USD, SGD. Default USD.", "type": "string" }, "current_value": { "description": "Alias for estimated_value (the stored column).", "type": "number" }, "estimated_value": { "description": "What it is worth now. Alias: current_value.", "type": "number" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "item_type": { "description": "Alias for subtype (the stored column).", "type": "string" }, "location": { "description": "Where it is kept.", "type": "string" }, "model": { "type": "string" }, "name": { "description": "What the user calls the item, e.g. \"MacBook Pro 14 (2023)\".", "type": "string" }, "notes": { "description": "Free text from the user.", "type": "string" }, "person_ids": { "description": "Contacts to link: purchased_from, or inherited_from when acquisition_type is inheritance.", "items": { "type": "string" }, "type": "array" }, "purchase_date": { "description": "YYYY-MM-DD", "type": "string" }, "purchase_price": { "type": "number" }, "reference_number": { "description": "Manufacturer reference or model number (e.g. a watch reference).", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "spec_template": { "description": "Which typed fields specs uses. Templates are listed in docs/MCP_LIFE_GRAPH.md. null (update) clears it.", "enum": [ "computer.v1", "phone.v1", "camera.v1", "synth.v1" ], "type": "string" }, "specs": { "description": "Stable facts, by the template's field names (computer.v1: nickname, manufacturer, model_name, model_identifier, year, primary_uses, capability_tags, product_family, form_factor, chip, cpu, architecture, performance_cores, efficiency_cores, total_cores, threads, gpu, gpu_cores, gpu_memory_bytes, neural_engine_cores, memory_bytes, memory, storage_devices, display, ports). Merged per key on update; null removes a key; other keys are kept as written. Only what the user or the device says, never inferred from a model name. Never device or account identifiers.", "type": "object" }, "specs_schema_version": { "description": "Layout of specs and state. Only 1 (the default).", "type": "integer" }, "state": { "description": "Changing facts, as one observation: observed_at (ISO, default now), source (e.g. user_reported, system_profiler), confidence (0-1), and values such as os { name, version, build }, available_storage_bytes, battery, security { sip, gatekeeper, filevault }, services { bluebubbles: { installed_version, running, configured, blockers, checked_at } }. Merged per key; a key observed more recently is kept. Never changes specs or notes. Never device or account identifiers.", "type": "object" }, "status": { "description": "Default owned. To archive, use archive_inventory_item.", "enum": [ "wishlist", "ordered", "owned", "listed_for_sale", "sold", "returned", "lost", "disposed", "donated" ], "type": "string" }, "subtype": { "description": "Specific kind: laptop, sweatshirt, guitar. Alias: item_type.", "type": "string" }, "subtype_confidence": { "description": "0-1, when the subtype is a guess.", "type": "number" }, "tags": { "description": "Replaces the tag list.", "items": { "type": "string" }, "type": "array" } }, "required": [ "name" ], "type": "object" }, "name": "add_inventory_item", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "idempotent_replay": { "description": "true when this request_id already ran: the first result, nothing new written.", "type": "boolean" }, "inventory_id": { "type": "string" }, "item": { "additionalProperties": true, "description": "Inventory item record. With specs: spec_template, specs, state (a timestamped snapshot), state_freshness and capability_summary.", "type": "object" }, "message": { "type": [ "string", "null" ] }, "people_not_linked": { "items": { "type": "string" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "Append a valuation (value, currency, valued_at, source) to one owned Inventory item; the item's current value becomes this value. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "confidence": { "description": "0-1", "type": "number" }, "currency": { "description": "ISO 4217, default USD.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "inventory_id": { "description": "The item id from add_inventory_item, get_inventory or search_inventory.", "type": "string" }, "notes": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "description": "Where the value comes from: appraisal, listing, estimate, …", "type": "string" }, "value": { "description": "What it is worth.", "type": "number" }, "valued_at": { "description": "ISO date or date-time; default now.", "type": "string" } }, "required": [ "inventory_id", "value" ], "type": "object" }, "name": "add_inventory_valuation", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "idempotent_replay": { "type": "boolean" }, "inventory_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "valuation": { "additionalProperties": true, "type": "object" } }, "type": "object" } }, { "description": "Add a nickname/payment handle/misspelling alias for one CRM person. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "alias": { "type": "string" }, "alias_kind": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" } }, "required": [ "person_id", "alias" ], "type": "object" }, "name": "add_person_alias", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "alias": { "type": "string" }, "aliases": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "change_id": { "type": [ "string", "null" ] }, "message": { "type": [ "string", "null" ] }, "person_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "Correct or dispute an event fact from a saved answer. Inspect its source first. Supply request_id for safe retries. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "action": { "enum": [ "correct", "not_true_anymore" ], "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "message_id": { "type": "string" }, "request_id": { "type": "string" }, "source_ref": { "type": "string" }, "value": { "description": "Required when action is correct.", "maxLength": 500, "type": "string" } }, "required": [ "message_id", "source_ref", "action", "request_id" ], "type": "object" }, "name": "apply_event_fact_correction", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "correctionId": { "type": "string" }, "ok": { "type": "boolean" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "recordState": { "type": "string" }, "status": { "additionalProperties": true, "type": "object" } }, "required": [ "ok" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Soft-delete an asset (sets archived_at). Original rows are preserved for versioning. Reviewed and reversible: first call preview_destructive_change({ tool: \"archive_asset\", arguments: { asset_id } }), which stores the exact change without applying it. After the user confirms, call archive_asset with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "asset_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "asset_id", "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "archive_asset", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "archived": { "type": "boolean" }, "asset": { "additionalProperties": true, "type": "object" }, "asset_id": { "type": "string" }, "idempotent_replay": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "description": "Reversibly archive one owned event; preserve linked data and return restore_id. Archived rows are never purged, so restore_event works for at least 30 days (the Dayze destructive-change restore window). Use a new request_id for each intended action. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "event_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "reason": { "type": "string" }, "request_id": { "type": "string" } }, "required": [ "event_id", "request_id" ], "type": "object" }, "name": "archive_event", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Reversibly archive one owned expense; preserve linked data and return restore_id. Archived rows are never purged, so restore_expense works for at least 30 days (the Dayze destructive-change restore window). Use a new request_id for each intended action. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "expense_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "reason": { "type": "string" }, "request_id": { "type": "string" } }, "required": [ "expense_id", "request_id" ], "type": "object" }, "name": "archive_expense", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Preview first, 30-day undo. Archive an inventory item instead of deleting it (status archived, archived_at set; valuations, people links and photos are kept). Reviewed and reversible: first call preview_destructive_change({ tool: \"archive_inventory_item\", arguments: { inventory_id } }), which stores the exact change without applying it. After the user confirms, call archive_inventory_item with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "inventory_id": { "description": "The item id from add_inventory_item, get_inventory or search_inventory.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "reason": { "description": "Why it is archived (kept on the receipt).", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "inventory_id", "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "archive_inventory_item", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "archived": { "type": "boolean" }, "idempotent_replay": { "type": "boolean" }, "inventory_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "description": "Reversibly archive one owned trip; preserve linked data and return restore_id. Archived rows are never purged, so restore_trip works for at least 30 days (the Dayze destructive-change restore window). Use a new request_id for each intended action. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "reason": { "type": "string" }, "request_id": { "type": "string" }, "trip_id": { "type": "string" } }, "required": [ "trip_id", "request_id" ], "type": "object" }, "name": "archive_trip", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Attach an asset_id to one of your entities. An asset uploaded without an entity is attached as is; one already on an entity gets a linked copy (the original row stays). Roles: original | processed | thumbnail | cover | document | receipt | certificate | other (photo is stored as original). Legacy: pass url instead of asset_id. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "asset_id": { "type": "string" }, "asset_type": { "type": "string" }, "description": { "description": "Caption for the attached asset (kept on a linked copy too).", "type": "string" }, "entity_id": { "type": "string" }, "entity_type": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "metadata": { "description": "Free-form metadata, merged into the stored metadata (metadata.source becomes the asset source).", "type": "object" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "role": { "description": "original | cover | thumbnail | …", "enum": [ "original", "processed", "thumbnail", "cover", "document", "receipt", "certificate", "photo", "other" ], "type": "string" }, "url": { "description": "A web link (https://…) to an image. Not a storage path: upload a file, then attach its asset_id.", "type": "string" } }, "required": [ "entity_type", "entity_id" ], "type": "object" }, "name": "attach_asset", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "asset": { "additionalProperties": true, "type": "object" }, "asset_id": { "type": "string" }, "attached": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "MUTATES one Food Diary row the authenticated user owns by storing a meal photo on it (same pipeline as the web diary upload). Required: food_id (UUID from log_food / search) plus exactly one of image_base64 (raw base64 or data: URL) or url (public https image). JPEG, PNG, WebP, GIF, HEIC, or AVIF under 8 MB. One photo per entry: calling again replaces photo_url (replaced/previous_photo_url report it). EXIF capture time moves consumed_at unless keep_consumed_at=true. Unknown or other-user food_id returns not_found and stores nothing. Response photo_url is re-read from the row. Syncs the mirrored calendar event and rebuilds life_state. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "filename": { "description": "Optional original filename", "type": "string" }, "food_id": { "description": "UUID of a Food Diary row the authenticated user owns", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "image_base64": { "description": "Image bytes as base64 (optional data:image/...;base64, prefix). Use this or url.", "type": "string" }, "keep_consumed_at": { "description": "true keeps the entry time even if the photo EXIF has a capture time", "type": "boolean" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "url": { "description": "Public https image URL to fetch and store. Use this or image_base64.", "type": "string" } }, "required": [ "food_id" ], "type": "object" }, "name": "attach_food_photo", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "consumed_at": { "type": "string" }, "consumed_at_changed": { "description": "True when photo EXIF moved the entry time.", "type": "boolean" }, "event_id": { "type": [ "string", "null" ] }, "food_id": { "type": "string" }, "life_state_rebuilt": { "type": "boolean" }, "photo": { "additionalProperties": true, "description": "Stored image summary (mime_type, file_size_bytes, taken_at).", "type": "object" }, "photo_url": { "description": "Stored photo URL, re-read from the Food Diary row.", "type": "string" }, "previous_photo_url": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "replaced": { "description": "True when the entry already had a photo.", "type": "boolean" } }, "required": [ "food_id", "photo_url", "replaced", "previous_photo_url", "consumed_at", "consumed_at_changed", "event_id", "photo", "life_state_rebuilt" ], "type": "object" } }, { "description": "CONTEXT LAYER: server-side contact hygiene. Returns compact candidate clusters only (duplicates, entity-type hints, normalization, payment-handle collisions, junk system/test-word names). Do NOT use get_people bulk dumps for cleanup. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "checks": { "items": { "type": "string" }, "type": "array" }, "limit": { "type": "number" }, "min_confidence": { "type": "number" } }, "type": "object" }, "name": "audit_people", "outputSchema": { "additionalProperties": true, "properties": { "candidates": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" }, "guidance": { "type": "string" }, "summary": { "additionalProperties": true, "type": "object" } }, "required": [ "candidates", "summary", "count" ], "type": "object" } }, { "description": "Add human names to coord-only places/visits via Google nearby search + reverse geocode. Never overwrites existing names, coordinates, or user-entered fields. Idempotent; resumable via cursor under a per-account monthly Places quota. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "cursor": { "description": "Resume token from a previous next_cursor.", "type": "string" }, "dry_run": { "type": "boolean" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "limit": { "description": "Max targets this run (1–100, default 25).", "type": "number" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "type": "object" }, "name": "backfill_place_names", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "done": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "named": { "type": "number" }, "next_cursor": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "quota": { "additionalProperties": true, "description": "Per-account monthly Places usage.", "type": "object" }, "rate_limited": { "type": "boolean" }, "skipped_named": { "type": "number" }, "skipped_no_match": { "type": "number" } }, "type": "object" } }, { "description": "Preview first, 30-day undo. Dismiss non-person / typed junk from the clarification queue. Reviewed and reversible: first call preview_destructive_change({ tool: \"bulk_dismiss_clarifications\", arguments: { entity_type?, reason? } }), which stores the exact change without applying it. After the user confirms, call bulk_dismiss_clarifications with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. The preview lists every clarification that would be dismissed; restore returns them to pending. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "entity_type": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "reason": { "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "bulk_dismiss_clarifications", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "dismissed": { "type": "number" }, "idempotent_replay": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "description": "Set entity_type (person/company/merchant/…) on a CRM row without losing transactions or links. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "confidence": { "type": "number" }, "entity_id": { "type": "string" }, "entity_type": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "identity_status": { "type": "string" }, "person_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" } }, "required": [ "entity_type" ], "type": "object" }, "name": "classify_contact", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "change_id": { "type": [ "string", "null" ] }, "message": { "type": [ "string", "null" ] }, "person": { "additionalProperties": true, "type": "object" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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 (restore_cleanup undoes it for at least 30 days); replay performs no additional actions. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "candidate_hash": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "type": "string" }, "request_id": { "type": "string" } }, "required": [ "preview_id", "candidate_hash", "request_id" ], "type": "object" }, "name": "cleanup_apply", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "family": { "enum": [ "events", "expenses", "trips" ], "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "family" ], "type": "object" }, "name": "cleanup_preview", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Owner approve+commit via payload_hash + owner_session_id (flagged; off by default). Requires the propose_life_update review first. Commits append bitemporal revisions and keep prior revisions; there is no post-commit undo tool, so correct a committed fact with a new propose_life_update. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "type": "string" }, "owner_session_id": { "type": "string" }, "payload_hash": { "type": "string" }, "proposal_id": { "type": "string" }, "request_id": { "type": "string" } }, "required": [ "proposal_id", "payload_hash", "owner_session_id" ], "type": "object" }, "name": "commit_life_update", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "assertionIds": { "items": { "type": "string" }, "type": "array" }, "enabled": { "type": "boolean" }, "graphVersion": { "type": "number" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "date": { "description": "YYYY-MM-DD target date for both packs", "type": "string" }, "peers": { "default": 6, "type": "number" }, "similar": { "default": 4, "type": "number" }, "slug_a": { "description": "First person slug", "type": "string" }, "slug_b": { "description": "Second person slug", "type": "string" } }, "required": [ "slug_a", "slug_b" ], "type": "object" }, "name": "compare_lives", "outputSchema": { "additionalProperties": false, "properties": { "a": { "additionalProperties": true, "description": "First notable-person knowledge pack.", "type": "object" }, "b": { "additionalProperties": true, "description": "Second notable-person knowledge pack.", "type": "object" }, "compare": { "additionalProperties": true, "description": "Computed comparison fields and URLs.", "type": "object" }, "pack": { "type": "string" } }, "required": [ "pack", "a", "b", "compare" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Convert a contact’s entity_type (same as classify_contact). Preserves FKs. Reviewed and reversible: first call preview_destructive_change({ tool: \"convert_contact_entity\", arguments: { person_id, target_type } }), which stores the exact change without applying it. After the user confirms, call convert_contact_entity with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. Restore reverts entity_type, identity_status and identity_confidence. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "entity_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" }, "target_type": { "type": "string" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "convert_contact_entity", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "change_id": { "type": [ "string", "null" ] }, "idempotent_replay": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "person": { "additionalProperties": true, "type": "object" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "description": "Preview first, 30-day undo. Remove one exact false atom from a bundled memory, retaining the other text and clearing its stale embedding. Reviewed and reversible: first call preview_destructive_change({ tool: \"correct_memory_atom\", arguments: { memory_id, false_atom } }), which stores the exact change without applying it. After the user confirms, call correct_memory_atom with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "memory_id": { "description": "Memory id, checked against the preview.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "correct_memory_atom", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "content": { "type": "string" }, "false_atom": { "type": "string" }, "idempotent_replay": { "type": "boolean" }, "life_state_rebuilt": { "type": "boolean" }, "memory_id": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "required": [ "memory_id", "content", "life_state_rebuilt" ], "type": "object" } }, { "description": "Add a private condition for an explicit subject_type: self, or person plus an owned person_id from get_people/resolve_person. Never turn a family member's condition into self; if the person is unresolved, ask and write nothing. status defaults suspected—never infer active or confirmed from a mention. Keep the user's words; source defaults user_reported and confirmation_status reported. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "body_area": { "description": "Where, e.g. \"Left eye\".", "type": "string" }, "confirmation_status": { "description": "unconfirmed | reported (default) | confirmed; never infer confirmed.", "enum": [ "unconfirmed", "reported", "confirmed" ], "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "name": { "description": "What the user calls it, in their words (e.g. \"Blurry near vision\"). Never a diagnosis they did not give.", "type": "string" }, "notes": { "type": "string" }, "person_id": { "description": "Owned contact id; required for person.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "description": "Provenance, e.g. user_reported. Default user_reported.", "type": "string" }, "started_on": { "description": "YYYY-MM-DD it started (onset). Default for a new one: today.", "type": "string" }, "status": { "description": "suspected (default for a new one) | active | improving | resolved.", "enum": [ "suspected", "active", "improving", "resolved" ], "type": "string" }, "subject_type": { "description": "self, or person with person_id.", "enum": [ "self", "person" ], "type": "string" }, "symptoms": { "description": "What they notice, e.g. \"Blurry at near distance, worse in the evening\".", "type": "string" }, "tracking_focus": { "description": "What to watch on each check-in.", "type": "string" }, "treatments": { "description": "What they use or do for it.", "type": "string" } }, "required": [ "name", "subject_type" ], "type": "object" }, "name": "create_condition", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "already_existed": { "description": "true: an open condition with this name exists; it came back unchanged.", "type": "boolean" }, "condition": { "additionalProperties": true, "description": "A private condition with explicit subject_type/person_id, source and confirmation_status.", "type": "object" }, "condition_id": { "type": "string" }, "created": { "type": "boolean" }, "idempotent_replay": { "description": "true when this request_id already ran: the first result, nothing new written.", "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "Pending Replies (Inbox): save a reply the user owes someone, e.g. 'what to reply to X', 'I owe X a reply'. Use this, not log_event or a task. Optional draft (the reply text), summary (one line in your own words; never the email body, subject or sender), channel, category, received_at, and source { kind, thread_id, message_id } (ids only). Links the contact only when resolve_person finds exactly one (or pass person_id); otherwise the reply is saved unlinked and person_link says why. An unsent reply for the same thread or person comes back instead of a second one (created: false, deduplicated: true); update_existing: true replaces its draft and summary. Never sends anything. Requires API key or OAuth with context.write; share tokens cannot write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "category": { "description": "Default personal.", "enum": [ "personal", "work" ], "type": "string" }, "channel": { "description": "Where to reply: whatsapp, email, sms, call, imessage, telegram, instagram, facebook, signal, linkedin, twitter, slack, teams, work_email, zoom, dayze, other. Default email when source is set, else other.", "type": "string" }, "draft": { "description": "The reply text to send later, max 20,000 characters. Replaces the saved draft; empty or null clears. Alias: draft_message.", "type": "string" }, "draft_message": { "description": "Alias for draft.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "description": "An owned contact id; links that contact directly.", "type": "string" }, "person_name": { "description": "Who the reply is owed to, as the user said it (e.g. \"Ilana\").", "type": "string" }, "received_at": { "description": "When they wrote (ISO date-time). Default now.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "additionalProperties": false, "description": "The email the reply answers, as ids only (e.g. a search_gmail id is a message_id). Never a subject, sender or text. On update, null clears it.", "properties": { "kind": { "enum": [ "gmail", "email", "other" ], "type": "string" }, "message_id": { "type": "string" }, "thread_id": { "type": "string" } }, "type": "object" }, "summary": { "description": "One line (max 280) in your own words: what the reply is about. Never paste the email body, subject line or sender address.", "type": "string" }, "update_existing": { "description": "When an unsent reply for this thread or person exists, write draft/summary onto it instead of returning it unchanged.", "type": "boolean" } }, "required": [ "person_name" ], "type": "object" }, "name": "create_pending_reply", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "app_url": { "type": "string" }, "created": { "description": "True when this call saved a new reply.", "type": "boolean" }, "deduplicated": { "description": "True when an unsent reply for the same thread or person was returned instead of a new one.", "type": "boolean" }, "life_state_rebuilt": { "type": "boolean" }, "matched_on": { "description": "source_thread, source_message or person when deduplicated.", "type": [ "string", "null" ] }, "message": { "type": "string" }, "person_link": { "additionalProperties": false, "description": "Whether a contact was linked. Linked only on one resolve_person match or an owned person_id.", "properties": { "candidates": { "items": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "contact_name": { "type": [ "string", "null" ] }, "matched_via": { "type": [ "string", "null" ] }, "note": { "type": "string" }, "person_id": { "type": [ "string", "null" ] }, "status": { "description": "linked, ambiguous, no_match or lookup_failed", "type": "string" } }, "required": [ "status", "person_id", "note" ], "type": "object" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "reply": { "additionalProperties": false, "description": "One reply the user owes (Inbox → Pending Replies). Dayze never sends it.", "properties": { "approved_at": { "description": "PHI-427: when the owner approved the draft and opened it in Gmail, or null. Dayze never sends; the Gmail sync closes the reply when the email goes out.", "type": [ "string", "null" ] }, "category": { "description": "personal or work", "type": "string" }, "channel": { "type": "string" }, "created_at": { "type": [ "string", "null" ] }, "draft": { "description": "The reply text saved for later.", "type": [ "string", "null" ] }, "due": { "description": "Owed now: pending, or snoozed with snooze_until passed. False while a snooze runs, and when sent or dismissed.", "type": "boolean" }, "is_private": { "description": "Always true.", "type": "boolean" }, "person_id": { "description": "Linked contact id; null when the reply is unlinked.", "type": [ "string", "null" ] }, "person_name": { "type": "string" }, "received_at": { "type": "string" }, "reply_id": { "type": "string" }, "responded_at": { "type": [ "string", "null" ] }, "snooze_until": { "type": [ "string", "null" ] }, "source": { "additionalProperties": false, "description": "The email it answers, as ids only; null when none was saved.", "properties": { "kind": { "description": "gmail, email or other", "type": "string" }, "message_id": { "type": [ "string", "null" ] }, "thread_id": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "state": { "description": "unsent (pending or snoozed), sent (the owner replied) or dismissed", "type": "string" }, "status": { "description": "pending, snoozed, responded or dismissed", "type": "string" }, "summary": { "type": [ "string", "null" ] }, "updated_at": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private: Pending Replies have no sharing setting.", "type": "string" } }, "required": [ "reply_id", "person_name", "person_id", "channel", "category", "summary", "draft", "status", "state", "due", "received_at", "source", "visibility", "is_private" ], "type": "object" }, "source_saved": { "description": "False when a source was given and could not be stored.", "type": "boolean" }, "updated": { "description": "True when an existing unsent reply was changed (update_existing).", "type": "boolean" } }, "required": [ "reply", "created", "updated", "deduplicated", "matched_on", "person_link", "source_saved", "message", "life_state_rebuilt" ], "type": "object" } }, { "description": "Add a Dayze Contacts record, birthday included (YYYY-MM-DD, YYYY-MM, YYYY, or MM-DD if year unknown); checks duplicates first. An existing contact comes back unchanged with its person_id, not_applied (the fields you sent) and a hint. request_id is optional: without one, identical calls within 15 minutes return the first result. Advertised name create_person is stable; tools/call also accepts create_contact. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "aliases": { "items": { "type": "string" }, "type": "array" }, "birthday": { "description": "YYYY-MM-DD, YYYY-MM, YYYY, or MM-DD / --MM-DD when the year is unknown (same as update_person)", "type": "string" }, "context_tags": { "items": { "type": "string" }, "type": "array" }, "email": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "is_favorite": { "type": "boolean" }, "name": { "type": "string" }, "notes": { "type": "string" }, "phone": { "type": "string" }, "relationship": { "type": "string" }, "relationships": { "items": { "type": "string" }, "type": "array" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "tier": { "enum": [ "vip", "normal", "low" ], "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "create_person", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "aliases": { "description": "Aliases saved on the new contact.", "items": { "type": "string" }, "type": "array" }, "aliases_not_saved": { "description": "Aliases not saved (another contact has them); the contact was still created.", "items": { "additionalProperties": false, "properties": { "alias": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "alias", "reason" ], "type": "object" }, "type": "array" }, "birthday": { "description": "As stored: YYYY-MM-DD. A year-unknown birthday is 1900-MM-DD (Feb 29: 1904-02-29).", "type": "string" }, "birthday_precision": { "description": "day, month, year, month_day (year unknown) or approximate.", "type": [ "string", "null" ] }, "code": { "type": "string" }, "created": { "type": "boolean" }, "created_at": { "type": "string" }, "duplicate": { "description": "True when the contact already existed: nothing on it was changed.", "type": "boolean" }, "hint": { "type": "string" }, "hygiene_flags": { "items": { "additionalProperties": true, "description": "Import hygiene skip/review flags.", "type": "object" }, "type": "array" }, "id": { "type": "string" }, "idempotent_replay": { "type": "boolean" }, "matched_via": { "type": [ "string", "null" ] }, "message": { "type": "string" }, "name": { "type": "string" }, "not_applied": { "description": "On a duplicate: the fields sent that were not saved.", "items": { "type": "string" }, "type": "array" }, "people": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "person": { "additionalProperties": true, "description": "CRM person record.", "type": "object" }, "person_id": { "description": "The new contact, or the existing one on a duplicate.", "type": "string" }, "person_ids": { "items": { "type": "string" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "role_expand": { "type": "boolean" }, "skipped": { "type": "boolean" }, "slug": { "type": [ "string", "null" ] } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "address": { "type": "string" }, "affordability": { "description": "$ | $$ | $$$ (or 1–3)", "type": "string" }, "area": { "type": "string" }, "category": { "description": "restaurant|cafe|supermarket|shop|hawker|… (aliases mapped to business_contacts.category)", "type": "string" }, "city": { "type": "string" }, "country": { "type": "string" }, "description": { "type": "string" }, "hours": { "description": "Alias for opening_hours", "type": "string" }, "hours_source": { "description": "agent | google_places | user", "type": "string" }, "idempotency_key": { "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "name": { "type": "string" }, "notes": { "type": "string" }, "opening_hours": { "type": "string" }, "phone": { "type": "string" }, "phone_numbers": { "items": { "type": "string" }, "type": "array" }, "price_level": { "description": "Alias for affordability", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "website": { "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "create_place", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "business_contact_id": { "type": "string" }, "created": { "type": "boolean" }, "duplicate": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "place": { "additionalProperties": true, "description": "Saved place card.", "type": "object" }, "place_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "event_id": { "description": "UUID of a calendar event the authenticated user owns", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "description": "Required client idempotency key; a replay returns the first result.", "type": "string" } }, "required": [ "event_id", "request_id" ], "type": "object" }, "name": "delete_event", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "deleted": { "additionalProperties": true, "description": "A Dayze calendar event record.", "type": "object" }, "event_id": { "type": "string" }, "food_deleted_ids": { "items": { "type": "string" }, "type": "array" }, "life_state_rebuilt": { "type": "boolean" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "required": [ "event_id", "deleted", "food_deleted_ids", "life_state_rebuilt" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Removes one Food Diary row the authenticated user owns and archives its mirrored calendar event. Prefer this over delete_event for meals logged via log_food. Unknown or other-user food_id returns an error. Rebuilds life_state. Reviewed and reversible: first call preview_destructive_change({ tool: \"delete_food\", arguments: { food_id } }), which stores the exact change without applying it. After the user confirms, call delete_food with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. Requires API key or OAuth with context.delete. Share tokens cannot write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "food_id": { "description": "UUID of a Food Diary row the authenticated user owns", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "food_id", "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "delete_food", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "deleted": { "additionalProperties": true, "description": "Deleted food diary row.", "type": "object" }, "event_id": { "type": [ "string", "null" ] }, "food_id": { "type": "string" }, "idempotent_replay": { "type": "boolean" }, "life_state_rebuilt": { "type": "boolean" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "required": [ "food_id", "deleted", "life_state_rebuilt" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Removes Dayze Agent memories the authenticated user owns: memory_id (or up to 50 memory_ids) from get_memories. Rows get_memories marks source \"event\" are calendar events (use delete_event). An unknown or other-user id is not found and nothing changes. Dayze chat and get_memories stop using them at once; rebuilds life_state. Reviewed and reversible: first call preview_destructive_change({ tool: \"delete_memory\", arguments: { memory_id } }), which stores the exact change without applying it. After the user confirms, call delete_memory with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. Requires API key or OAuth with context.delete. Share tokens cannot write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "memory_id": { "description": "Optional: the memory the preview named (checked against it). A preview of several memory_ids names none.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "delete_memory", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "deleted": { "items": { "additionalProperties": true, "description": "A Dayze agent memory record.", "type": "object" }, "type": "array" }, "idempotent_replay": { "type": "boolean" }, "life_state_rebuilt": { "type": "boolean" }, "memory_id": { "description": "The memory the preview named; null for a preview of several.", "type": [ "string", "null" ] }, "memory_ids": { "items": { "type": "string" }, "type": "array" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "required": [ "memory_ids", "deleted", "life_state_rebuilt" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Reviewed and reversible: first call preview_destructive_change({ tool: \"delete_moment\", arguments: { moment_id } }), which stores the exact change without applying it. After the user confirms, call delete_moment with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "moment_id": { "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "delete_moment", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "deleted": { "additionalProperties": true, "type": "object" }, "idempotent_replay": { "type": "boolean" }, "linked_impact": { "additionalProperties": true, "type": "object" }, "moment_id": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "description": "Read a Moment and linked impact and store a reviewed deletion preview; nothing is removed. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "moment_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "moment_id" ], "type": "object" }, "name": "delete_moment_preview", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "linked_impact": { "additionalProperties": true, "type": "object" }, "moment": { "additionalProperties": true, "type": "object" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_window_days": { "type": "number" } }, "type": "object" } }, { "description": "Delete one owned contact only after delete_person_preview. Preserves a complete restore snapshot for 30 days; undo with undo_contact_change using restore_id. Requires a request_id for retry-safe idempotency. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "description": "UUID of the owned contact to delete.", "type": "string" }, "preview_id": { "description": "Durable preview_id returned by delete_person_preview.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original result.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the 30-day restore window.", "type": "boolean" } }, "required": [ "person_id", "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "delete_person", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "deleted": { "type": "boolean" }, "deleted_person": { "additionalProperties": true, "description": "CRM person record.", "type": "object" }, "deleted_person_id": { "type": "string" }, "life_state_rebuilt": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "type": "string" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "description": "Create a durable, non-mutating snapshot of one owned contact and every linked record before deletion. Review the 30-day restore window, then pass preview_id to delete_person. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "description": "UUID of the owned contact to review.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "person_id" ], "type": "object" }, "name": "delete_person_preview", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "manifest": { "additionalProperties": true, "type": "object" }, "person": { "additionalProperties": true, "description": "CRM person record.", "type": "object" }, "person_id": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "required": [ "preview_id", "person_id", "restore_window_days", "reversible" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Delete a saved place card (business_contacts) by place_id / business_contact_id and return the deleted card. Reviewed and reversible: first call preview_destructive_change({ tool: \"delete_place\", arguments: { place_id } }), which stores the exact change without applying it. After the user confirms, call delete_place with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. Restore also re-links visits, events, expenses and people that pointed at the card. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "business_contact_id": { "type": "string" }, "id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "place_id": { "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "delete_place", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "business_contact_id": { "type": "string" }, "deleted": { "additionalProperties": true, "description": "Deleted saved place card row.", "type": "object" }, "idempotent_replay": { "type": "boolean" }, "place_id": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "required": [ "place_id", "business_contact_id", "deleted" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Delete one place_visits row (visit_id from get_place_visits or log_place_visit) without deleting its canonical place. Reviewed and reversible: first call preview_destructive_change({ tool: \"delete_place_visit\", arguments: { visit_id } }), which stores the exact change without applying it. After the user confirms, call delete_place_visit with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" }, "visit_id": { "description": "UUID of a place_visits row: visit_id from get_place_visits or log_place_visit.", "type": "string" } }, "required": [ "visit_id", "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "delete_place_visit", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "deleted": { "additionalProperties": true, "description": "Deleted place visit row.", "type": "object" }, "idempotent_replay": { "type": "boolean" }, "place_visit_id": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" }, "visit_id": { "type": "string" } }, "required": [ "visit_id", "place_visit_id", "deleted" ], "type": "object" } }, { "description": "Dismiss a pending entity clarification (not_person, etc.). ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "clarification_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "reason": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "clarification_id" ], "type": "object" }, "name": "dismiss_clarification", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "dismissed": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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. Returns a clear not_configured capability error if GOOGLE_PLACES_API_KEY (or GOOGLE_MAPS_API_KEY) is missing. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "business_contact_id": { "type": "string" }, "fill_empty_only": { "type": "boolean" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "place_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "type": "object" }, "name": "enrich_place_from_google", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "applied_fields": { "items": { "type": "string" }, "type": "array" }, "business_contact_id": { "type": "string" }, "capability": { "type": "string" }, "code": { "description": "Capability or enrich outcome (not_configured, no_match, …).", "type": "string" }, "enriched": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "place": { "additionalProperties": true, "description": "Saved place card.", "type": "object" }, "place_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "fact": { "description": "Alias for query", "type": "string" }, "limit": { "description": "Max evidence rows 1–20, default 8", "type": "number" }, "query": { "description": "Fact or phrase to explain", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "explain_fact", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "count": { "type": "number" }, "evidence": { "items": { "additionalProperties": true, "description": "Provenance row from learned facts, life events, or memories.", "type": "object" }, "type": "array" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "message": { "type": [ "string", "null" ] }, "query": { "type": "string" } }, "required": [ "query", "evidence", "count" ], "type": "object" } }, { "description": "Compact identity resolution candidates by person_id or query (alias/name/payment signals). Prefer over bulk get_people. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "type": "number" }, "person_id": { "type": "string" }, "query": { "type": "string" } }, "type": "object" }, "name": "find_identity_candidates", "outputSchema": { "additionalProperties": true, "properties": { "candidates": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" } }, "required": [ "candidates", "count" ], "type": "object" } }, { "description": "Fetch one asset by asset_id with signed_url for download/processing. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "asset_id": { "type": "string" }, "include_signed_url": { "type": "boolean" } }, "required": [ "asset_id" ], "type": "object" }, "name": "get_asset", "outputSchema": { "additionalProperties": true, "properties": { "asset": { "additionalProperties": true, "type": "object" }, "count": { "type": "number" } }, "required": [ "count" ], "type": "object" } }, { "description": "Read-only owner view of the 2012–2015 Berklee email archive: per-person first/last cited contact, imported message volume, explicitly stored courses/projects, and email-anchor versus name-only provenance. Optional exact course, term, and project filters. Every cited event carries an inspect_url. Volume is not closeness; silence is not interpreted. Identity-document, health, and legal records are excluded. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "course": { "description": "Exact stored course facet.", "type": "string" }, "project": { "description": "Exact stored project facet.", "type": "string" }, "term": { "description": "Exact term facet, e.g. Fall 2014.", "type": "string" } }, "type": "object" }, "name": "get_berklee_relationship_map", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "active_correction_count": { "type": "number" }, "caveats": { "items": { "type": "string" }, "type": "array" }, "correction_history_available": { "type": "boolean" }, "correction_history_count": { "type": "number" }, "excluded_sensitive_record_count": { "type": "number" }, "facets": { "additionalProperties": true, "description": "Available course, term, and project filter values.", "type": "object" }, "filters": { "additionalProperties": true, "description": "Exact course, term, and project filters applied.", "type": "object" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "people": { "items": { "additionalProperties": true, "description": "One person with linked claims, provenance, explicit unknowns, and cited event records.", "type": "object" }, "type": "array" }, "period": { "additionalProperties": true, "description": "Fixed college archive window, 2012-01-01 through 2015-12-31.", "type": "object" }, "record_count": { "type": "number" }, "truncated": { "type": "boolean" } }, "required": [ "account", "period", "filters", "people", "facets", "record_count", "excluded_sensitive_record_count", "correction_history_available", "active_correction_count", "correction_history_count", "truncated", "caveats" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_cities_visited", "outputSchema": { "additionalProperties": true, "properties": { "cities": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" } }, "required": [ "cities", "count" ], "type": "object" } }, { "description": "Private health conditions owned by the user, for subject_type self (default) or an explicitly resolved Dayze Contacts person_id. A person condition never appears in the user's self list. status: open (default), suspected, active, improving, resolved or all. condition_id returns recent check-ins and care items for the same subject. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "condition_id": { "description": "One condition, with its recent check-ins and care items.", "type": "string" }, "person_id": { "description": "Owned contact id; required for person.", "type": "string" }, "status": { "description": "open (default: every condition not resolved), one status, or all.", "enum": [ "open", "suspected", "active", "improving", "resolved", "all" ], "type": "string" }, "subject_type": { "description": "self, or person with person_id.", "enum": [ "self", "person" ], "type": "string" } }, "type": "object" }, "name": "get_conditions", "outputSchema": { "additionalProperties": true, "properties": { "condition": { "additionalProperties": true, "description": "A private condition with explicit subject_type/person_id, source and confirmation_status.", "type": "object" }, "conditions": { "items": { "additionalProperties": true, "description": "A private condition with explicit subject_type/person_id, source and confirmation_status.", "type": "object" }, "type": "array" }, "count": { "type": "number" }, "person_id": { "type": [ "string", "null" ] }, "status": { "description": "The filter applied: open, a status, or all.", "type": "string" }, "subject_type": { "description": "self or person.", "type": "string" } }, "required": [ "count" ], "type": "object" } }, { "description": "Life Context pack for one Dayze account (`account` names it — with more than one Dayze connection, say which account you are answering from): identity, pulse, people, next actions, memories, quizzes, recent consented place visits, and traced facts. Use include_*=false to omit default sections; current location and money stay opt-in. Spec: https://dayze.com/docs/life-context Records carry inspect_url (their Dayze page): cite with it, never build a link from an id; a record without one has no page (inspect_note says which). ($0.20; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "at": { "description": "ISO date-time to answer as of (default now), e.g. 2026-09-26T09:00:00+08:00.", "type": "string" }, "focus": { "description": "Optional focus hint echoed in the pack (e.g. places, travel, people)", "type": "string" }, "include_location": { "default": false, "description": "Include city/country label; never returns a precise address", "type": "boolean" }, "include_memories": { "default": true, "description": "Include recent memories.", "type": "boolean" }, "include_money": { "default": false, "description": "Include the private cashflow summary", "type": "boolean" }, "include_place_visits": { "default": true, "description": "Include recent venue visits; never a GPS trail", "type": "boolean" }, "include_places": { "default": false, "description": "Include recent canonical places.", "type": "boolean" }, "include_quiz_results": { "default": true, "description": "Include latest quiz results.", "type": "boolean" }, "include_relationships": { "default": true, "description": "Include people and relationship context.", "type": "boolean" }, "include_trips": { "default": false, "description": "Include recent/upcoming trips from completed travel history", "type": "boolean" }, "q": { "description": "Alias for query.", "type": "string" }, "query": { "description": "Question that guides facts and memories.", "type": "string" }, "timezone": { "description": "IANA time zone for today (default: where the user is now, else their home zone).", "type": "string" } }, "type": "object" }, "name": "get_context_pack", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "error": { "description": "Present when life state is unavailable.", "type": "string" }, "facts": { "description": "Question-aware personal facts, in selection order.", "items": { "additionalProperties": true, "description": "One personal fact chosen for the question. Same ids as Dayze chat.", "properties": { "age_label": { "type": [ "string", "null" ] }, "confidence": { "type": [ "number", "null" ] }, "evidence_ref": { "type": [ "string", "null" ] }, "id": { "description": "Table-qualified record id, e.g. people:<uuid> or events:<id>.", "type": "string" }, "inspect_url": { "description": "PHI-434: the Dayze page for this record, when it has one. Cite with it.", "type": "string" }, "kind": { "type": "string" }, "last_confirmed_at": { "type": [ "string", "null" ] }, "observed_at": { "type": [ "string", "null" ] }, "provenance": { "description": "stated, observed, inferred or imported.", "type": "string" }, "source": { "type": "string" }, "source_label": { "description": "Where the fact came from, e.g. \"from Contacts\".", "type": "string" }, "source_ref": { "type": [ "string", "null" ] }, "state": { "description": "current, planned, completed, stale (age_label set) or disputed.", "type": "string" }, "text": { "type": "string" }, "tier": { "description": "entity, join, static, dynamic or vector.", "type": "string" } }, "required": [ "id", "kind", "text", "state", "source_label" ], "type": "object" }, "type": "array" }, "focus": { "type": [ "string", "null" ] }, "generated_at": { "type": "string" }, "identity": { "additionalProperties": true, "type": "object" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "known_facts": { "items": { "additionalProperties": true, "description": "A correctable contact, learned fact or memory from the facts slice: ref (in trace.fact_ids), kind, text, source. Disputed or no-longer-true facts are left out.", "type": "object" }, "type": "array" }, "memories": { "additionalProperties": true, "type": "object" }, "ok": { "type": "boolean" }, "omitted": { "description": "Facts left out, counted by reason.", "items": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "kind": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "reason", "kind", "count" ], "type": "object" }, "type": "array" }, "partial": { "type": "boolean" }, "place_visits": { "items": { "additionalProperties": true, "description": "Recent place visit.", "type": "object" }, "type": "array" }, "places": { "additionalProperties": true, "description": "Recent canonical places when include_places=true.", "type": "object" }, "preferred_tool": { "type": "string" }, "protocol": { "additionalProperties": true, "description": "Life Context metadata.", "type": "object" }, "pulse": { "additionalProperties": true, "type": "object" }, "query": { "type": [ "string", "null" ] }, "redaction": { "additionalProperties": true, "description": "pii redacted|raw; sensitive_topics the caller may receive; counts of sensitive trackers / memories withheld.", "type": "object" }, "sections": { "additionalProperties": true, "description": "Per-section ok/error status for partial packs.", "type": "object" }, "trace": { "additionalProperties": true, "description": "Which facts were supplied and why. fact_ids equals facts[].id.", "properties": { "assembler": { "type": "string" }, "budget_tokens": { "type": "number" }, "caller": { "type": "string" }, "fact_ids": { "items": { "type": "string" }, "type": "array" }, "question": { "type": "string" }, "scope_key": { "type": "string" }, "selection_notes": { "items": { "type": "string" }, "type": "array" }, "used_tokens": { "type": "number" } }, "required": [ "fact_ids", "assembler" ], "type": "object" }, "trips": { "additionalProperties": true, "description": "Recent trips when include_trips=true.", "type": "object" }, "whats_next": { "additionalProperties": true, "type": "object" }, "who_matters": { "additionalProperties": true, "type": "object" } }, "required": [ "protocol", "preferred_tool", "identity", "pulse", "whats_next" ], "type": "object" } }, { "description": "Canonical countries from completed trips (not other people travel). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "include_residence": { "type": "boolean" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_countries_visited", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "countries": { "items": { "type": "string" }, "type": "array" } }, "required": [ "countries", "count" ], "type": "object" } }, { "description": "Permitted assertion states for a person (flagged life-graph; off by default). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "known_at": { "type": "string" }, "people_id": { "description": "CRM people.id UUID", "type": "string" }, "person_id": { "description": "Alias for people_id", "type": "string" }, "predicates": { "items": { "type": "string" }, "type": "array" }, "valid_at": { "type": "string" } }, "type": "object" }, "name": "get_current_states", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "enabled": { "type": "boolean" }, "states": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "List assets linked to an entity (role, signed_url, versions). entity_type inventory_item → inventory. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "asset_type": { "type": "string" }, "entity_id": { "type": "string" }, "entity_type": { "type": "string" } }, "required": [ "entity_type", "entity_id" ], "type": "object" }, "name": "get_entity_assets", "outputSchema": { "additionalProperties": true, "properties": { "assets": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" } }, "required": [ "count" ], "type": "object" } }, { "description": "List graph edges for an event, trip, place, or person. Each link has a confirmation: explicit | pending | confirmed | rejected. A rejected link is listed only as a record of the decision: it is not a relationship, and every other read leaves it out. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "entity_id": { "type": "string" }, "entity_type": { "type": "string" } }, "required": [ "entity_type", "entity_id" ], "type": "object" }, "name": "get_entity_links", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "links": { "items": { "additionalProperties": true, "description": "A stored life_entity_links row plus its derived confirmation (explicit | pending | confirmed | rejected). A rejected link is kept only as a record of the decision and is not a relationship.", "type": "object" }, "type": "array" }, "message": { "type": [ "string", "null" ] } }, "required": [ "count" ], "type": "object" } }, { "description": "Inspect an event fact from a saved Dayze answer before correcting it. Requires calendar read and travel details access. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "message_id": { "description": "Saved assistant answer message UUID.", "type": "string" }, "source_ref": { "description": "events:<id> or event_people:<id> from that answer.", "type": "string" } }, "required": [ "message_id", "source_ref" ], "type": "object" }, "name": "get_event_fact_source", "outputSchema": { "additionalProperties": true, "properties": { "evidence": { "additionalProperties": true, "type": "object" }, "fact": { "additionalProperties": true, "type": "object" }, "history": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "ok": { "type": "boolean" }, "record": { "additionalProperties": true, "type": "object" }, "status": { "additionalProperties": true, "type": [ "object", "null" ] } }, "required": [ "ok" ], "type": "object" } }, { "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. Records carry inspect_url (their Dayze page): cite with it, never build a link from an id; a record without one has no page (inspect_note says which). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "at": { "description": "ISO date-time to answer as of (default now), e.g. 2026-09-26T09:00:00+08:00.", "type": "string" }, "cursor": { "type": "string" }, "date_from": { "description": "Alias for from.", "type": "string" }, "date_to": { "description": "Alias for to.", "type": "string" }, "event_kinds": { "description": "Alias for kinds.", "items": { "type": "string" }, "type": "array" }, "from": { "description": "Inclusive YYYY-MM-DD (preferred over range)", "type": "string" }, "include_archived": { "type": "boolean" }, "include_browsing": { "description": "Include extension \"Browsed domain · Xm\" auto-events (default false)", "type": "boolean" }, "include_calendar_blocks": { "description": "Include Focus Time / calendar_block rows (default false)", "type": "boolean" }, "kinds": { "description": "Filter by event_kind: life_event, calendar_block, todo, goal, travel_segment, food_log, health_record, transaction, media_log, work, family, personal. Alias \"food\" (also meal/drink/snack) matches the displayed Food category: food_log rows plus Meal/Drink/Snack life_events. total/has_more count only matching rows.", "items": { "type": "string" }, "type": "array" }, "limit": { "maximum": 500, "minimum": 1, "type": "number" }, "offset": { "description": "Skip this many matching rows of a new snapshot (a cursor carries its own).", "type": "number" }, "query": { "description": "Literal substring in title, description or location.", "maxLength": 300, "type": "string" }, "range": { "enum": [ "today", "week", "month", "year", "decade", "all" ], "type": "string" }, "redact_pii": { "description": "true: redact contact details, card and account numbers and secrets in description, location and scoreboard, even where this connection may see them. Never unredacts: without travel_secrets:read they are always redacted.", "type": "boolean" }, "timezone": { "description": "IANA time zone for today (default: where the user is now, else their home zone).", "type": "string" }, "to": { "description": "Inclusive YYYY-MM-DD", "type": "string" } }, "type": "object" }, "name": "get_events", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "cap": { "type": "number" }, "events": { "items": { "additionalProperties": true, "description": "A Dayze calendar event record.", "type": "object" }, "type": "array" }, "expires_at": { "type": "string" }, "from": { "description": "Inclusive YYYY-MM-DD lower bound; null for all records.", "type": [ "string", "null" ] }, "has_more": { "type": "boolean" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "next_cursor": { "type": [ "string", "null" ] }, "ordering": { "type": "string" }, "range": { "type": "string" }, "server_time": { "type": "string" }, "snapshot_at": { "type": "string" }, "snapshot_id": { "type": "string" }, "timezone": { "description": "Resolved timezone used for this event window and as fallback for rows without one.", "type": "string" }, "to": { "description": "Inclusive YYYY-MM-DD upper bound; null for all records.", "type": [ "string", "null" ] }, "total": { "type": "number" }, "truncated": { "type": "boolean" } }, "required": [ "events", "timezone", "range", "from", "to", "cap", "truncated" ], "type": "object" } }, { "description": "Authenticated user cashflow summary: spend, income, net, and top spend categories. Requires OAuth or a supported scoped credential. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "period": { "description": "Summary window. Default month.", "enum": [ "month", "year" ], "type": "string" } }, "type": "object" }, "name": "get_expenses", "outputSchema": { "additionalProperties": true, "properties": { "by_currency": { "items": { "additionalProperties": true, "description": "Per-currency spend/income/net — never FX-converted.", "type": "object" }, "type": "array" }, "count": { "type": "number" }, "currency": { "type": [ "string", "null" ] }, "income": { "type": "number" }, "multi_currency": { "type": "boolean" }, "net": { "type": "number" }, "period": { "enum": [ "month", "year" ], "type": "string" }, "period_days": { "type": "number" }, "spend": { "type": "number" }, "top_categories": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "usd": { "additionalProperties": true, "description": "Totals converted to USD (approximate FX).", "type": "object" } }, "required": [ "period" ], "type": "object" } }, { "description": "Structured fundraising CRM: source-backed roles, sector and stage fit, pipeline and existing graph intro paths. Use for who to approach for a round. Returns canonical person IDs. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "sector": { "type": "string" }, "stage": { "type": "string" }, "status": { "enum": [ "research", "intro_requested", "contacted", "meeting", "diligence", "passed", "committed" ], "type": "string" }, "strength": { "maximum": 1, "minimum": 0, "type": "number" }, "view": { "enum": [ "investors", "intro_sources" ], "type": "string" } }, "type": "object" }, "name": "get_fundraising_candidates", "outputSchema": { "additionalProperties": true, "properties": { "candidates": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" } }, "required": [ "count" ], "type": "object" } }, { "description": "Read private health trend points for self (default), or for an explicit person subject through condition_id. Effective points only by default; include_superseded returns corrections. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "condition_id": { "description": "From get_conditions or create_condition.", "type": "string" }, "include_superseded": { "description": "Default false. True includes correction history.", "type": "boolean" }, "kind": { "enum": [ "symptom", "treatment", "energy", "sleep" ], "type": "string" }, "limit": { "description": "Default 100.", "maximum": 200, "minimum": 1, "type": "integer" }, "observed_from": { "description": "Inclusive ISO timestamp.", "type": "string" }, "observed_to": { "description": "Inclusive ISO timestamp.", "type": "string" }, "person_id": { "description": "Owned contact id; required for person.", "type": "string" }, "subject_type": { "description": "self, or person with person_id.", "enum": [ "self", "person" ], "type": "string" } }, "type": "object" }, "name": "get_health_trends", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "include_superseded": { "type": "boolean" }, "person_id": { "type": [ "string", "null" ] }, "subject_type": { "description": "self or person.", "type": "string" }, "trend_points": { "items": { "additionalProperties": true, "description": "A trend point with confidence, source and correction lineage.", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Bounded graph read over life_updates (PHI-54/61): traverse interaction → person/event/expense/place with source/confidence on every hop. When life_update edges are missing, projects hops from CRM interactions, event_people, and expense person FKs (PHI-100). Prefer for “who was I with at X?”, “when am I meeting Y next?”, “how much at Z?”. 93-day default window. Pass person_name, place_query, or ids. Records carry inspect_url (their Dayze page): cite with it, never build a link from an id; a record without one has no page (inspect_note says which). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "event_id": { "type": "string" }, "expense_id": { "type": "string" }, "from": { "description": "Inclusive YYYY-MM-DD", "type": "string" }, "limit": { "description": "Max 1–50, default 25", "type": "number" }, "person_id": { "type": "string" }, "person_name": { "type": "string" }, "place_id": { "type": "string" }, "place_query": { "description": "Venue/merchant substring", "type": "string" }, "to": { "description": "Inclusive YYYY-MM-DD", "type": "string" } }, "type": "object" }, "name": "get_interactions", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "degraded": { "type": "boolean" }, "error": { "type": [ "string", "null" ] }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "interactions": { "items": { "additionalProperties": true, "description": "life_update row with hops + sources provenance.", "type": "object" }, "type": "array" }, "no_data": { "type": "boolean" }, "ok": { "type": "boolean" }, "truncated": { "type": "boolean" }, "window": { "additionalProperties": true, "description": "Bounded from/to lookback window.", "type": "object" } }, "type": "object" } }, { "description": "Browse the user's owned Inventory: filter by category, status or search text (name, brand, model, notes, reference number). Archived and no-longer-owned items only with include_archived. Items with specs carry capability_summary and state_freshness; each item has photo_count and cover_url. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "category": { "description": "e.g. electronics, watches, clothing", "type": "string" }, "include_archived": { "description": "Include archived and no-longer-owned items.", "type": "boolean" }, "include_sensitive": { "description": "API keys only: include stored identifiers. Ignored for connectors without pii:read.", "type": "boolean" }, "limit": { "description": "1-200, default 50", "type": "number" }, "offset": { "type": "number" }, "search": { "description": "Match name, brand, model, notes or reference number.", "type": "string" }, "sort_by": { "enum": [ "created_at", "name", "value" ], "type": "string" }, "status": { "enum": [ "wishlist", "ordered", "owned", "listed_for_sale", "sold", "returned", "lost", "disposed", "donated", "archived" ], "type": "string" } }, "type": "object" }, "name": "get_inventory", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "items": { "items": { "additionalProperties": true, "description": "Inventory item record. With specs: spec_template, specs, state (a timestamped snapshot), state_freshness and capability_summary.", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "One owned Inventory item in full: specs and spec_template, state with state_freshness (current, recent or stale for each key; check with the user before relying on stale state), capability_summary (one line to plan from, e.g. \"Can my computer run this?\"), valuations, linked people and photos. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "inventory_id": { "description": "The item id from add_inventory_item, get_inventory or search_inventory.", "type": "string" } }, "required": [ "inventory_id" ], "type": "object" }, "name": "get_inventory_item", "outputSchema": { "additionalProperties": true, "properties": { "assets": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "capability_summary": { "description": "One line to plan from: the item, its stored specs, and its last observed state with its date.", "type": "string" }, "item": { "additionalProperties": true, "description": "Inventory item record. With specs: spec_template, specs, state (a timestamped snapshot), state_freshness and capability_summary.", "type": "object" }, "people": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "people_links": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "valuations": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Chronological valuation history for one owned Inventory item. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "inventory_id": { "description": "The item id from add_inventory_item, get_inventory or search_inventory.", "type": "string" } }, "required": [ "inventory_id" ], "type": "object" }, "name": "get_inventory_valuations", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "inventory_id": { "type": "string" }, "valuations": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Get a snapshot of the authenticated user's current life context (identity, today/upcoming events, pulse, trackers, plus a question-aware facts slice with trace). Relationships and memories are included by default; pass include_*=false to omit. social_edges is capped at the highest-confidence 40 — check social_edges_truncated / social_edges_total. 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)", "inputSchema": { "additionalProperties": false, "properties": { "at": { "description": "ISO date-time to answer as of (default now), e.g. 2026-09-26T09:00:00+08:00.", "type": "string" }, "include_location": { "default": false, "description": "Include city/country label; never returns a precise address", "type": "boolean" }, "include_memories": { "default": true, "description": "Include recent memory summaries (default true; set false to omit)", "type": "boolean" }, "include_money": { "default": false, "description": "Include money facts in the question-aware facts slice (opt-in; the grant must allow financial details).", "type": "boolean" }, "include_relationships": { "default": true, "description": "Include inner-circle and relationship summaries (default true; set false to omit)", "type": "boolean" }, "q": { "description": "Alias for query.", "type": "string" }, "query": { "description": "Optional question. Drives the question-aware facts slice (family, names, dates, merchants) returned in facts/trace.", "maxLength": 500, "type": "string" }, "timezone": { "description": "IANA time zone for today (default: where the user is now, else their home zone).", "type": "string" } }, "type": "object" }, "name": "get_life_context", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "active_trackers": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "energy_score": { "type": [ "number", "null" ] }, "facts": { "description": "Question-aware personal facts, in selection order.", "items": { "additionalProperties": true, "description": "One personal fact chosen for the question. Same ids as Dayze chat.", "properties": { "age_label": { "type": [ "string", "null" ] }, "confidence": { "type": [ "number", "null" ] }, "evidence_ref": { "type": [ "string", "null" ] }, "id": { "description": "Table-qualified record id, e.g. people:<uuid> or events:<id>.", "type": "string" }, "inspect_url": { "description": "PHI-434: the Dayze page for this record, when it has one. Cite with it.", "type": "string" }, "kind": { "type": "string" }, "last_confirmed_at": { "type": [ "string", "null" ] }, "observed_at": { "type": [ "string", "null" ] }, "provenance": { "description": "stated, observed, inferred or imported.", "type": "string" }, "source": { "type": "string" }, "source_label": { "description": "Where the fact came from, e.g. \"from Contacts\".", "type": "string" }, "source_ref": { "type": [ "string", "null" ] }, "state": { "description": "current, planned, completed, stale (age_label set) or disputed.", "type": "string" }, "text": { "type": "string" }, "tier": { "description": "entity, join, static, dynamic or vector.", "type": "string" } }, "required": [ "id", "kind", "text", "state", "source_label" ], "type": "object" }, "type": "array" }, "identity": { "additionalProperties": true, "description": "Account identity and timezone.", "type": "object" }, "inner_circle": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "mood_score": { "type": [ "number", "null" ] }, "omitted": { "description": "Facts left out, counted by reason.", "items": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "kind": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "reason", "kind", "count" ], "type": "object" }, "type": "array" }, "partial": { "description": "True when the facts slice is incomplete; never read a missing fact as \"none on file\".", "type": "boolean" }, "pending_responses": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "pending_responses_count": { "type": "number" }, "pulse_streak": { "type": [ "number", "null" ] }, "recent_memories": { "items": { "additionalProperties": true, "description": "A Dayze agent memory record.", "type": "object" }, "type": "array" }, "redaction": { "additionalProperties": true, "description": "pii redacted|raw; sensitive_topics the caller may receive; counts of sensitive trackers / memories withheld.", "type": "object" }, "relationship_health": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "sections": { "additionalProperties": true, "description": "sections.harness: ok, or error (HARNESS_FAILED / HARNESS_DEGRADED with failed_sources) when facts may be missing.", "type": "object" }, "social_edges": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "social_edges_limit": { "description": "Max edges returned in social_edges.", "type": "number" }, "social_edges_total": { "description": "person_connections rows on file; null when unknown.", "type": [ "number", "null" ] }, "social_edges_truncated": { "description": "True when more edges exist than social_edges lists.", "type": "boolean" }, "today_events": { "items": { "additionalProperties": true, "description": "A Dayze calendar event record.", "type": "object" }, "type": "array" }, "trace": { "additionalProperties": true, "description": "Which facts were supplied and why. fact_ids equals facts[].id.", "properties": { "assembler": { "type": "string" }, "budget_tokens": { "type": "number" }, "caller": { "type": "string" }, "fact_ids": { "items": { "type": "string" }, "type": "array" }, "question": { "type": "string" }, "scope_key": { "type": "string" }, "selection_notes": { "items": { "type": "string" }, "type": "array" }, "used_tokens": { "type": "number" } }, "required": [ "fact_ids", "assembler" ], "type": "object" }, "upcoming_events": { "items": { "additionalProperties": true, "description": "A Dayze calendar event record.", "type": "object" }, "type": "array" } }, "required": [ "identity", "today_events", "upcoming_events" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "event_links_limit": { "default": 25, "type": "number" }, "full": { "default": false, "description": "Include additional people by last interaction, up to max_people", "type": "boolean" }, "include_event_links": { "default": false, "type": "boolean" }, "max_people": { "default": 80, "type": "number" } }, "type": "object" }, "name": "get_life_graph", "outputSchema": { "additionalProperties": false, "properties": { "edge_count": { "type": "number" }, "edges": { "items": { "additionalProperties": true, "description": "A relationship edge between people.", "type": "object" }, "type": "array" }, "event_people_links": { "items": { "additionalProperties": true, "description": "A recent event-to-person link.", "type": "object" }, "type": "array" }, "hot": { "type": "boolean" }, "max_people_requested": { "type": "number" }, "node_count": { "type": "number" }, "nodes": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" } }, "required": [ "hot", "node_count", "edge_count", "nodes", "edges" ], "type": "object" } }, { "description": "Likely current or at-time place with confidence and provenance. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "at": { "description": "ISO timestamp", "type": "string" } }, "type": "object" }, "name": "get_location_context", "outputSchema": { "additionalProperties": true, "properties": { "at": { "type": [ "string", "null" ] }, "confidence": { "type": "number" }, "place": { "additionalProperties": true, "description": "Canonical place record.", "type": [ "object", "null" ] }, "provenance": { "items": { "type": "string" }, "type": "array" } }, "type": "object" } }, { "description": "Normalized visit history (venue-level by default). Merges GPS location_visits + place_visits (MCP/Uber digs). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "city": { "type": "string" }, "country": { "type": "string" }, "from": { "type": "string" }, "place": { "type": "string" }, "precision": { "enum": [ "point", "venue", "neighborhood", "city", "country" ], "type": "string" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_location_history", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "visits": { "items": { "additionalProperties": true, "description": "Confirmed same-day outing with visit_date and evidence_refs. A typed place_visits row is primary and carries visit_id (= id); linked event/GPS evidence is reconciled without increasing the count.", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "focus": { "description": "Ranks memories toward this focus. next_actions (or current, now) returns only up to 4 next-action memories.", "type": "string" }, "limit": { "description": "Max rows 1–50, default 20", "type": "number" }, "q": { "description": "Alias for query.", "type": "string" }, "query": { "description": "Semantic focus (optional)", "type": "string" } }, "type": "object" }, "name": "get_memories", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "events": { "items": { "additionalProperties": true, "description": "A Dayze calendar event record.", "type": "object" }, "type": "array" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "memories": { "items": { "additionalProperties": true, "description": "A Dayze agent memory record.", "type": "object" }, "type": "array" }, "mode": { "enum": [ "semantic", "keyword", "blended", "chronological" ], "type": "string" }, "people": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "required": [ "mode", "memories" ], "type": "object" } }, { "description": "List owned Moments by date, title, type, tag, person or place. Stable moment_id and inspect_url for each. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "YYYY-MM-DD inclusive", "type": "string" }, "limit": { "type": "integer" }, "moment_type": { "type": "string" }, "offset": { "type": "integer" }, "person_id": { "type": "string" }, "place": { "type": "string" }, "tag": { "type": "string" }, "title": { "type": "string" }, "to": { "description": "YYYY-MM-DD inclusive", "type": "string" } }, "required": [], "type": "object" }, "name": "get_moments", "outputSchema": { "additionalProperties": false, "properties": { "limit": { "type": "number" }, "moments": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "next_offset": { "type": [ "number", "null" ] }, "offset": { "type": "number" } }, "required": [ "moments", "next_offset", "limit", "offset" ], "type": "object" } }, { "description": "Same as get_person_transactions: authenticated user ↔ one contact via individual expense rows. Requires context.read and financial_details:read. Prefer get_person_transactions; this alias exists for agent discoverability. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "Inclusive YYYY-MM-DD filter", "type": "string" }, "limit": { "description": "Max rows 1–200, default 50", "type": "number" }, "name": { "description": "Surface name if person_id unknown", "type": "string" }, "person_id": { "description": "CRM people.id", "type": "string" }, "to": { "description": "Inclusive YYYY-MM-DD filter", "type": "string" } }, "type": "object" }, "name": "get_money_between_people", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "entries": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "model": { "type": "string" }, "name": { "type": "string" }, "person_id": { "type": "string" }, "person_inspect_url": { "description": "The contact's Dayze page.", "type": "string" }, "totals": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Read evidence-backed travel legs with their origin, destination, timing, mode, provider, distance, and linked expense. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "limit": { "type": "number" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_movements", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "movements": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Pending Replies (Inbox): the replies the user owes ('who do I owe a reply?'), newest first, or one by reply_id. status: unsent (default; pending + snoozed), sent, dismissed, all. Filter by person_name or person_id. Each reply has reply_id, person_name, person_id (null when unlinked), draft, summary, channel, category, source ids, status, state (unsent | sent | dismissed) and due (owed now; false while snoozed until snooze_until). Read-only. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "description": "1-200, default 50.", "type": "number" }, "person_id": { "type": "string" }, "person_name": { "type": "string" }, "reply_id": { "description": "Read one reply (ignores the filters).", "type": "string" }, "status": { "enum": [ "unsent", "sent", "dismissed", "all" ], "type": "string" } }, "type": "object" }, "name": "get_pending_replies", "outputSchema": { "additionalProperties": false, "properties": { "app_url": { "type": "string" }, "count": { "type": "number" }, "has_more": { "type": "boolean" }, "pending_replies": { "items": { "additionalProperties": false, "description": "One reply the user owes (Inbox → Pending Replies). Dayze never sends it.", "properties": { "approved_at": { "description": "PHI-427: when the owner approved the draft and opened it in Gmail, or null. Dayze never sends; the Gmail sync closes the reply when the email goes out.", "type": [ "string", "null" ] }, "category": { "description": "personal or work", "type": "string" }, "channel": { "type": "string" }, "created_at": { "type": [ "string", "null" ] }, "draft": { "description": "The reply text saved for later.", "type": [ "string", "null" ] }, "due": { "description": "Owed now: pending, or snoozed with snooze_until passed. False while a snooze runs, and when sent or dismissed.", "type": "boolean" }, "is_private": { "description": "Always true.", "type": "boolean" }, "person_id": { "description": "Linked contact id; null when the reply is unlinked.", "type": [ "string", "null" ] }, "person_name": { "type": "string" }, "received_at": { "type": "string" }, "reply_id": { "type": "string" }, "responded_at": { "type": [ "string", "null" ] }, "snooze_until": { "type": [ "string", "null" ] }, "source": { "additionalProperties": false, "description": "The email it answers, as ids only; null when none was saved.", "properties": { "kind": { "description": "gmail, email or other", "type": "string" }, "message_id": { "type": [ "string", "null" ] }, "thread_id": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "state": { "description": "unsent (pending or snoozed), sent (the owner replied) or dismissed", "type": "string" }, "status": { "description": "pending, snoozed, responded or dismissed", "type": "string" }, "summary": { "type": [ "string", "null" ] }, "updated_at": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private: Pending Replies have no sharing setting.", "type": "string" } }, "required": [ "reply_id", "person_name", "person_id", "channel", "category", "summary", "draft", "status", "state", "due", "received_at", "source", "visibility", "is_private" ], "type": "object" }, "type": "array" }, "status": { "description": "The filter applied: unsent, sent, dismissed or all.", "type": "string" } }, "required": [ "pending_replies", "count", "has_more", "status" ], "type": "object" } }, { "description": "List or search the authenticated user's Dayze Contacts (private CRM; table people). query matches literal substrings of name, slug, email, occupation or context tags (no fuzzy fallback). context_tags requires all exact tags; occupation requires a substring. These filters combine with query and search the full owned contact set before pagination. Set wealth_category=reviewed for only explicitly owner-reviewed wealth-category contacts: returns id and name only, even with include_notes=true. That mode searches names only, uses offset rather than cursor, and cannot combine with occupation or context_tags. Without it, each contact includes avatar_url, photo_count, and has_photos; use get_person_photos(person_id) for the full gallery. With financial_details:read, net_worth_assessment includes category, scope, estimated range (when supported), confidence, methodology, caveat, dated source URLs, and review date. Context-only and insufficient-evidence assessments carry no personal number. birthday_precision says which parts of birthday are real: month_day means the year is unknown (stored 1900, or 1904 for Feb 29), year means only the year. 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)", "inputSchema": { "additionalProperties": false, "properties": { "context_tags": { "description": "Require every exact context tag, case insensitive (for example [\"model\"]). Cannot combine with wealth_category.", "items": { "type": "string" }, "type": "array" }, "cursor": { "type": "string" }, "include_notes": { "description": "When true, include notes (server-redacted). Default false.", "type": "boolean" }, "limit": { "description": "Page size (default 100, max 500)", "type": "number" }, "occupation": { "description": "Require this literal substring in the occupation field. Cannot combine with wealth_category.", "type": "string" }, "offset": { "description": "Skip N rows (default 0)", "type": "number" }, "query": { "description": "Literal substring search over name, slug, email, occupation and context tags; with wealth_category=reviewed, name only. No fuzzy fallback.", "type": "string" }, "wealth_category": { "description": "Only explicitly owner-reviewed wealth-category contacts. Returns id and name only; cannot combine with occupation or context_tags.", "enum": [ "reviewed" ], "type": "string" } }, "type": "object" }, "name": "get_people", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "context_tags": { "items": { "type": "string" }, "type": "array" }, "expires_at": { "type": "string" }, "has_more": { "type": "boolean" }, "include_notes": { "type": "boolean" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "limit": { "type": "number" }, "match_mode": { "description": "unfiltered, structured or literal_substring; get_people has no fuzzy fallback.", "type": "string" }, "next_cursor": { "type": [ "string", "null" ] }, "no_match": { "description": "True when a query or profession filter matched no contacts.", "type": "boolean" }, "occupation": { "type": [ "string", "null" ] }, "offset": { "type": "number" }, "ordering": { "type": "string" }, "people": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "query": { "type": [ "string", "null" ] }, "scan_limited": { "description": "Legacy compatibility field; filtered database searches return false.", "type": "boolean" }, "server_time": { "type": "string" }, "snapshot_at": { "type": "string" }, "snapshot_id": { "type": "string" }, "total": { "type": "number" }, "truncated": { "type": "boolean" }, "wealth_category": { "description": "reviewed when the result is restricted to explicitly reviewed wealth-category contacts.", "type": "string" } }, "required": [ "people", "total", "limit", "offset", "truncated" ], "type": "object" } }, { "description": "Fetch start_people_cleanup result by cleanup_id. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "cleanup_id": { "type": "string" } }, "required": [ "cleanup_id" ], "type": "object" }, "name": "get_people_cleanup_result", "outputSchema": { "additionalProperties": true, "properties": { "cleanup_id": { "type": "string" }, "status": { "type": "string" } }, "required": [ "cleanup_id", "status" ], "type": "object" } }, { "description": "Alias of get_person_connections — list graph edges for one CRM person. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "person_id": { "type": "string" } }, "required": [ "person_id" ], "type": "object" }, "name": "get_people_links", "outputSchema": { "additionalProperties": true, "properties": { "connections": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" }, "person": { "additionalProperties": true, "type": "object" } }, "required": [ "count" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "name": { "description": "Surface name if person_id unknown", "type": "string" }, "person_id": { "description": "CRM people.id", "type": "string" } }, "type": "object" }, "name": "get_person_aliases", "outputSchema": { "additionalProperties": true, "properties": { "aliases": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "candidates": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "name": { "type": [ "string", "null" ] }, "person_id": { "type": [ "string", "null" ] } }, "type": "object" } }, { "description": "List graph edges for one CRM person. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "person_id": { "type": "string" } }, "required": [ "person_id" ], "type": "object" }, "name": "get_person_connections", "outputSchema": { "additionalProperties": true, "properties": { "connections": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" }, "person": { "additionalProperties": true, "type": "object" } }, "required": [ "count" ], "type": "object" } }, { "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. Records carry inspect_url (their Dayze page): cite with it, never build a link from an id; a record without one has no page (inspect_note says which). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "Inclusive YYYY-MM-DD filter", "type": "string" }, "kind": { "description": "Optional filter: meeting, visit, gift, stayed_over, met, …", "type": "string" }, "limit": { "description": "Max rows 1–100, default 40", "type": "number" }, "name": { "type": "string" }, "person_id": { "type": "string" }, "to": { "description": "Inclusive YYYY-MM-DD filter", "type": "string" } }, "type": "object" }, "name": "get_person_interactions", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "count": { "type": "number" }, "events": { "items": { "additionalProperties": true, "description": "Interaction or co-tagged event row.", "type": "object" }, "type": "array" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "matched_via": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "person_id": { "type": "string" }, "person_inspect_url": { "description": "The contact's Dayze page.", "type": "string" }, "truncated": { "type": "boolean" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "include_notes": { "description": "When true, include center.notes (server-redacted). Default false.", "type": "boolean" }, "person_id": { "description": "UUID", "type": "string" } }, "required": [ "person_id" ], "type": "object" }, "name": "get_person_neighborhood", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "center": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "connection_count": { "type": "number" }, "connections": { "items": { "additionalProperties": true, "description": "A declared connection to the center person.", "type": "object" }, "type": "array" }, "include_notes": { "type": "boolean" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" } }, "required": [ "center", "connection_count", "connections" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "person_id": { "type": "string" } }, "required": [ "person_id" ], "type": "object" }, "name": "get_person_photos", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "person_id": { "type": "string" }, "photos": { "items": { "additionalProperties": true, "description": "Photo or entity asset metadata.", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Me↔contact money ledger from individual expenses (paid_to_person_id / income_from_person_id). Requires context.read and financial_details:read. Pass person_id or name. Returns entries + per-currency totals. Reuses existing expenses — no parallel ledger table. Records carry inspect_url (their Dayze page): cite with it, never build a link from an id; a record without one has no page (inspect_note says which). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "Inclusive YYYY-MM-DD filter", "type": "string" }, "limit": { "description": "Max rows 1–200, default 50", "type": "number" }, "name": { "description": "Surface name if person_id unknown", "type": "string" }, "person_id": { "description": "CRM people.id", "type": "string" }, "to": { "description": "Inclusive YYYY-MM-DD filter", "type": "string" } }, "type": "object" }, "name": "get_person_transactions", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "count": { "type": "number" }, "entries": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "name": { "type": "string" }, "person_id": { "type": "string" }, "person_inspect_url": { "description": "The contact's Dayze page.", "type": "string" }, "totals": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Single photo metadata + secure URL. Returns inline MCP image attachment when available. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "photo_id": { "type": "string" } }, "required": [ "photo_id" ], "type": "object" }, "name": "get_photo", "outputSchema": { "additionalProperties": true, "properties": { "photo": { "additionalProperties": true, "description": "Photo or entity asset metadata.", "type": "object" } }, "type": "object" } }, { "description": "Assets linked to an event. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "event_id": { "type": "string" } }, "required": [ "event_id" ], "type": "object" }, "name": "get_photos_for_event", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "event_id": { "type": "string" }, "photos": { "items": { "additionalProperties": true, "description": "Photo or entity asset metadata.", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Assets linked to a canonical place. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "place_id": { "type": "string" } }, "required": [ "place_id" ], "type": "object" }, "name": "get_photos_for_place", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "photos": { "items": { "additionalProperties": true, "description": "Photo or entity asset metadata.", "type": "object" }, "type": "array" }, "place_id": { "type": "string" } }, "required": [ "count" ], "type": "object" } }, { "description": "Fetch one saved place card (business_contacts) by place_id — address, opening hours, affordability, notes. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "business_contact_id": { "type": "string" }, "id": { "type": "string" }, "place_id": { "type": "string" } }, "type": "object" }, "name": "get_place", "outputSchema": { "additionalProperties": true, "properties": { "business_contact_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "place": { "additionalProperties": true, "description": "Saved place card.", "type": "object" }, "place_id": { "type": "string" } }, "type": "object" } }, { "description": "Count confirmed outings at a venue. Resolves aliases first; typed PlaceVisits are primary, and past non-todo events/GPS evidence for the canonical place are reconciled by day. count excludes plans, todos, and separately labelled reconstructed_candidates. Returns visit dates and evidence refs. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "person_ids": { "items": { "type": "string" }, "type": "array" }, "place": { "type": "string" }, "place_id": { "type": "string" }, "to": { "type": "string" } }, "required": [ "place" ], "type": "object" }, "name": "get_place_visits", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "confidence": { "type": "number" }, "confirmed_count": { "type": "number" }, "confirmed_visit_dates": { "items": { "type": "string" }, "type": "array" }, "count": { "type": "number" }, "count_semantics": { "type": "string" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "matched_via": { "type": [ "string", "null" ] }, "matching_events": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "people_present": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "place": { "type": "string" }, "reconstructed_candidates": { "items": { "additionalProperties": true, "description": "Unconfirmed completed-trip evidence with confidence and source; never included in count.", "type": "object" }, "type": "array" }, "reconstructed_count": { "type": "number" }, "resolution_candidates": { "items": { "additionalProperties": true, "description": "Ambiguous canonical place matches; count stays empty.", "type": "object" }, "type": "array" }, "resolved_place": { "additionalProperties": true, "description": "Canonical place record.", "type": [ "object", "null" ] }, "visits": { "items": { "additionalProperties": true, "description": "Confirmed same-day outing with visit_date and evidence_refs. A typed place_visits row is primary and carries visit_id (= id); linked event/GPS evidence is reconciled without increasing the count.", "type": "object" }, "type": "array" } }, "required": [ "place", "visits", "count" ], "type": "object" } }, { "description": "Known venues: visit-graph `places` plus saved place cards (`saved_places` from business_contacts) with address, opening_hours, and affordability ($/$$/$$$). `query` filters both lists by name. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "affordability": { "description": "$ | $$ | $$$", "type": "string" }, "area": { "type": "string" }, "city": { "type": "string" }, "country": { "type": "string" }, "limit": { "type": "number" }, "near": { "description": "Filter saved cards by area/tag/notes (e.g. Madeira).", "type": "string" }, "query": { "description": "Name contains, case-insensitive (e.g. \"QA Map Probe Tokyo\").", "type": "string" }, "tag": { "type": "string" } }, "type": "object" }, "name": "get_places", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "count": { "type": "number" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "places": { "items": { "additionalProperties": true, "description": "Canonical place record.", "type": "object" }, "type": "array" }, "saved_count": { "type": "number" }, "saved_places": { "items": { "additionalProperties": true, "description": "Saved place card (business_contacts).", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "include_eras": { "description": "Include life_eras rows (default true)", "type": "boolean" }, "limit": { "type": "number" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_residences", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "eras": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "residences": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Sleep: list typed sleep/nap records with duration_minutes. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "limit": { "type": "number" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_sleep", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "sleeps": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Sleep: day/week/month totals and averages. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "range": { "enum": [ "day", "week", "month" ], "type": "string" } }, "type": "object" }, "name": "get_sleep_summary", "outputSchema": { "additionalProperties": true, "properties": { "average_minutes": { "type": "number" }, "count": { "type": "number" }, "nights": { "type": "number" }, "range": { "type": "string" }, "total_minutes": { "type": "number" } }, "required": [ "count" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "get_trackers", "outputSchema": { "additionalProperties": true, "properties": { "note": { "type": "string" }, "trackers": { "items": { "additionalProperties": true, "description": "A currently active tracker.", "type": "object" }, "type": "array" } }, "required": [ "trackers" ], "type": "object" } }, { "description": "List individual expense/income/transfer rows (includes tags, payment_method). Requires context.read and financial_details:read. Filter with tag=project:… or project=… ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "cursor": { "description": "Continue the same immutable one-hour snapshot; other filters remain frozen.", "type": "string" }, "from": { "type": "string" }, "include_archived": { "type": "boolean" }, "limit": { "description": "Page size 1-500, default 100.", "type": "number" }, "offset": { "description": "Skip this many rows of a new snapshot (a cursor carries its own).", "type": "number" }, "project": { "description": "Project label or slug → project:{slug}", "type": "string" }, "tag": { "description": "Exact tag, e.g. project:max-soko-poker-venture or rail:zelle", "type": "string" }, "to": { "type": "string" }, "type": { "type": "string" } }, "type": "object" }, "name": "get_transactions", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "count": { "type": "number" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "transactions": { "items": { "additionalProperties": true, "description": "Expense/income transaction row.", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Completed/confirmed travel only. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "type": "string" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_travel_history", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "trips": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Single trip with linked places and people. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "trip_id": { "type": "string" } }, "required": [ "trip_id" ], "type": "object" }, "name": "get_trip", "outputSchema": { "additionalProperties": true, "properties": { "people": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "places": { "items": { "additionalProperties": true, "description": "Canonical place record.", "type": "object" }, "type": "array" }, "trip": { "additionalProperties": true, "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "cursor": { "description": "Continue the same immutable one-hour snapshot; other filters remain frozen.", "type": "string" }, "from": { "type": "string" }, "include_archived": { "type": "boolean" }, "limit": { "type": "number" }, "status": { "type": "string" }, "to": { "type": "string" } }, "type": "object" }, "name": "get_trips", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "trips": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "description": "Preview or import completed Lyft and Uber receipts as deduplicated origin-to-destination movements plus linked expenses. dry_run returns the exact proposed records without writing. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "account": { "type": "string" }, "dry_run": { "type": "boolean" }, "email": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "max_results": { "type": "number" }, "query": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "type": "object" }, "name": "import_rideshare_gmail", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "duplicates": { "type": "number" }, "imported": { "type": "number" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "query": { "type": "string" }, "results": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "scanned": { "type": "number" }, "skipped": { "type": "number" } }, "required": [ "query", "scanned", "imported", "duplicates", "skipped", "results" ], "type": "object" } }, { "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. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "account": { "type": "string" }, "dry_run": { "type": "boolean" }, "email": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "max_results": { "type": "number" }, "query": { "description": "Override Gmail search (default from:uber.com receipt/trip)", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "type": "object" }, "name": "import_uber_gmail", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "duplicates": { "type": "number" }, "imported": { "type": "number" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "query": { "type": "string" }, "results": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "scanned": { "type": "number" }, "skipped": { "type": "number" } }, "required": [ "query", "scanned", "imported", "duplicates", "skipped", "results" ], "type": "object" } }, { "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. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "account": { "description": "Mailbox email or connection id", "type": "string" }, "dry_run": { "type": "boolean" }, "email": { "description": "Alias for account", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "max_results": { "type": "number" }, "mirror_event": { "description": "Also create Money · calendar annotations", "type": "boolean" }, "query": { "description": "Override Gmail search (default from:venmo.com paid/payment)", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "type": "object" }, "name": "import_venmo_gmail", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "duplicates": { "type": "number" }, "imported": { "type": "number" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "query": { "type": "string" }, "results": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "scanned": { "type": "number" }, "skipped": { "type": "number" } }, "required": [ "query", "scanned", "imported", "duplicates", "skipped", "results" ], "type": "object" } }, { "description": "Link Trip→Stay→Place / Event→Person (graph, not prose). link_type accepts documented aliases (e.g. participant → event_person); unknown values error instead of silently becoming \"other\". Pass status=confirmed|rejected to record a human decision on an existing (often inferred) edge. status=confirmed on a link that does not exist yet creates it, as a call without status does (explicit, confidence 1). status=rejected on a link that does not exist errors and saves nothing: there is nothing to reject. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "confidence": { "description": "0-1. Defaults to 1 for explicit links. 0 means rejected: every read leaves the edge out.", "type": "number" }, "from_id": { "type": "string" }, "from_type": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "link_type": { "description": "trip_stay | trip_flight | stay_place | event_place | event_person | transaction_trip | event_event | other. Aliases: participant/participants/attendee/attendees → event_person.", "type": "string" }, "notes": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "description": "Provenance tag, e.g. manual, inferred:name_match:title.", "type": "string" }, "status": { "description": "confirmed: confirm an existing edge (usually an inferred one: +confirmed, confidence 1), or create the edge if it does not exist yet, as a call without status does. rejected: tombstone an existing edge (+rejected, confidence 0). A rejected edge is not a relationship: the event's people, timelines, get_interactions and every other read leave it out. It is kept so automated writers never recreate it; linking the same pair again without status replaces it. Errors and saves nothing when the edge does not exist.", "enum": [ "confirmed", "rejected" ], "type": "string" }, "to_id": { "type": "string" }, "to_type": { "type": "string" } }, "required": [ "from_type", "from_id", "to_type", "to_id" ], "type": "object" }, "name": "link_entities", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "confirmation": { "description": "Derived from the link source and confidence. explicit: a direct write; pending: an inferred guess nobody has confirmed; confirmed: a guess a person confirmed; rejected: a person rejected it (source ends in +rejected, or confidence 0). A rejected link is kept only so it is never proposed again; it is not a relationship.", "enum": [ "explicit", "pending", "confirmed", "rejected" ], "type": "string" }, "link": { "additionalProperties": true, "description": "The stored life_entity_links row.", "type": "object" }, "linked": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "Link one owned contact to one owned Inventory item as its provenance: inherited_from, gifted_by, purchased_from, co_owned_with, borrowed_from or loaned_to. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "inventory_id": { "description": "The item id from add_inventory_item, get_inventory or search_inventory.", "type": "string" }, "notes": { "type": "string" }, "person_id": { "description": "Contact id (from get_people or resolve_person).", "type": "string" }, "relationship": { "enum": [ "inherited_from", "gifted_by", "purchased_from", "co_owned_with", "borrowed_from", "loaned_to" ], "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "inventory_id", "person_id", "relationship" ], "type": "object" }, "name": "link_inventory_person", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "idempotent_replay": { "type": "boolean" }, "inventory_id": { "type": "string" }, "link": { "additionalProperties": true, "type": "object" }, "message": { "type": [ "string", "null" ] }, "person_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "confidence": { "type": "number" }, "direction": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "notes": { "type": "string" }, "other_person_id": { "type": "string" }, "person_id": { "type": "string" }, "relationship_type": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" } }, "required": [ "person_id", "other_person_id" ], "type": "object" }, "name": "link_people", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "connection": { "additionalProperties": true, "type": "object" }, "linked": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "auto_cleanup": { "description": "Auto-dismiss non-person / auto-link existing (default true)", "type": "boolean" }, "kind": { "description": "Optional: entity_mention | duplicate_people", "type": "string" }, "limit": { "description": "Max rows 1–50, default 15", "type": "number" } }, "type": "object" }, "name": "list_clarifications", "outputSchema": { "additionalProperties": true, "properties": { "clarifications": { "items": { "additionalProperties": true, "description": "Ranked clarification candidate.", "type": "object" }, "type": "array" }, "count": { "type": "number" }, "message": { "type": [ "string", "null" ] }, "truncated": { "type": "boolean" } }, "required": [ "clarifications", "count" ], "type": "object" } }, { "description": "List the owner’s recent event classification and event-person correction ledger, including undone entries. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_event_fact_corrections", "outputSchema": { "additionalProperties": true, "properties": { "corrections": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "ok": { "type": "boolean" } }, "required": [ "ok" ], "type": "object" } }, { "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). Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. Share tokens cannot call. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_gmail_accounts", "outputSchema": { "additionalProperties": true, "properties": { "accounts": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "connect_url": { "type": "string" }, "count": { "type": "number" } }, "required": [ "accounts", "count", "connect_url" ], "type": "object" } }, { "description": "Save a day's check-in for one condition with the same explicit subject_type/person_id. Self check-ins show on the user's Day Card; another person's do not. severity 0-10, note, treatment_done; logged_on defaults today. One per condition/day. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "condition_id": { "description": "From get_conditions or create_condition.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "logged_on": { "description": "YYYY-MM-DD; default today in the user's time zone.", "type": "string" }, "note": { "type": "string" }, "person_id": { "description": "Owned contact id; required for person.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "severity": { "description": "0 (none) to 10 (worst).", "maximum": 10, "minimum": 0, "type": "integer" }, "subject_type": { "description": "self, or person with person_id.", "enum": [ "self", "person" ], "type": "string" }, "treatment_done": { "description": "What they did for it that day.", "type": "string" } }, "required": [ "condition_id", "subject_type" ], "type": "object" }, "name": "log_condition_checkin", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "checkin": { "additionalProperties": true, "description": "checkin_id, condition_id, condition_name, logged_on, severity, note, treatment_done.", "type": "object" }, "created": { "description": "false: that day already had a check-in, and only the fields passed changed.", "type": "boolean" }, "idempotent_replay": { "description": "true when this request_id already ran: the first result, nothing new written.", "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "MUTATES the calendar (non-food events, tasks, sleep). Replies owed ('what to reply to X') go to create_pending_reply. Woke at X: end_time. Requires title plus event_date or date (YYYY-MM-DD, YYYY-MM, or YYYY). A task with no deadline: ask for a date, never fill in today. Soft dates preserve date_precision. A story or anecdote about something that already happened is a moment: use log_moment (with event_id when it is about an event here), not a second event. Optional: event_time (alias time), end_date, end_time, location, description (alias notes), category, visibility, timezone, reminder fields, sharing/people, scoreboard (structured operating status; keep description for notes), and idempotency_key. Sleep with only a wake time ('I woke at 11:15'): category sleep, event_date the day they woke, end_time 11:15 and no event_time. Don't invent a bedtime; add it later with update_event event_time (a bedtime the night before also sets event_date to that night and end_date to the wake day). Timed events default to the profile push-reminder timing; all-day events stay off and explicit reminder_enabled=false opts out. Prefer log_travel for trips/residences. Unknown people do not fail the write. Public events return share_url. Requires API key or OAuth with context scope; share tokens cannot write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "anyOf": [ { "required": [ "event_date" ] }, { "required": [ "date" ] } ], "properties": { "amount": { "description": "If set, also writes a /money transaction (dual-write). Prefer log_transaction / import_venmo_gmail for cashflow-first digs.", "type": "number" }, "category": { "description": "e.g. sleep, funeral, family, work, travel. Stored as events.category and event_type.", "type": "string" }, "city": { "description": "Structured city (composed into location if location omitted)", "type": "string" }, "country": { "description": "Structured country", "type": "string" }, "currency": { "type": "string" }, "date": { "description": "Alias for event_date.", "type": "string" }, "date_precision": { "description": "Soft date precision stored in metadata. YYYY/YYYY-MM dates default to year/month.", "enum": [ "day", "month", "year", "approx" ], "type": "string" }, "description": { "description": "Notes about the event. Alias: notes.", "type": "string" }, "direction": { "description": "With amount: from=received, to=sent", "enum": [ "from", "to" ], "type": "string" }, "end_date": { "description": "Optional end date YYYY-MM-DD (multi-day, or a night that ends the next day).", "type": "string" }, "end_time": { "description": "Optional end time (same formats as event_time). Works without event_time, e.g. a wake time alone.", "type": "string" }, "event_date": { "description": "Start date YYYY-MM-DD, YYYY-MM, or YYYY (required). Alias: date. For a task, its real due date; if the user gave none, ask. Don't use today.", "type": "string" }, "event_time": { "description": "Optional start time: 8pm, 20:00, or 20:00:00. Alias: time. Leave it out when nobody said it.", "type": "string" }, "event_type": { "description": "Optional event kind (e.g. todo, goal, work). Worked out from category when omitted.", "type": "string" }, "external_id": { "description": "With amount: idempotency key", "type": "string" }, "external_url": { "type": "string" }, "idempotency_key": { "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.", "type": "string" }, "image_url": { "description": "Optional cover image URL for Explore + /e share cards.", "type": "string" }, "location": { "description": "Free-text place. Or pass city + country.", "type": "string" }, "mirror_transaction": { "description": "Default true when amount is set; set false to keep calendar-only", "type": "boolean" }, "notes": { "description": "Alias for description.", "type": "string" }, "people": { "description": "People names or person UUIDs to tag (event_people role=with).", "items": { "type": "string" }, "type": "array" }, "people_names": { "description": "Alias for people.", "items": { "type": "string" }, "type": "array" }, "person_id": { "description": "With amount: CRM person UUID", "type": "string" }, "person_ids": { "description": "Owned person UUIDs to tag (user-scoped).", "items": { "type": "string" }, "type": "array" }, "person_name": { "description": "One person to tag, by name.", "type": "string" }, "reminder_enabled": { "description": "Timed events default to a push reminder when omitted. Set false only for an explicit opt-out; all-day events stay off.", "type": "boolean" }, "reminder_minutes_before": { "description": "Push lead time. Uses the profile reminder_timing when omitted (fallback 30 minutes).", "type": "number" }, "request_id": { "description": "Alias for idempotency_key (preferred by some clients).", "type": "string" }, "scoreboard": { "additionalProperties": false, "description": "Operating status as data (not description prose). state is required when the event has no scoreboard yet. On update_event fields merge; a null field clears it; scoreboard null removes the record.", "properties": { "blocker": { "type": "string" }, "evidence": { "type": "string" }, "last_verified": { "description": "YYYY-MM-DD", "type": "string" }, "metric": { "description": "Progress readout, e.g. 2/5", "type": "string" }, "next_review": { "description": "YYYY-MM-DD", "type": "string" }, "next_step": { "type": "string" }, "owner": { "type": "string" }, "state": { "enum": [ "not_started", "on_track", "at_risk", "blocked", "done" ], "type": "string" } }, "type": "object" }, "share_with": { "description": "Dayze profile handles to add as collaborators via shared_events (e.g. [\"boof\"]). Leading @ stripped.", "items": { "type": "string" }, "type": "array" }, "source": { "description": "With amount: venmo/zelle/…", "type": "string" }, "source_email_participants": { "description": "Sender/To/Cc identities from source_gmail_id. Contacts are proposed only on one exact stored email match; shared/unknown/automated addresses stay unresolved. Do not also pass people fields.", "items": { "additionalProperties": false, "properties": { "email": { "type": "string" }, "name": { "type": "string" }, "role": { "enum": [ "sender", "to", "cc", "participant" ], "type": "string" } }, "required": [ "email" ], "type": "object" }, "maxItems": 50, "type": "array" }, "source_gmail_id": { "description": "Gmail message id the event came from (kept in metadata).", "type": "string" }, "time": { "description": "Alias for event_time.", "type": "string" }, "timezone": { "description": "IANA timezone for wall-clock display (e.g. America/New_York).", "type": "string" }, "title": { "description": "Event title (required).", "type": "string" }, "visibility": { "default": "private", "description": "Calendar visibility. public → appears on /explore and gets share_url https://dayze.com/e/{id}. Default private.", "enum": [ "private", "friends", "public" ], "type": "string" }, "with": { "description": "Alias for people.", "items": { "type": "string" }, "type": "array" } }, "required": [ "title" ], "type": "object" }, "name": "log_event", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "event": { "additionalProperties": true, "description": "A Dayze calendar event record.", "type": "object" }, "import_hygiene_flags": { "items": { "additionalProperties": true, "description": "Import skip/review flags.", "type": "object" }, "type": "array" }, "life_state_rebuilt": { "type": "boolean" }, "people_email_anchored": { "items": { "additionalProperties": true, "description": "Proposed exact unique-email anchors.", "type": "object" }, "type": "array" }, "people_name_matched": { "items": { "additionalProperties": true, "description": "Proposed confidence-0.7 full-name matches.", "type": "object" }, "type": "array" }, "people_tagged": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "unresolved_people": { "items": { "type": "string" }, "type": "array" }, "unresolved_source_people": { "items": { "additionalProperties": true, "description": "Source participants that were not linked.", "type": "object" }, "type": "array" } }, "required": [ "event", "people_tagged", "unresolved_people", "people_name_matched", "people_email_anchored", "unresolved_source_people", "import_hygiene_flags", "life_state_rebuilt" ], "type": "object" } }, { "description": "Create an outgoing expense only. For money received (Venmo/Cash App/PayPal/Zelle) use log_transaction with direction=from and type=income. Lending a contact cash: category \"IOU lend\" + person_id (one call creates the IOU they owe and shows the money out once). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "type": "number" }, "cash_moved": { "description": "With category \"IOU lend\": true (default) = cash changed hands as a loan (shows in Finance); false = an owed share, e.g. of a dinner logged as its own expense (IOU only). Ignored for iou_type invoice.", "type": "boolean" }, "category": { "description": "\"IOU repayment\" = paying a contact back; \"IOU lend\" = lending a contact cash (both need person_id).", "type": "string" }, "client_label": { "description": "Optional free-text client label for an invoice IOU.", "type": "string" }, "currency": { "type": "string" }, "date": { "type": "string" }, "description": { "description": "Alias for notes.", "type": "string" }, "external_id": { "description": "The provider's id for this payment; dedupes imports. Without a request_id it is required.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "iou_type": { "description": "loan (default) or invoice. Invoice = unpaid receivable: no Finance outflow on create; payment is income \"Invoice payment\". Use for invoice/receivable phrasings; \"I lent…\" → loan.", "type": "string" }, "merchant": { "description": "Payee name (defaults when omitted)", "type": "string" }, "notes": { "description": "Free text about the payment. Alias: description.", "type": "string" }, "payment_method": { "description": "Alias for source.", "type": "string" }, "person_id": { "description": "The contact paid (needed for \"IOU repayment\" / \"IOU lend\").", "type": "string" }, "person_name": { "description": "The contact by name, when there is no person_id (IOU categories need one or the other).", "type": "string" }, "project": { "description": "Venture/project label → stored as project:{slug} tag (e.g. Max Soko poker venture)", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "description": "Payment rail or app: venmo, zelle, cashapp, card, cash, … Alias: payment_method.", "type": "string" }, "tags": { "description": "Optional tags. Prefer project: / ext: / rail: grammar.", "items": { "type": "string" }, "type": "array" } }, "required": [ "amount" ], "type": "object" }, "name": "log_expense", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "expense": { "additionalProperties": true, "description": "Expense/income transaction row.", "type": "object" }, "expense_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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, and person_id from get_people to link the track to one owned contact. Requires API key or OAuth with scope context. Share tokens cannot write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "artist": { "description": "Artist name (required unless track blob parses)", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "description": "Optional owned contact id from get_people; the track appears on that contact profile and shared history", "type": "string" }, "remaster_note": { "description": "Alias for year_note", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source_url": { "description": "Optional https link", "type": "string" }, "title": { "description": "Track title (required unless track blob parses)", "type": "string" }, "track": { "description": "Optional \"Artist - Title (year remaster)\" blob", "type": "string" }, "url": { "description": "Alias for source_url", "type": "string" }, "year_note": { "description": "Optional year or remaster note", "type": "string" } }, "type": "object" }, "name": "log_favorite_song", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "created": { "description": "True when a new favorite was created.", "type": "boolean" }, "message": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "track": { "additionalProperties": true, "description": "Saved favorite-track record.", "type": "object" }, "track_id": { "type": "string" } }, "required": [ "track_id", "track", "created", "message" ], "type": "object" } }, { "description": "MUTATES the authenticated user Food Diary and calendar. Use when they ate or drank — do not store this as a chat memory. Supports dish_items for multiple named dishes with optional price and rating. Example: “I had Mee Pok for late lunch with my parents” → log_food({ what: \"Mee Pok\", kind: \"meal\", meal_period: \"late lunch\", with: [\"my parents\"] }). Optional: calories (user-stated kilocalories), place/merchant, amount, consumed_at (ISO). Explicit calories override the automatic heuristic. 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)", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "description": "Price if mentioned", "type": "number" }, "calories": { "description": "Kilocalories explicitly stated by the user; overrides the automatic heuristic and is stored with user provenance", "maximum": 10000, "minimum": 0, "type": "number" }, "consumed_at": { "description": "ISO instant; wins over meal_period", "type": "string" }, "currency": { "description": "ISO currency, e.g. SGD", "type": "string" }, "dish_items": { "description": "Ordered dishes in this entry. Each requires name; price and rating are optional.", "items": { "additionalProperties": false, "properties": { "name": { "type": "string" }, "price": { "minimum": 0, "type": "number" }, "rating": { "maximum": 5, "minimum": 1, "type": "number" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "kind": { "enum": [ "meal", "snack", "drink" ], "type": "string" }, "meal_period": { "description": "Spoken period when consumed_at is omitted, e.g. \"late lunch\"", "type": "string" }, "merchant": { "description": "Restaurant, stall, or shop", "type": "string" }, "notes": { "type": "string" }, "paid_by": { "description": "Who paid (name or alias)", "type": "string" }, "people_names": { "description": "Alias for with", "items": { "type": "string" }, "type": "array" }, "person_ids": { "description": "Owned person UUIDs to tag (user-scoped)", "items": { "type": "string" }, "type": "array" }, "place": { "description": "Venue or location", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "what": { "description": "What they ate or drank (required). Example: Mee Pok", "type": "string" }, "with": { "description": "Companion names, aliases, ids, or group tokens. \"my parents\" / Mum / Dad resolve via aliases; \"family\" expands to CRM rows with family relationship labels", "items": { "type": "string" }, "type": "array" } }, "required": [ "what" ], "type": "object" }, "name": "log_food", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "event_id": { "type": [ "string", "null" ] }, "food_id": { "type": "string" }, "food_log": { "additionalProperties": true, "description": "Saved Food Diary row.", "type": "object" }, "life_state_rebuilt": { "type": "boolean" }, "message": { "type": "string" }, "people_tagged": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "unresolved_people": { "items": { "type": "string" }, "type": "array" } }, "required": [ "food_id", "event_id", "people_tagged", "unresolved_people", "food_log", "message", "life_state_rebuilt" ], "type": "object" } }, { "description": "Record money received (Stripe, refunds, payroll, Venmo). log_transaction with type income and direction from already set (pass neither). Use external_id for Stripe/Gmail idempotency. A contact paying back an IOU: category \"IOU repayment\" + person_id (lowers the IOU, shows the money once). A contact lending the user cash: category \"IOU lend\" + person_id (creates the IOU the user owes, shows the money once). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "type": "number" }, "cash_moved": { "description": "With category \"IOU lend\": true (default) = cash changed hands as a loan (shows in Finance); false = an owed share, e.g. of a dinner logged as its own expense (IOU only). Ignored for iou_type invoice.", "type": "boolean" }, "category": { "description": "e.g. Salary, Gift, Refund. \"IOU repayment\" and \"IOU lend\" need person_id.", "type": "string" }, "client_label": { "description": "Optional free-text client label for an invoice IOU.", "type": "string" }, "currency": { "type": "string" }, "date": { "type": "string" }, "description": { "description": "Alias for notes.", "type": "string" }, "external_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "iou_type": { "description": "loan (default) or invoice. Invoice = unpaid receivable: no Finance outflow on create; payment is income \"Invoice payment\". Use for invoice/receivable phrasings; \"I lent…\" → loan.", "type": "string" }, "merchant": { "type": "string" }, "not_iou_repayment": { "description": "true only when income from a contact with an open IOU is unrelated to it.", "type": "boolean" }, "notes": { "description": "Free text about the payment. Alias: description.", "type": "string" }, "payment_method": { "type": "string" }, "person_id": { "type": "string" }, "person_name": { "description": "The contact by name, when there is no person_id (IOU categories need one or the other).", "type": "string" }, "project": { "description": "Venture/project label → stored as project:{slug} tag (e.g. Max Soko poker venture)", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" }, "tags": { "description": "Optional tags. Prefer project: / ext: / rail: grammar.", "items": { "type": "string" }, "type": "array" } }, "required": [ "amount" ], "type": "object" }, "name": "log_income", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "direction": { "type": "string" }, "duplicate": { "type": "boolean" }, "event_id": { "type": [ "string", "null" ] }, "expense_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "transaction": { "additionalProperties": true, "description": "Expense/income transaction row.", "type": "object" }, "transaction_id": { "type": "string" }, "type": { "type": "string" } }, "type": "object" } }, { "description": "Contacts: log that the user was in touch with a contact ('I replied to Vadim', 'called Mum'): kind message, call, meeting, note, check_in or thought_of. Private to the owner. person_id (an owned contact) or person_name (linked only on one resolve_person match; otherwise nothing is logged and the candidates come back). With reply_id it also marks that Pending Reply sent: this interaction is the reply's one write-back (a later resolve adds no second). summary: one line in your own words, never email text or a subject. occurred_at: when it happened (ISO), default now; not in the future. Never sends anything. Requires API key or OAuth with context.write. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "kind": { "description": "Default message.", "enum": [ "message", "call", "meeting", "note", "check_in", "thought_of" ], "type": "string" }, "occurred_at": { "description": "When it happened (ISO date-time). Default now.", "type": "string" }, "person_id": { "description": "An owned contact id.", "type": "string" }, "person_name": { "description": "The contact as the user said it (\"Vadim\"); linked only on one match.", "type": "string" }, "reply_id": { "description": "A Pending Reply (get_pending_replies) this closes as sent.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "summary": { "description": "One line (max 280) in your own words. Never the email body, subject or sender.", "type": "string" } }, "type": "object" }, "name": "log_interaction", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "created": { "description": "False when it was already stored (a retry, or the reply's write-back).", "type": "boolean" }, "interaction": { "additionalProperties": false, "description": "The interaction in the contact's history (private to the owner).", "properties": { "interaction_id": { "type": "string" }, "kind": { "description": "message, call, meeting, note, check_in or thought_of", "type": "string" }, "occurred_at": { "type": "string" }, "person_id": { "type": "string" }, "person_name": { "type": "string" }, "source": { "description": "mcp, or pending_reply when it closes a reply", "type": "string" }, "summary": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private.", "type": "string" } }, "required": [ "interaction_id", "person_id", "person_name", "kind", "summary", "occurred_at", "source", "visibility" ], "type": "object" }, "life_state_rebuilt": { "type": "boolean" }, "message": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "reply": { "additionalProperties": false, "description": "One reply the user owes (Inbox → Pending Replies). Dayze never sends it.", "properties": { "approved_at": { "description": "PHI-427: when the owner approved the draft and opened it in Gmail, or null. Dayze never sends; the Gmail sync closes the reply when the email goes out.", "type": [ "string", "null" ] }, "category": { "description": "personal or work", "type": "string" }, "channel": { "type": "string" }, "created_at": { "type": [ "string", "null" ] }, "draft": { "description": "The reply text saved for later.", "type": [ "string", "null" ] }, "due": { "description": "Owed now: pending, or snoozed with snooze_until passed. False while a snooze runs, and when sent or dismissed.", "type": "boolean" }, "is_private": { "description": "Always true.", "type": "boolean" }, "person_id": { "description": "Linked contact id; null when the reply is unlinked.", "type": [ "string", "null" ] }, "person_name": { "type": "string" }, "received_at": { "type": "string" }, "reply_id": { "type": "string" }, "responded_at": { "type": [ "string", "null" ] }, "snooze_until": { "type": [ "string", "null" ] }, "source": { "additionalProperties": false, "description": "The email it answers, as ids only; null when none was saved.", "properties": { "kind": { "description": "gmail, email or other", "type": "string" }, "message_id": { "type": [ "string", "null" ] }, "thread_id": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "state": { "description": "unsent (pending or snoozed), sent (the owner replied) or dismissed", "type": "string" }, "status": { "description": "pending, snoozed, responded or dismissed", "type": "string" }, "summary": { "type": [ "string", "null" ] }, "updated_at": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private: Pending Replies have no sharing setting.", "type": "string" } }, "required": [ "reply_id", "person_name", "person_id", "channel", "category", "summary", "draft", "status", "state", "due", "received_at", "source", "visibility", "is_private" ], "type": [ "object", "null" ] }, "reply_resolved": { "description": "True when this call marked the reply sent.", "type": "boolean" } }, "required": [ "interaction", "created", "reply", "reply_resolved", "message", "life_state_rebuilt" ], "type": "object" } }, { "description": "Save a past story or memory as a private moment. Plans go to log_event; a touchpoint with a contact to log_interaction. Requires title, and moment_date (YYYY-MM-DD, YYYY-MM or YYYY; alias date) unless event_id is given. With event_id (an owned event the story is about) it creates a NEW moment linked to that event and takes the event's date and location when you pass none; the event itself is never changed, converted or deleted, and one event can have many moments. Don't also save the story as an event. Optional: description (the longer story), moment_date_precision (exact, month, year, circa), end_date, moment_type (default memory), location_name (only a place the user said), person_ids (owned contacts; any other id saves nothing), people_names (tag saved contacts only, never created), cover_image_url / media_urls (https links), tags. Always private: there is no visibility argument; the owner shares a moment in Dayze. Fix it later with update_moment. Requires API key or OAuth with context.write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "cover_image_url": { "description": "Optional https image link for the moment's cover.", "type": "string" }, "date": { "description": "Alias for moment_date.", "type": "string" }, "description": { "description": "The longer story, in the user's words where possible.", "type": "string" }, "end_date": { "description": "Optional last day YYYY-MM-DD, for a moment that spans days.", "type": "string" }, "event_id": { "description": "A calendar event this story is about (owned). Links the new moment to it; the event is not changed.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "location": { "description": "Alias for location_name.", "type": "string" }, "location_name": { "description": "Where it happened, only as the user said it. With event_id and no place, the event's location is used. Alias: location.", "type": "string" }, "media_urls": { "description": "Optional https image links (max 10).", "items": { "type": "string" }, "type": "array" }, "moment_date": { "description": "When it happened: YYYY-MM-DD, YYYY-MM or YYYY (alias date). With event_id and no date, the event's date is used. Otherwise required.", "type": "string" }, "moment_date_precision": { "description": "How exact the date is. YYYY-MM and YYYY default to month and year; circa for \"around then\".", "enum": [ "exact", "month", "year", "circa" ], "type": "string" }, "moment_time": { "description": "Optional local time-of-day when it happened (HH:mm or HH:mm:ss). Null/empty = date-only. Not the row created_at.", "type": "string" }, "moment_type": { "description": "Default memory.", "enum": [ "first_met", "milestone", "trip", "achievement", "memory", "anniversary", "life_event", "relationship", "career", "health", "creative", "loss", "other" ], "type": "string" }, "people_names": { "description": "Names the user said; tagged only when they match a saved contact (never created). Unmatched names come back in unresolved_people.", "items": { "type": "string" }, "type": "array" }, "person_ids": { "description": "Owned contact ids of people in the story (max 25). An id that isn't the user's saves nothing.", "items": { "type": "string" }, "type": "array" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "tags": { "description": "Optional short tags (max 20, 40 characters each).", "items": { "type": "string" }, "type": "array" }, "title": { "description": "The story in a few words (max 200), e.g. \"Mia called the moon a banana\".", "type": "string" } }, "required": [ "title" ], "type": "object" }, "name": "log_moment", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "inherited_from_event": { "description": "moment_date and/or location_name, when taken from the linked event.", "items": { "type": "string" }, "type": "array" }, "invalidates": { "items": { "type": "string" }, "type": "array" }, "linked_event": { "additionalProperties": false, "description": "The event this moment links, unchanged by the call; null when none.", "properties": { "id": { "type": "string" }, "title": { "type": "string" } }, "required": [ "id", "title" ], "type": [ "object", "null" ] }, "message": { "type": "string" }, "moment": { "additionalProperties": false, "description": "A moment: a story or memory, private to the owner. event_id links the event it is about.", "properties": { "ai_summary": { "type": [ "string", "null" ] }, "cover_image_url": { "type": [ "string", "null" ] }, "created_at": { "type": [ "string", "null" ] }, "description": { "type": [ "string", "null" ] }, "end_date": { "type": [ "string", "null" ] }, "event_id": { "type": [ "string", "null" ] }, "id": { "type": "string" }, "is_featured": { "type": "boolean" }, "is_pinned": { "type": "boolean" }, "is_recurring": { "type": "boolean" }, "location_lat": { "type": [ "number", "null" ] }, "location_lng": { "type": [ "number", "null" ] }, "location_name": { "type": [ "string", "null" ] }, "location_place_id": { "type": [ "string", "null" ] }, "media_urls": { "items": { "type": "string" }, "type": "array" }, "merged_provenance": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "moment_date": { "description": "YYYY-MM-DD (the first day of the month or year for a soft date).", "type": "string" }, "moment_date_precision": { "description": "exact, month, year or circa", "type": [ "string", "null" ] }, "moment_type": { "type": "string" }, "people_ids": { "items": { "type": "string" }, "type": "array" }, "recurrence_rule": { "type": [ "string", "null" ] }, "sentiment": { "type": [ "string", "null" ] }, "source": { "type": [ "string", "null" ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "title": { "type": "string" }, "updated_at": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private for a moment an agent saves.", "type": "string" } }, "required": [ "id", "title", "moment_type", "moment_date", "people_ids", "media_urls", "tags", "visibility" ], "type": "object" }, "people_tagged": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "unresolved_people": { "description": "people_names that matched no saved contact (not tagged, not created).", "items": { "type": "string" }, "type": "array" } }, "required": [ "moment", "linked_event", "inherited_from_event", "people_tagged", "unresolved_people", "message" ], "type": "object" } }, { "description": "Log one provenance-backed movement segment. Origin, destination, timestamps, source, and external_id are required for a deduplicated route history. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "arrived_at": { "type": "string" }, "confidence": { "type": "number" }, "departed_at": { "type": "string" }, "destination": { "type": "string" }, "destination_address": { "type": "string" }, "destination_city": { "type": "string" }, "destination_country": { "type": "string" }, "distance_meters": { "type": "number" }, "duration_seconds": { "type": "number" }, "expense_id": { "type": "string" }, "external_id": { "type": "string" }, "geometry_source": { "enum": [ "observed_gps", "provider_polyline", "reconstructed", "straight_line" ], "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "metadata": { "type": "object" }, "mode": { "enum": [ "walk", "bike", "car", "rideshare", "train", "bus", "ferry", "flight", "other" ], "type": "string" }, "origin": { "type": "string" }, "origin_address": { "type": "string" }, "origin_city": { "type": "string" }, "origin_country": { "type": "string" }, "provider": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "route_geometry": { "type": "object" }, "source": { "type": "string" }, "source_reference": { "type": "string" } }, "required": [ "origin", "destination", "departed_at", "arrived_at", "mode", "source", "external_id" ], "type": "object" }, "name": "log_movement", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "created": { "type": "boolean" }, "duplicate": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "movement": { "additionalProperties": true, "type": "object" }, "movement_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "address": { "type": "string" }, "arrived_at": { "description": "ISO or YYYY-MM-DD", "type": "string" }, "city": { "type": "string" }, "confidence": { "type": "number" }, "country": { "type": "string" }, "date": { "description": "Alias for arrived_at", "type": "string" }, "departed_at": { "type": "string" }, "evidence_event_id": { "type": "string" }, "evidence_expense_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "name": { "description": "Alias for place", "type": "string" }, "place": { "type": "string" }, "place_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" } }, "type": "object" }, "name": "log_place_visit", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "created_place": { "type": "boolean" }, "duplicate": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "place": { "additionalProperties": true, "description": "Canonical place record.", "type": "object" }, "place_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "visit": { "additionalProperties": true, "description": "Confirmed same-day outing with visit_date and evidence_refs. A typed place_visits row is primary and carries visit_id (= id); linked event/GPS evidence is reconciled without increasing the count.", "type": "object" } }, "type": "object" } }, { "description": "Sleep: log overnight or nap. Cross-midnight OK (e.g. 14:00→03:00 = 13h / 780m). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "ended_at": { "description": "ISO end", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "notes": { "type": "string" }, "quality": { "type": "number" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "sleep_type": { "enum": [ "overnight", "nap", "unknown" ], "type": "string" }, "source": { "type": "string" }, "started_at": { "description": "ISO start", "type": "string" }, "timezone": { "type": "string" }, "timezone_end": { "type": "string" }, "timezone_start": { "type": "string" } }, "required": [ "started_at", "ended_at" ], "type": "object" }, "name": "log_sleep", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "message": { "type": [ "string", "null" ] }, "ok": { "type": "boolean" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "sleep": { "additionalProperties": true, "type": "object" } }, "type": "object" } }, { "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). IOU repayment (\"Mark paid me back $200\"): category \"IOU repayment\" + person_id — one call lowers the IOU and shows the money once (direction from = they paid the user, to = the user paid them). A cash loan (\"I lent Mark $200\"): category \"IOU lend\" + person_id — one call creates the IOU and shows the money once on that day (direction to = the user lent them, from = they lent the user); cash_moved: false for an owed share (IOU only). A plain income from a contact with an open IOU is refused unless not_iou_repayment: true; the same money as an already-recorded repayment or loan comes back as duplicate. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Stable provider account identity for imported payments.", "type": "string" }, "amount": { "type": "number" }, "cash_moved": { "description": "With category \"IOU lend\": true (default) = cash changed hands as a loan (shows in Finance); false = an owed share, e.g. of a dinner logged as its own expense (IOU only). Ignored for iou_type invoice.", "type": "boolean" }, "category": { "description": "Ledger category (e.g. Salary, Gift, Refund, Transfer in, Food & Dining). \"IOU repayment\" = a contact paying back a loan IOU; \"IOU lend\" = a cash loan; \"Invoice payment\" = collecting an unpaid invoice (need person_id).", "type": "string" }, "client_label": { "description": "Optional free-text client label for an invoice IOU.", "type": "string" }, "currency": { "type": "string" }, "date": { "type": "string" }, "description": { "description": "Alias for notes.", "type": "string" }, "direction": { "enum": [ "from", "to" ], "type": "string" }, "external_id": { "type": "string" }, "extractor_version": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "iou_type": { "description": "loan (default) or invoice. Invoice = unpaid receivable: no Finance outflow on create; payment is income \"Invoice payment\". Use for invoice/receivable phrasings; \"I lent…\" → loan.", "type": "string" }, "merchant": { "type": "string" }, "message_id": { "type": "string" }, "mirror_event": { "description": "Also insert optional Money · calendar event (default false)", "type": "boolean" }, "not_iou_repayment": { "description": "true only when income from a contact with an open IOU is unrelated to it.", "type": "boolean" }, "notes": { "description": "Free text about the payment. Alias: description.", "type": "string" }, "payment_method": { "type": "string" }, "person_id": { "type": "string" }, "person_name": { "description": "The contact by name, when there is no person_id (IOU categories need one or the other).", "type": "string" }, "project": { "description": "Venture/project label → stored as project:{slug} tag (e.g. Max Soko poker venture)", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" }, "tags": { "description": "Optional tags. Prefer project: / ext: / rail: grammar.", "items": { "type": "string" }, "type": "array" }, "type": { "enum": [ "income", "expense", "transfer" ], "type": "string" } }, "required": [ "amount", "direction" ], "type": "object" }, "name": "log_transaction", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "direction": { "type": "string" }, "duplicate": { "type": "boolean" }, "event_id": { "type": [ "string", "null" ] }, "expense_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "transaction": { "additionalProperties": true, "description": "Expense/income transaction row.", "type": "object" }, "transaction_id": { "type": "string" }, "type": { "type": "string" } }, "type": "object" } }, { "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. The calendar event is private. Zelle/Venmo money belongs in log_transaction — not here. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "city": { "type": "string" }, "confidence": { "enum": [ "confirmed", "likely", "possible" ], "type": "string" }, "country": { "type": "string" }, "date": { "description": "Alias for start_date", "type": "string" }, "end_date": { "type": "string" }, "evidence": { "description": "Source note (Gmail id, address, etc.)", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "kind": { "enum": [ "trip", "residence", "soft_pin" ], "type": "string" }, "mirror_event": { "description": "Also insert category=travel calendar event (default true)", "type": "boolean" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "start_date": { "description": "YYYY-MM-DD", "type": "string" }, "title": { "type": "string" } }, "required": [ "city" ], "type": "object" }, "name": "log_travel", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "confidence": { "type": "string" }, "event_id": { "type": [ "string", "null" ] }, "kind": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "note": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "trip": { "additionalProperties": true, "type": "object" } }, "type": "object" } }, { "description": "Preview first, 30-day undo. Retire exact duplicates while keeping the named canonical memory. Preview shows every retired id and distinct provenance; the receipt restores all rows for 30 days. Similar wording is refused. Reviewed and reversible: first call preview_destructive_change({ tool: \"merge_memory\", arguments: { canonical_memory_id, duplicate_memory_ids } }), which stores the exact change without applying it. After the user confirms, call merge_memory with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "canonical_memory_id": { "description": "Surviving memory id, checked against the preview.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "merge_memory", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "canonical_memory_id": { "type": "string" }, "idempotent_replay": { "type": "boolean" }, "life_state_rebuilt": { "type": "boolean" }, "preview_id": { "type": "string" }, "provenance": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "retired_memory_ids": { "items": { "type": "string" }, "type": "array" }, "reversible": { "type": "boolean" } }, "required": [ "canonical_memory_id", "retired_memory_ids", "life_state_rebuilt" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Preview with preview_destructive_change({tool:\"merge_moments\",arguments:{canonical_id,retired_ids}}). Conflicting story, date, place or event links stop the merge. Union people, tags and media. Reviewed and reversible: first call preview_destructive_change({ tool: \"merge_moments\", arguments: { canonical_id, retired_ids } }), which stores the exact change without applying it. After the user confirms, call merge_moments with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "canonical_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" }, "retired_ids": { "items": { "type": "string" }, "type": "array" } }, "required": [ "canonical_id", "retired_ids", "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "merge_moments", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "canonical": { "additionalProperties": true, "type": "object" }, "canonical_id": { "type": "string" }, "conflicts": { "items": { "type": "string" }, "type": "array" }, "idempotent_replay": { "type": "boolean" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "retired": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "retired_ids": { "items": { "type": "string" }, "type": "array" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "duplicate_person_ids": { "items": { "type": "string" }, "type": "array" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "description": "Durable preview_id returned by merge_people_preview; review the 30-day restore window before applying.", "type": "string" }, "primary_person_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true — confirms the 30-day restore window was reviewed before apply.", "type": "boolean" } }, "required": [ "primary_person_id", "duplicate_person_ids", "preview_id", "restore_window_acknowledged" ], "type": "object" }, "name": "merge_people", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "merged_person_ids": { "items": { "type": "string" }, "type": "array" }, "message": { "type": [ "string", "null" ] }, "person": { "additionalProperties": true, "description": "CRM person record.", "type": "object" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "type": "string" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "duplicate_person_ids": { "items": { "type": "string" }, "type": "array" }, "field_choices": { "additionalProperties": true, "type": "object" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "primary_person_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "primary_person_id", "duplicate_person_ids" ], "type": "object" }, "name": "merge_people_preview", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "field_conflicts": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "graph_edges_preserved": { "type": "number" }, "interactions_preserved": { "type": "number" }, "manifest": { "additionalProperties": true, "type": "object" }, "photos_preserved": { "type": "number" }, "preview_id": { "type": "string" }, "primary_person_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_window_days": { "type": "number" }, "resulting_aliases": { "items": { "type": "string" }, "type": "array" }, "resulting_name": { "type": [ "string", "null" ] }, "reversible": { "type": "boolean" }, "safe_to_merge": { "type": "boolean" }, "transactions_preserved": { "type": "number" }, "warnings": { "items": { "type": "string" }, "type": "array" } }, "required": [ "primary_person_id", "safe_to_merge" ], "type": "object" } }, { "description": "Apply a normalize_people_preview by preview_id. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "candidate_hash": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "preview_id": { "type": "string" }, "request_id": { "type": "string" } }, "required": [ "preview_id", "candidate_hash", "request_id" ], "type": "object" }, "name": "normalize_people_apply", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "applied": { "type": "number" }, "change_id": { "type": [ "string", "null" ] }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "Preview whitespace/phone/handle normalization changes (no title-case of stylized names). ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "rules": { "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "name": "normalize_people_preview", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changes": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "required": [ "preview_id", "changes", "count" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "date": { "description": "YYYY-MM-DD target date", "type": "string" }, "peers": { "default": 12, "type": "number" }, "similar": { "default": 8, "type": "number" }, "slug": { "description": "Person slug, e.g. albert-einstein", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "notable_pack", "outputSchema": { "additionalProperties": false, "properties": { "birthday_peers": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "life_in_days": { "additionalProperties": true, "description": "Age and current day-number calculations.", "type": "object" }, "profile": { "additionalProperties": true, "description": "Public notable-person profile.", "type": "object" }, "similar_people": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "timeline": { "items": { "additionalProperties": true, "description": "Timeline item with a day number.", "type": "object" }, "type": "array" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "date": { "type": "string" }, "peers": { "default": 20, "type": "number" }, "similar": { "default": 12, "type": "number" }, "slug": { "description": "Person slug, e.g. elon-musk", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "notable_pack_premium", "outputSchema": { "additionalProperties": false, "properties": { "birthday_peers": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "life_in_days": { "additionalProperties": true, "description": "Age and current day-number calculations.", "type": "object" }, "profile": { "additionalProperties": true, "description": "Quality-gated public notable-person profile.", "type": "object" }, "quality": { "additionalProperties": true, "description": "Pack quality signals.", "type": "object" }, "similar_people": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "timeline": { "items": { "additionalProperties": true, "description": "Timeline item with a day number.", "type": "object" }, "type": "array" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "slug": { "description": "Person slug, e.g. albert-einstein", "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "notable_profile", "outputSchema": { "additionalProperties": true, "properties": { "about": { "type": [ "string", "null" ] }, "bio": { "type": [ "string", "null" ] }, "birth_date": { "type": [ "string", "null" ] }, "death_date": { "type": [ "string", "null" ] }, "handle": { "type": [ "string", "null" ] }, "image_url": { "type": [ "string", "null" ] }, "name": { "type": "string" }, "occupation": { "type": [ "string", "null" ] }, "profile_url": { "type": "string" }, "slug": { "type": "string" }, "sources": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "timeline": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "required": [ "slug", "name", "profile_url" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "anyOf": [ { "required": [ "q" ] }, { "required": [ "query" ] } ], "properties": { "limit": { "default": 8, "description": "Max results 1–20", "type": "number" }, "q": { "description": "Primary search query.", "type": "string" }, "query": { "description": "Alias for q.", "type": "string" } }, "type": "object" }, "name": "notable_search", "outputSchema": { "additionalProperties": false, "properties": { "results": { "items": { "additionalProperties": true, "description": "A matching public notable-person profile.", "type": "object" }, "type": "array" }, "total": { "description": "Number of matches returned.", "type": "number" } }, "required": [ "results", "total" ], "type": "object" } }, { "description": "Review a destructive change before it happens. Stores the exact rows delete_food, delete_place, delete_place_visit, archive_inventory_item, archive_asset, reset_tracker, unlink_people, remove_person_alias, convert_contact_entity, bulk_dismiss_clarifications, delete_memory, delete_moment, merge_moments, merge_memory, correct_memory_atom would delete, archive or overwrite (with their before-state and linked records) without changing anything, and returns preview_id, operations, expires_at (30 minutes) and restore_window_days (30). Show it to the user, then call the named tool with preview_id, restore_window_acknowledged: true and request_id. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "arguments": { "additionalProperties": true, "description": "The arguments you would pass to that tool (e.g. { food_id }).", "type": "object" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "tool": { "enum": [ "delete_food", "delete_place", "delete_place_visit", "archive_inventory_item", "archive_asset", "reset_tracker", "unlink_people", "remove_person_alias", "convert_contact_entity", "bulk_dismiss_clarifications", "delete_memory", "delete_moment", "merge_moments", "merge_memory", "correct_memory_atom" ], "type": "string" } }, "required": [ "tool", "arguments" ], "type": "object" }, "name": "preview_destructive_change", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "expires_at": { "type": "string" }, "next_step": { "type": "string" }, "nothing_to_change": { "type": "boolean" }, "operations": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "preview_id": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" }, "summary": { "additionalProperties": true, "type": "object" }, "target_id": { "type": [ "string", "null" ] }, "tool": { "type": "string" } }, "required": [ "preview_id", "tool", "restore_window_days", "reversible" ], "type": "object" } }, { "description": "Group exact Moment duplicates first, then possible near duplicates for human review. Never merges automatically. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "YYYY-MM-DD inclusive", "type": "string" }, "to": { "description": "YYYY-MM-DD inclusive", "type": "string" } }, "required": [ "from", "to" ], "type": "object" }, "name": "preview_moment_duplicates", "outputSchema": { "additionalProperties": false, "properties": { "auto_merged": { "type": "boolean" }, "exact_groups": { "items": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "type": "array" }, "near_groups": { "items": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "type": "array" } }, "required": [ "exact_groups", "near_groups", "auto_merged" ], "type": "object" } }, { "description": "Propose assertion create/correct without committing (flagged; off by default). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "client_id": { "type": "string" }, "idempotency_key": { "type": "string" }, "operations": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "people_id": { "type": "string" }, "person_id": { "type": "string" }, "predicate": { "type": "string" }, "request_id": { "type": "string" }, "source_text": { "type": "string" }, "value": { "additionalProperties": true, "type": "object" } }, "type": "object" }, "name": "propose_life_update", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "enabled": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "payload_hash": { "type": "string" }, "proposal_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. Share tokens cannot call. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "account": { "type": "string" }, "attachment_id": { "type": "string" }, "email": { "type": "string" }, "message_id": { "type": "string" } }, "required": [ "message_id", "attachment_id" ], "type": "object" }, "name": "read_gmail_attachment", "outputSchema": { "additionalProperties": false, "properties": { "attachment": { "additionalProperties": false, "properties": { "attachment_id": { "type": "string" }, "binary": { "type": "boolean" }, "filename": { "type": "string" }, "mime_type": { "type": "string" }, "note": { "type": [ "string", "null" ] }, "size": { "type": "number" }, "text": { "type": [ "string", "null" ] }, "truncated": { "type": "boolean" } }, "required": [ "attachment_id", "filename", "mime_type", "size", "text", "truncated", "binary", "note" ], "type": "object" }, "message_id": { "type": "string" } }, "required": [ "message_id", "attachment" ], "type": "object" } }, { "description": "Read one Gmail message by id from search_gmail. Returns subject, from, canonical date, account-local date_local, time_zone, snippet, plain-text body (truncated), and attachments[] metadata (attachment_id, filename, mime_type, size). Use read_gmail_attachment for text/csv/vcf contents. Optional account when multiple mailboxes. On failure returns code gmail_read_failed with retryable: retry once only when retryable; if the newest message still cannot be read, say so and never present an older one as the latest. Read-only. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. Share tokens cannot call. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "account": { "description": "Mailbox selector (email or connection id)", "type": "string" }, "email": { "description": "Alias for account", "type": "string" }, "id": { "description": "Alias for message_id", "type": "string" }, "message_id": { "description": "Gmail message id from search_gmail", "type": "string" } }, "required": [ "message_id" ], "type": "object" }, "name": "read_gmail_message", "outputSchema": { "additionalProperties": false, "properties": { "message": { "additionalProperties": false, "properties": { "attachments": { "items": { "additionalProperties": false, "properties": { "attachment_id": { "type": "string" }, "filename": { "type": "string" }, "mime_type": { "type": "string" }, "size": { "type": "number" } }, "required": [ "attachment_id", "filename", "mime_type", "size" ], "type": "object" }, "type": "array" }, "body": { "type": "string" }, "body_truncated": { "type": "boolean" }, "date": { "type": "string" }, "date_local": { "type": "string" }, "from": { "type": "string" }, "id": { "type": "string" }, "snippet": { "type": "string" }, "subject": { "type": "string" }, "time_zone": { "type": "string" } }, "required": [ "id", "subject", "from", "date", "date_local", "time_zone", "snippet", "body", "body_truncated", "attachments" ], "type": "object" } }, "required": [ "message" ], "type": "object" } }, { "description": "Append a private trend for explicit subject_type self, or a person through a matching condition_id/person_id. Corrections supersede a point and retain history. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "condition_id": { "description": "From get_conditions or create_condition.", "type": "string" }, "confidence": { "maximum": 1, "minimum": 0, "type": "number" }, "correction_reason": { "description": "Required with supersedes_id; what was wrong with the prior point.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "kind": { "enum": [ "symptom", "treatment", "energy", "sleep" ], "type": "string" }, "metric": { "description": "What was measured, e.g. severity, completed, energy or duration_minutes.", "type": "string" }, "observed_at": { "description": "When it applied, as an ISO timestamp.", "type": "string" }, "person_id": { "description": "Owned contact id; required for person.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "description": "Provenance, e.g. user_reported, condition_checkin, daily_checkin or sleep_record.", "type": "string" }, "subject_type": { "description": "self, or person with person_id.", "enum": [ "self", "person" ], "type": "string" }, "supersedes_id": { "description": "The effective trend point this correction replaces.", "type": "string" }, "unit": { "description": "Optional scale/unit, e.g. 0-10, boolean, 1-5, minutes.", "type": "string" }, "value": { "description": "A scalar value. Put its scale or measurement in unit.", "type": [ "number", "string", "boolean" ] } }, "required": [ "kind", "metric", "observed_at", "value", "confidence", "source", "subject_type" ], "type": "object" }, "name": "record_health_trend", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "corrected": { "type": "boolean" }, "created": { "type": "boolean" }, "idempotent_replay": { "description": "true when this request_id already ran: the first result, nothing new written.", "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "superseded_trend_point": { "additionalProperties": true, "type": "object" }, "trend_point": { "additionalProperties": true, "type": "object" }, "trend_point_id": { "type": "string" } }, "type": "object" } }, { "description": "Atomic expense + optional inventory item creation. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "type": "number" }, "category": { "description": "Expense category (default purchase); also the item category when inventory_details has none.", "type": "string" }, "create_inventory": { "description": "false = the expense only, no Inventory item (default true).", "type": "boolean" }, "currency": { "description": "ISO 4217; default USD.", "type": "string" }, "date": { "description": "YYYY-MM-DD; default today.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "inventory_details": { "additionalProperties": false, "description": "The Inventory item: category, brand, model, condition, notes.", "properties": { "brand": { "type": "string" }, "category": { "type": "string" }, "condition": { "enum": [ "new", "excellent", "good", "worn", "needs_repair", "retired" ], "type": "string" }, "model": { "type": "string" }, "notes": { "type": "string" } }, "type": "object" }, "merchant": { "description": "Where it was bought; stands in for name when name is missing.", "type": "string" }, "name": { "description": "What was bought (also the Inventory item name). Alias: merchant.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "name", "amount" ], "type": "object" }, "name": "record_purchase", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "expense_id": { "type": [ "string", "null" ] }, "inventory_id": { "type": [ "string", "null" ] }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "transaction": { "additionalProperties": true, "description": "Expense/income transaction row.", "type": "object" } }, "type": "object" } }, { "description": "Mark inventory sold + record sale proceeds with gain/loss. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "description": "Sale proceeds.", "type": "number" }, "currency": { "description": "ISO 4217; default USD.", "type": "string" }, "date": { "description": "Alias for sold_at.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "inventory_id": { "description": "The item sold (get_inventory / search_inventory).", "type": "string" }, "marketplace": { "description": "Where it sold (the income row's merchant; default \"sale\").", "type": "string" }, "notes": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "sold_at": { "description": "YYYY-MM-DD; default today. Alias: date.", "type": "string" } }, "required": [ "inventory_id", "amount" ], "type": "object" }, "name": "record_sale", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "expense_id": { "type": [ "string", "null" ] }, "inventory_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "realized_gain_loss": { "type": [ "string", "null" ] } }, "type": "object" } }, { "description": "Preview first, 30-day undo. Remove one alias from a CRM person. Reviewed and reversible: first call preview_destructive_change({ tool: \"remove_person_alias\", arguments: { person_id, alias } }), which stores the exact change without applying it. After the user confirms, call remove_person_alias with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. Restore brings back the alias with its kind, source and confidence. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "alias": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "person_id", "alias", "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "remove_person_alias", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "alias": { "type": "string" }, "change_id": { "type": [ "string", "null" ] }, "idempotent_replay": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "person_id": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "removed": { "type": "boolean" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" } }, "type": "object" } }, { "description": "Preview first, 30-day undo. Resets a sobriety/streak tracker for the authenticated user (sets current value to 0 and restarts the clock). Prefer tracker_id from get_trackers, or tracker_title fuzzy match; optional reset_at (ISO) and note go in the preview arguments. Rebuilds life_state. Reviewed and reversible: first call preview_destructive_change({ tool: \"reset_tracker\", arguments: { tracker_id } }), which stores the exact change without applying it. After the user confirms, call reset_tracker with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. Restore puts back the previous start date, streak and reset count. Requires API key or OAuth with context.delete. Share tokens cannot write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "note": { "description": "Optional note stored in tracking history", "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "reset_at": { "description": "ISO datetime of the reset (default now)", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" }, "title": { "description": "Alias of tracker_title", "type": "string" }, "tracker_id": { "description": "Event UUID of the tracker", "type": "string" }, "tracker_title": { "description": "Title match when id unknown", "type": "string" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "reset_tracker", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "error": { "type": "string" }, "idempotent_replay": { "type": "boolean" }, "invalidates": { "items": { "type": "string" }, "type": "array" }, "life_state_rebuilt": { "type": "boolean" }, "message": { "type": "string" }, "ok": { "type": "boolean" }, "preview_id": { "type": "string" }, "previous_days": { "type": "number" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "reset_date": { "type": "string" }, "reset_time": { "type": "string" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" }, "tracker_id": { "type": "string" }, "tracker_reset_count": { "type": "number" }, "tracker_title": { "type": [ "string", "null" ] } }, "required": [], "type": "object" } }, { "description": "Link a clarification surface to an existing person. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "clarification_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "type": "string" }, "person_name": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "clarification_id" ], "type": "object" }, "name": "resolve_clarification", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "message": { "type": [ "string", "null" ] }, "person_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "resolved": { "type": "boolean" } }, "type": "object" } }, { "description": "Pending Replies: mark a reply done: sent (default; the user replied, logged privately in the contact's history) or dismissed. Dayze sends nothing. By reply_id, or person_name / person_id when that person has exactly one unsent reply (otherwise the candidates come back and nothing changes). Marking sent writes one private interaction for the linked contact (not for an unlinked reply, and not twice); interaction in the result says what was written. Reopen with update_pending_reply status pending. Requires API key or OAuth with context.write. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "outcome": { "enum": [ "sent", "dismissed" ], "type": "string" }, "person_id": { "type": "string" }, "person_name": { "type": "string" }, "reply_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "type": "object" }, "name": "resolve_pending_reply", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "already_resolved": { "type": "boolean" }, "interaction": { "additionalProperties": false, "description": "The contact-history write-back of a reply marked sent by this call; null when nothing was marked sent now.", "properties": { "interaction_id": { "type": [ "string", "null" ] }, "logged": { "description": "True when this call wrote it.", "type": "boolean" }, "occurred_at": { "type": [ "string", "null" ] }, "person_id": { "type": [ "string", "null" ] }, "reason": { "description": "logged, unlinked, already_logged, gmail_sync_logged or storage_error", "type": "string" }, "summary": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private: interactions are the owner's alone.", "type": "string" } }, "required": [ "logged", "reason", "interaction_id", "person_id", "visibility" ], "type": [ "object", "null" ] }, "life_state_rebuilt": { "type": "boolean" }, "message": { "type": "string" }, "outcome": { "description": "sent or dismissed", "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "reply": { "additionalProperties": false, "description": "One reply the user owes (Inbox → Pending Replies). Dayze never sends it.", "properties": { "approved_at": { "description": "PHI-427: when the owner approved the draft and opened it in Gmail, or null. Dayze never sends; the Gmail sync closes the reply when the email goes out.", "type": [ "string", "null" ] }, "category": { "description": "personal or work", "type": "string" }, "channel": { "type": "string" }, "created_at": { "type": [ "string", "null" ] }, "draft": { "description": "The reply text saved for later.", "type": [ "string", "null" ] }, "due": { "description": "Owed now: pending, or snoozed with snooze_until passed. False while a snooze runs, and when sent or dismissed.", "type": "boolean" }, "is_private": { "description": "Always true.", "type": "boolean" }, "person_id": { "description": "Linked contact id; null when the reply is unlinked.", "type": [ "string", "null" ] }, "person_name": { "type": "string" }, "received_at": { "type": "string" }, "reply_id": { "type": "string" }, "responded_at": { "type": [ "string", "null" ] }, "snooze_until": { "type": [ "string", "null" ] }, "source": { "additionalProperties": false, "description": "The email it answers, as ids only; null when none was saved.", "properties": { "kind": { "description": "gmail, email or other", "type": "string" }, "message_id": { "type": [ "string", "null" ] }, "thread_id": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "state": { "description": "unsent (pending or snoozed), sent (the owner replied) or dismissed", "type": "string" }, "status": { "description": "pending, snoozed, responded or dismissed", "type": "string" }, "summary": { "type": [ "string", "null" ] }, "updated_at": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private: Pending Replies have no sharing setting.", "type": "string" } }, "required": [ "reply_id", "person_name", "person_id", "channel", "category", "summary", "draft", "status", "state", "due", "received_at", "source", "visibility", "is_private" ], "type": "object" }, "resolved": { "description": "True when this call changed the reply.", "type": "boolean" } }, "required": [ "reply", "resolved", "already_resolved", "outcome", "message", "life_state_rebuilt" ], "type": "object" } }, { "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. With financial_details:read, net_worth_assessment has the same sourced fields as the Contacts card; context-only evidence carries no personal number. 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)", "inputSchema": { "additionalProperties": false, "properties": { "include_notes": { "default": false, "description": "Include redacted notes (default false)", "type": "boolean" }, "name": { "description": "Nickname or display name to resolve", "type": "string" }, "query": { "description": "Alias for name", "type": "string" } }, "required": [ "name" ], "type": "object" }, "name": "resolve_person", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "aliases": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "candidates": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "matched_via": { "type": [ "string", "null" ] }, "person": { "additionalProperties": true, "type": "object" }, "query": { "type": "string" }, "resolved": { "type": "boolean" } }, "type": "object" } }, { "description": "Canonicalize a venue name via place aliases and fuzzy match. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "name": { "type": "string" }, "place": { "type": "string" }, "query": { "type": "string" } }, "type": "object" }, "name": "resolve_place", "outputSchema": { "additionalProperties": true, "properties": { "candidates": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "matched_via": { "type": [ "string", "null" ] }, "place": { "additionalProperties": true, "description": "Canonical place record.", "type": [ "object", "null" ] }, "query": { "type": "string" }, "resolved": { "type": "boolean" } }, "required": [ "query", "resolved" ], "type": "object" } }, { "description": "Undo a reviewed destructive change by restore_id within 30 days: deleted rows come back with their links, archived or overwritten fields revert, and inserted history rows are removed. Refuses if the record was edited since; repeats are no-ops. Call-time aliases: restore_food, restore_place, restore_inventory_item, restore_asset, restore_tracker, restore_memory. Contact deletes/merges use undo_contact_change; event/expense/trip archives use restore_event/restore_expense/restore_trip. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "description": "Optional idempotency key.", "type": "string" }, "restore_id": { "description": "restore_id returned by the destructive tool.", "type": "string" } }, "required": [ "restore_id" ], "type": "object" }, "name": "restore_change", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "linked_rows_reinserted": { "type": "number" }, "linked_rows_relinked": { "type": "number" }, "linked_rows_skipped": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "message": { "type": [ "string", "null" ] }, "operations_reverted": { "type": "number" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "restored": { "type": "boolean" }, "tool": { "type": "string" }, "undone": { "type": "boolean" } }, "type": "object" } }, { "description": "Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "type": "string" }, "restore_id": { "type": "string" } }, "required": [ "restore_id", "request_id" ], "type": "object" }, "name": "restore_cleanup", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "type": "string" }, "restore_id": { "type": "string" } }, "required": [ "restore_id", "request_id" ], "type": "object" }, "name": "restore_event", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "type": "string" }, "restore_id": { "type": "string" } }, "required": [ "restore_id", "request_id" ], "type": "object" }, "name": "restore_expense", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Restore an archive or normalization receipt. Requires restore_id and request_id. Receipts stay restorable for at least 30 days (archived rows are retained, not purged). Refuses intervening edits; repeats are no-ops. ($0; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "type": "string" }, "restore_id": { "type": "string" } }, "required": [ "restore_id", "request_id" ], "type": "object" }, "name": "restore_trip", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "candidate_hash": { "type": "string" }, "changed": { "type": "boolean" }, "expires_at": { "type": "string" }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_id": { "type": "string" }, "rows": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "server_time": { "type": "string" } }, "type": "object" } }, { "description": "Score likely CRM duplicate pairs before merge_people. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "type": "number" }, "min_probability": { "type": "number" }, "person_id": { "description": "Score against one person; omit for global scan.", "type": "string" } }, "type": "object" }, "name": "score_people_duplicates", "outputSchema": { "additionalProperties": true, "properties": { "candidates": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "count": { "type": "number" } }, "required": [ "candidates", "count" ], "type": "object" } }, { "description": "Search the authenticated user life graph. Optional from/to (aliases start/end) are inclusive account-local civil dates on every search route; either bound may be used alone. Dated semantic and keyword records use event date, expense date, goal start date, check-in date, or the account-local creation date of contacts and memories. Deterministic routing first: food or 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. Records carry inspect_url (their Dayze page): cite with it, never build a link from an id; a record without one has no page (inspect_note says which). Requires OAuth or a supported scoped credential. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "anyOf": [ { "required": [ "query" ] }, { "required": [ "q" ] } ], "properties": { "end": { "description": "Alias for to.", "type": "string" }, "entity_type": { "description": "Route a Moment query to search_moments.", "enum": [ "moment" ], "type": "string" }, "from": { "description": "Inclusive account-local YYYY-MM-DD lower bound for all search routes. May be used alone.", "type": "string" }, "limit": { "default": 10, "description": "Max results 1–50", "type": "number" }, "q": { "description": "Alias for query.", "type": "string" }, "query": { "description": "Primary search query.", "type": "string" }, "start": { "description": "Alias for from.", "type": "string" }, "to": { "description": "Inclusive account-local YYYY-MM-DD upper bound for all search routes. May be used alone.", "type": "string" } }, "type": "object" }, "name": "search", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "intent": { "type": "string" }, "mode": { "enum": [ "semantic", "keyword", "blended", "structured" ], "type": "string" }, "results": { "items": { "additionalProperties": false, "properties": { "content": { "type": "string" }, "event_date": { "type": "string" }, "food_id": { "type": "string" }, "inspect_url": { "description": "PHI-434: the Dayze page for this record, when it has one.", "type": "string" }, "photo_url": { "description": "Meal photo on a food result, when one is attached.", "type": "string" }, "similarity": { "type": "number" }, "source_id": { "type": "string" }, "source_type": { "type": "string" }, "title": { "type": "string" } }, "required": [ "source_type", "source_id", "title", "content", "similarity" ], "type": "object" }, "type": "array" } }, "required": [ "mode", "results" ], "type": "object" } }, { "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. For clock-time constraints, pass after/before as account-local civil datetimes; the tool converts them to precise UTC instants. Returns id, subject, from, canonical date, account-local date_local, time_zone, and snippet only (no body), newest first (newest_first: true). For the latest / most recent email from someone, query from:<sender> alone, without quoted topic phrases (the newest reply often lacks them); a from: + topic search with no match from the last 7 days also searches the sender alone and marks those messages sender_only (see note). Follow up with read_gmail_message. Cannot send, archive, or delete. Never invent email contents. If Gmail is not connected, connect at /integrations. Requires mail.read on an API key or non-ChatGPT OAuth connection. ChatGPT profiles do not grant mail.read or list this tool. Share tokens cannot call this tool. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "account": { "description": "Mailbox email, connection id, or Google subject (from list_gmail_accounts)", "type": "string" }, "after": { "description": "Exclusive lower bound as account-local YYYY-MM-DDTHH:mm, or an offset-aware ISO instant", "type": "string" }, "before": { "description": "Exclusive upper bound as account-local YYYY-MM-DDTHH:mm, or an offset-aware ISO instant", "type": "string" }, "email": { "description": "Alias for account", "type": "string" }, "max_results": { "default": 10, "description": "Max messages to return (default 10, max 20)", "type": "number" }, "q": { "description": "Alias for query", "type": "string" }, "query": { "description": "Gmail search query, e.g. \"is:unread newer_than:7d\", \"from:airline subject:itinerary\", \"receipt newer_than:30d\"", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_gmail", "outputSchema": { "additionalProperties": false, "properties": { "account": { "type": [ "string", "null" ] }, "after": { "type": "string" }, "before": { "type": "string" }, "messages": { "items": { "additionalProperties": false, "properties": { "date": { "type": "string" }, "date_local": { "type": "string" }, "from": { "type": "string" }, "id": { "type": "string" }, "sender_only": { "description": "From the sender-only check: the sender's mail, missing some of the topic terms.", "type": "boolean" }, "snippet": { "type": "string" }, "subject": { "type": "string" }, "time_zone": { "type": "string" } }, "required": [ "id", "subject", "from", "date", "date_local", "time_zone", "snippet" ], "type": "object" }, "type": "array" }, "newest_first": { "description": "Messages are ranked newest first by received time.", "type": "boolean" }, "note": { "description": "What the ranking means for a \"latest email\" answer.", "type": "string" }, "query": { "type": "string" }, "result_size_estimate": { "type": [ "number", "null" ] }, "sender_check": { "additionalProperties": false, "description": "A from: + topic search with no recent match also searched the sender alone (one extra search).", "properties": { "added": { "type": "number" }, "failed": { "type": "boolean" }, "query": { "type": "string" }, "reason": { "type": "string" }, "window_days": { "type": "number" } }, "required": [ "query", "reason", "window_days", "added", "failed" ], "type": "object" }, "time_zone": { "type": "string" }, "unavailable_count": { "description": "Matches whose details could not be loaded; one may be newer.", "type": "number" } }, "required": [ "query", "result_size_estimate", "newest_first", "messages", "time_zone" ], "type": "object" } }, { "description": "Search owned Inventory by name, brand, model, notes or reference number (query), with the same filters as get_inventory. Returns photo_count, has_photos, cover_url; when empty, photo_hint explains upload_asset linkage. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "category": { "description": "e.g. electronics, watches, clothing", "type": "string" }, "include_archived": { "description": "Include archived and no-longer-owned items.", "type": "boolean" }, "include_sensitive": { "description": "API keys only: include stored identifiers. Ignored for connectors without pii:read.", "type": "boolean" }, "limit": { "description": "1-200, default 50", "type": "number" }, "offset": { "type": "number" }, "query": { "description": "Match name, brand, model, notes or reference number.", "type": "string" }, "sort_by": { "enum": [ "created_at", "name", "value" ], "type": "string" }, "status": { "enum": [ "wishlist", "ordered", "owned", "listed_for_sale", "sold", "returned", "lost", "disposed", "donated", "archived" ], "type": "string" } }, "type": "object" }, "name": "search_inventory", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "items": { "items": { "additionalProperties": true, "description": "Inventory item record. With specs: spec_template, specs, state (a timestamped snapshot), state_freshness and capability_summary.", "type": "object" }, "type": "array" }, "query": { "type": [ "string", "null" ] } }, "required": [ "count" ], "type": "object" } }, { "description": "Search only owned Moment stories and titles within an optional date range. Returns stable moment_ids. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "YYYY-MM-DD inclusive", "type": "string" }, "limit": { "type": "integer" }, "offset": { "type": "integer" }, "query": { "type": "string" }, "to": { "description": "YYYY-MM-DD inclusive", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "search_moments", "outputSchema": { "additionalProperties": false, "properties": { "moments": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "next_offset": { "type": [ "number", "null" ] }, "search_mode": { "type": "string" } }, "required": [ "moments", "search_mode", "next_offset" ], "type": "object" } }, { "description": "Search person photos and entity assets by query/metadata. Returns inline MCP image attachments. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "from": { "description": "Inclusive YYYY-MM-DD: photos added on or after this day (UTC).", "type": "string" }, "limit": { "description": "Max photos 1-50, default 20.", "type": "number" }, "person_ids": { "items": { "type": "string" }, "type": "array" }, "place_id": { "type": "string" }, "query": { "type": "string" }, "to": { "description": "Inclusive YYYY-MM-DD: photos added on or before this day (UTC).", "type": "string" } }, "type": "object" }, "name": "search_photos", "outputSchema": { "additionalProperties": true, "properties": { "count": { "type": "number" }, "photos": { "items": { "additionalProperties": true, "description": "Photo or entity asset metadata.", "type": "object" }, "type": "array" }, "query": { "type": [ "string", "null" ] } }, "required": [ "count" ], "type": "object" } }, { "description": "Search individual transaction rows by merchant/description/category, or exact tag (project:/ext:/rail:). Requires context.read and financial_details:read. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "cursor": { "description": "Continue the same immutable one-hour snapshot; other filters remain frozen.", "type": "string" }, "include_archived": { "type": "boolean" }, "limit": { "description": "Page size 1-500, default 100.", "type": "number" }, "offset": { "description": "Skip this many rows of a new snapshot (a cursor carries its own).", "type": "number" }, "project": { "type": "string" }, "query": { "type": "string" }, "tag": { "type": "string" } }, "type": "object" }, "name": "search_transactions", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "count": { "type": "number" }, "inspect_note": { "description": "How to cite: link each record with its inspect_url, never a link built from an id; which record types here have no Dayze page.", "type": "string" }, "query": { "type": "string" }, "transactions": { "items": { "additionalProperties": true, "description": "Expense/income transaction row.", "type": "object" }, "type": "array" } }, "required": [ "count" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "name": { "type": "string" }, "person_id": { "type": "string" }, "preserve_old_name_as_alias": { "type": "boolean" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "person_id", "name" ], "type": "object" }, "name": "set_primary_person_name", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "change_id": { "type": [ "string", "null" ] }, "message": { "type": [ "string", "null" ] }, "person": { "additionalProperties": true, "description": "CRM person record.", "type": "object" }, "previous_name": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "Server-side cleanup audit. Records the audit run and returns a review queue; it never changes, merges or deletes contacts, so there is nothing to undo. Apply candidates with merge_people_preview → merge_people or normalize_people_preview → normalize_people_apply (both reversible for 30 days). ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "auto_merge_threshold": { "type": "number" }, "checks": { "items": { "type": "string" }, "type": "array" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "type": "object" }, "name": "start_people_cleanup", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "auto_merged_count": { "type": "number" }, "cleanup_id": { "type": "string" }, "items_needing_approval": { "type": "number" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "status": { "type": "string" } }, "type": "object" } }, { "description": "Reverse a reversible contact change (rename, alias, identity, classify, link). For merges, deletes, unlink_people, remove_person_alias and convert_contact_entity, pass restore_id as change_id within 30 days. Restore rejects later edits rather than overwriting them. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "change_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" } }, "required": [ "change_id" ], "type": "object" }, "name": "undo_contact_change", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "change_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "not_restored": { "description": "Fields the undo left as they are, e.g. the birthday of an update_person saved before MCP 1.41.5.", "items": { "additionalProperties": false, "properties": { "field": { "type": "string" }, "reason": { "type": "string" } }, "required": [ "field", "reason" ], "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "undone": { "type": "boolean" } }, "type": "object" } }, { "description": "Undo an owned event fact correction by ledger ID. Supply request_id for safe retries. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "correction_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "request_id": { "type": "string" } }, "required": [ "correction_id", "request_id" ], "type": "object" }, "name": "undo_event_fact_correction", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "correctionId": { "type": "string" }, "ok": { "type": "boolean" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "recordState": { "type": "string" }, "status": { "additionalProperties": true, "type": "object" } }, "required": [ "ok" ], "type": "object" } }, { "description": "Preview first, 30-day undo. Remove a person↔person graph edge (by connection_id, or person_id + other_person_id). Reviewed and reversible: first call preview_destructive_change({ tool: \"unlink_people\", arguments: { connection_id } }), which stores the exact change without applying it. After the user confirms, call unlink_people with preview_id, restore_window_acknowledged: true and request_id; the reviewed preview is applied exactly and a changed record is refused. Returns restore_id; restore_change({ restore_id }) undoes it for 30 days unless the record was edited since. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "connection_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "other_person_id": { "type": "string" }, "person_id": { "type": "string" }, "preview_id": { "description": "preview_id returned by preview_destructive_change for this tool.", "type": "string" }, "request_id": { "description": "Required idempotency key; retries return the original receipt.", "type": "string" }, "restore_window_acknowledged": { "description": "Must be true after reviewing the preview and its 30-day restore window.", "type": "boolean" } }, "required": [ "preview_id", "restore_window_acknowledged", "request_id" ], "type": "object" }, "name": "unlink_people", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "idempotent_replay": { "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "preview_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "restore_expires_at": { "type": "string" }, "restore_id": { "description": "Pass to restore_change to undo within restore_window_days.", "type": "string" }, "restore_window_days": { "type": "number" }, "reversible": { "type": "boolean" }, "unlinked": { "type": "boolean" } }, "type": "object" } }, { "description": "Patch role, metadata, description, or parent_asset_id (e.g. mark as processed). ($0.08; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "asset_id": { "type": "string" }, "asset_type": { "type": "string" }, "description": { "type": "string" }, "filename": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "metadata": { "description": "Free-form metadata, merged into the stored metadata (metadata.source becomes the asset source).", "type": "object" }, "parent_asset_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "role": { "description": "original | cover | thumbnail | …", "enum": [ "original", "processed", "thumbnail", "cover", "document", "receipt", "certificate", "photo", "other" ], "type": "string" } }, "required": [ "asset_id" ], "type": "object" }, "name": "update_asset", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "asset": { "additionalProperties": true, "type": "object" }, "asset_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "updated": { "type": "boolean" } }, "type": "object" } }, { "description": "Patch a condition by condition_id with its explicit subject_type (and person_id for a contact). The subject must match. Patch status, confirmation_status, source or condition fields; omitted fields stay untouched and null clears nullable text. Never infer active/confirmed. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "body_area": { "description": "Where, e.g. \"Left eye\".", "type": "string" }, "condition_id": { "description": "From get_conditions or create_condition.", "type": "string" }, "confirmation_status": { "description": "unconfirmed | reported (default) | confirmed; never infer confirmed.", "enum": [ "unconfirmed", "reported", "confirmed" ], "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "name": { "description": "What the user calls it, in their words (e.g. \"Blurry near vision\"). Never a diagnosis they did not give.", "type": "string" }, "notes": { "type": "string" }, "person_id": { "description": "Owned contact id; required for person.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "description": "Provenance, e.g. user_reported. Default user_reported.", "type": "string" }, "started_on": { "description": "YYYY-MM-DD it started (onset). Default for a new one: today.", "type": "string" }, "status": { "description": "suspected (default for a new one) | active | improving | resolved.", "enum": [ "suspected", "active", "improving", "resolved" ], "type": "string" }, "subject_type": { "description": "self, or person with person_id.", "enum": [ "self", "person" ], "type": "string" }, "symptoms": { "description": "What they notice, e.g. \"Blurry at near distance, worse in the evening\".", "type": "string" }, "tracking_focus": { "description": "What to watch on each check-in.", "type": "string" }, "treatments": { "description": "What they use or do for it.", "type": "string" } }, "required": [ "condition_id", "subject_type" ], "type": "object" }, "name": "update_condition", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed_fields": { "items": { "type": "string" }, "type": "array" }, "condition": { "additionalProperties": true, "description": "A private condition with explicit subject_type/person_id, source and confirmation_status.", "type": "object" }, "condition_id": { "type": "string" }, "idempotent_replay": { "description": "true when this request_id already ran: the first result, nothing new written.", "type": "boolean" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "address": { "type": "string" }, "check_in": { "description": "Write a location_visits row when place or coordinates are set (default true in that case)", "type": "boolean" }, "city": { "type": "string" }, "country": { "type": "string" }, "idempotency_key": { "type": "string" }, "latitude": { "type": "number" }, "location": { "description": "Freeform “City, Country” or “Venue, City, Country”", "type": "string" }, "longitude": { "type": "number" }, "place": { "description": "Venue / residence name (e.g. The Madeira)", "type": "string" }, "request_id": { "type": "string" }, "set_home": { "description": "Also write profiles.location / home_location (default true)", "type": "boolean" }, "venue": { "description": "Alias for place", "type": "string" } }, "type": "object" }, "name": "update_current_location", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "check_in": { "type": "boolean" }, "context": { "additionalProperties": true, "description": "Fresh get_location_context after write.", "type": "object" }, "current_city": { "type": [ "string", "null" ] }, "current_country": { "type": [ "string", "null" ] }, "location": { "type": [ "string", "null" ] }, "message": { "type": "string" }, "place": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "set_home": { "type": "boolean" }, "updated": { "type": "boolean" }, "visit_id": { "type": [ "string", "null" ] } }, "type": "object" } }, { "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 (alias notes), category, external_url, image_url, timezone, visibility, people / with / person_ids, scoreboard (merged; null clears). Adds a bedtime to a wake-only sleep: event_time (and event_date / end_date when it was the night before). 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)", "inputSchema": { "additionalProperties": false, "properties": { "category": { "description": "e.g. sleep, funeral, family, work, travel. Stored as events.category and event_type.", "type": "string" }, "date": { "description": "Alias for event_date.", "type": "string" }, "date_precision": { "description": "Soft date precision stored in metadata.", "enum": [ "day", "month", "year", "approx" ], "type": "string" }, "description": { "description": "Notes about the event (replaces). Empty or null clears. Alias: notes.", "type": "string" }, "end_date": { "description": "Optional end date YYYY-MM-DD (multi-day, or a night that ends the next day).", "type": "string" }, "end_time": { "description": "Optional end time (same formats as event_time).", "type": "string" }, "event_date": { "description": "Start date YYYY-MM-DD, YYYY-MM, or YYYY. Alias: date.", "type": "string" }, "event_id": { "description": "UUID of a calendar event the authenticated user owns", "type": "string" }, "event_time": { "description": "Start time: 8pm, 20:00, or 20:00:00. Empty or null clears. Alias: time.", "type": "string" }, "external_url": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "image_url": { "description": "Cover image URL. Empty or null clears.", "type": "string" }, "location": { "description": "Empty or null clears", "type": "string" }, "notes": { "description": "Alias for description.", "type": "string" }, "people": { "description": "People names or person UUIDs to add (event_people role=with). Does not remove existing tags.", "items": { "type": "string" }, "type": "array" }, "people_names": { "description": "Alias for people.", "items": { "type": "string" }, "type": "array" }, "person_ids": { "description": "Owned person UUIDs to tag (user-scoped).", "items": { "type": "string" }, "type": "array" }, "person_name": { "description": "One person to tag, by name.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original successful result).", "type": "string" }, "scoreboard": { "additionalProperties": false, "description": "Operating status as data (not description prose). state is required when the event has no scoreboard yet. On update_event fields merge; a null field clears it; scoreboard null removes the record.", "properties": { "blocker": { "type": "string" }, "evidence": { "type": "string" }, "last_verified": { "description": "YYYY-MM-DD", "type": "string" }, "metric": { "description": "Progress readout, e.g. 2/5", "type": "string" }, "next_review": { "description": "YYYY-MM-DD", "type": "string" }, "next_step": { "type": "string" }, "owner": { "type": "string" }, "state": { "enum": [ "not_started", "on_track", "at_risk", "blocked", "done" ], "type": "string" } }, "type": "object" }, "time": { "description": "Alias for event_time.", "type": "string" }, "timezone": { "description": "IANA timezone for wall-clock display. Empty or null clears.", "type": "string" }, "title": { "description": "Updated title (replaces). Cannot be empty.", "type": "string" }, "visibility": { "description": "Updates both events.visibility and the enforced events.is_private flag.", "enum": [ "private", "friends", "public" ], "type": "string" }, "with": { "description": "Alias for people.", "items": { "type": "string" }, "type": "array" } }, "required": [ "event_id" ], "type": "object" }, "name": "update_event", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed": { "additionalProperties": true, "description": "Changed fields with before and after values.", "type": "object" }, "event": { "additionalProperties": true, "description": "A Dayze calendar event record.", "type": "object" }, "life_state_rebuilt": { "type": "boolean" }, "people_tagged": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "unresolved_people": { "items": { "type": "string" }, "type": "array" } }, "required": [ "event", "changed", "people_tagged", "unresolved_people", "life_state_rebuilt" ], "type": "object" } }, { "description": "PATCH an expense row. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "type": "number" }, "category": { "type": "string" }, "currency": { "type": "string" }, "date": { "description": "YYYY-MM-DD expense_date", "type": "string" }, "description": { "type": "string" }, "expense_id": { "type": "string" }, "external_id": { "description": "Optional; merges ext:{source}:{id} into tags", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "merchant": { "type": "string" }, "notes": { "type": "string" }, "payment_method": { "description": "e.g. venmo, cash, card", "type": "string" }, "project": { "description": "Venture label → project:{slug} tag", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "description": "Alias of payment_method", "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" } }, "required": [ "expense_id" ], "type": "object" }, "name": "update_expense", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed": { "additionalProperties": true, "type": "object" }, "expense": { "additionalProperties": true, "description": "Expense/income transaction row.", "type": "object" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "description": "MUTATES one existing Food Diary row the authenticated user owns. Required: food_id (UUID). Optional patch (same fields as log_food): what, kind, dish_items, place, merchant, notes, append_notes (concat), consumed_at (ISO instant) / meal_period (profile TZ), amount, currency, paid_by / payment_method, with / people_names / person_ids. dish_items replaces the complete ordered dish list. 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)", "inputSchema": { "additionalProperties": false, "properties": { "amount": { "description": "Price if mentioned", "type": "number" }, "append_notes": { "description": "Append text to existing notes (newline-separated)", "type": "string" }, "consumed_at": { "description": "ISO instant; wins over meal_period", "type": "string" }, "currency": { "description": "ISO currency, e.g. SGD", "type": "string" }, "description": { "description": "Alias for what (the dish, not notes).", "type": "string" }, "dish_items": { "description": "Complete replacement ordered dish list; [] clears it.", "items": { "additionalProperties": false, "properties": { "name": { "type": "string" }, "price": { "minimum": 0, "type": "number" }, "rating": { "maximum": 5, "minimum": 1, "type": "number" } }, "required": [ "name" ], "type": "object" }, "type": "array" }, "dishes": { "description": "Alias for dish_items.", "type": "array" }, "food": { "description": "Alias for what.", "type": "string" }, "food_id": { "description": "UUID of a food diary row the authenticated user owns", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "item": { "description": "Alias for what.", "type": "string" }, "kind": { "enum": [ "meal", "snack", "drink" ], "type": "string" }, "meal_period": { "description": "Spoken period when consumed_at is omitted, e.g. \"late lunch\"", "type": "string" }, "merchant": { "description": "Restaurant, stall, or shop. Empty or null clears", "type": "string" }, "notes": { "description": "Replaces notes. Empty or null clears", "type": "string" }, "paid_by": { "description": "Who paid (name or alias)", "type": "string" }, "payment_method": { "description": "Alias of paid_by for expense-style agents", "type": "string" }, "people": { "description": "Alias for with", "items": { "type": "string" }, "type": "array" }, "people_names": { "description": "Alias for with", "items": { "type": "string" }, "type": "array" }, "person_ids": { "description": "Owned person UUIDs to tag (user-scoped)", "items": { "type": "string" }, "type": "array" }, "person_name": { "description": "One companion to add, by name", "type": "string" }, "place": { "description": "Venue or location. Empty or null clears", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "what": { "description": "Full updated dish/drink text (replaces, does not append). Example: Salmon Bento + hot tea", "type": "string" }, "with": { "description": "Companion names, aliases, or ids to add (does not remove existing tags)", "items": { "type": "string" }, "type": "array" } }, "required": [ "food_id" ], "type": "object" }, "name": "update_food", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed": { "additionalProperties": true, "description": "Changed fields with before and after values.", "type": "object" }, "event_id": { "type": [ "string", "null" ] }, "food_id": { "type": "string" }, "food_log": { "additionalProperties": true, "description": "Updated Food Diary row.", "type": "object" }, "life_state_rebuilt": { "type": "boolean" }, "people_tagged": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "unresolved_people": { "items": { "type": "string" }, "type": "array" } }, "required": [ "food_id", "event_id", "food_log", "changed", "people_tagged", "unresolved_people", "life_state_rebuilt" ], "type": "object" } }, { "description": "Patch one owned Inventory item, found by inventory_id or by nickname: what the user calls it (\"MacBook\", \"work laptop\"), matched to exactly one of their active items by nickname, name or model, so there is no need to look it up first; several matches are refused with the candidates and nothing changes. Fields you leave out are untouched. specs merge per key (null removes a key), so updating memory keeps storage. state records a new observation (observed_at, source, confidence) and never changes specs or notes; a key already observed more recently is kept. spec_template switches or clears (null) the template. A status like sold or donated moves it out of the active list; to archive, use archive_inventory_item. Never add device or account identifiers. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "acquired_date": { "description": "YYYY-MM-DD it came into the user's life (gift, inheritance). add_inventory_item also stores it as purchase_date when none is given.", "type": "string" }, "acquired_from": { "description": "Shop or person it came from.", "type": "string" }, "acquisition_type": { "description": "purchase | gift | inheritance | …", "type": "string" }, "brand": { "type": "string" }, "category": { "description": "electronics | instruments | clothing | shoes | bags | accessories | jewelry | watches | collectibles | sports | health | home | tools | vehicles | furniture | other. Computers, phones and cameras are electronics; synths are instruments. Defaults to the spec_template's category, else other.", "type": "string" }, "condition": { "enum": [ "new", "excellent", "good", "worn", "needs_repair", "retired" ], "type": "string" }, "currency": { "description": "ISO 4217, e.g. USD, SGD. Default USD.", "type": "string" }, "current_value": { "description": "Alias for estimated_value (the stored column).", "type": "number" }, "estimated_value": { "description": "What it is worth now. Alias: current_value.", "type": "number" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "inventory_id": { "description": "The item id from add_inventory_item, get_inventory or search_inventory.", "type": "string" }, "item_type": { "description": "Alias for subtype (the stored column).", "type": "string" }, "location": { "description": "Where it is kept.", "type": "string" }, "model": { "type": "string" }, "name": { "description": "What the user calls the item, e.g. \"MacBook Pro 14 (2023)\".", "type": "string" }, "nickname": { "description": "In place of inventory_id: what the user calls the item (\"MacBook\", \"work laptop\"), matched to exactly one of their active items by nickname, name or model. Several matches are refused with the candidates. To rename it, set specs.nickname.", "type": "string" }, "notes": { "description": "Free text from the user.", "type": "string" }, "purchase_date": { "description": "YYYY-MM-DD", "type": "string" }, "purchase_price": { "type": "number" }, "reference_number": { "description": "Manufacturer reference or model number (e.g. a watch reference).", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "spec_template": { "description": "Which typed fields specs uses. Templates are listed in docs/MCP_LIFE_GRAPH.md. null (update) clears it.", "enum": [ "computer.v1", "phone.v1", "camera.v1", "synth.v1" ], "type": "string" }, "specs": { "description": "Stable facts, by the template's field names (computer.v1: nickname, manufacturer, model_name, model_identifier, year, primary_uses, capability_tags, product_family, form_factor, chip, cpu, architecture, performance_cores, efficiency_cores, total_cores, threads, gpu, gpu_cores, gpu_memory_bytes, neural_engine_cores, memory_bytes, memory, storage_devices, display, ports). Merged per key on update; null removes a key; other keys are kept as written. Only what the user or the device says, never inferred from a model name. Never device or account identifiers.", "type": "object" }, "specs_schema_version": { "description": "Layout of specs and state. Only 1 (the default).", "type": "integer" }, "state": { "description": "Changing facts, as one observation: observed_at (ISO, default now), source (e.g. user_reported, system_profiler), confidence (0-1), and values such as os { name, version, build }, available_storage_bytes, battery, security { sip, gatekeeper, filevault }, services { bluebubbles: { installed_version, running, configured, blockers, checked_at } }. Merged per key; a key observed more recently is kept. Never changes specs or notes. Never device or account identifiers.", "type": "object" }, "status": { "description": "Default owned. To archive, use archive_inventory_item.", "enum": [ "wishlist", "ordered", "owned", "listed_for_sale", "sold", "returned", "lost", "disposed", "donated" ], "type": "string" }, "subtype": { "description": "Specific kind: laptop, sweatshirt, guitar. Alias: item_type.", "type": "string" }, "subtype_confidence": { "description": "0-1, when the subtype is a guess.", "type": "number" }, "tags": { "description": "Replaces the tag list.", "items": { "type": "string" }, "type": "array" } }, "type": "object" }, "name": "update_inventory_item", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed": { "additionalProperties": true, "type": "object" }, "changed_fields": { "additionalProperties": true, "description": "Columns set, and the specs / state keys written.", "type": "object" }, "idempotent_replay": { "type": "boolean" }, "inventory_id": { "type": "string" }, "item": { "additionalProperties": true, "description": "Inventory item record. With specs: spec_template, specs, state (a timestamped snapshot), state_freshness and capability_summary.", "type": "object" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "resolved_from": { "additionalProperties": true, "description": "PHI-448: present when nickname found the item: the nickname sent and matched_on (nickname, name or model).", "type": "object" }, "state_not_applied": { "items": { "type": "string" }, "type": "array" }, "state_note": { "type": "string" } }, "type": "object" } }, { "description": "Patch one owned moment by moment_id (from log_moment); fields left out are untouched. It stays private. Requires moment_id. Patchable: title, description, moment_date, moment_date_precision, end_date, moment_type, location_name, people, event_id, images, tags. Unknown or other-user moment_id returns an error and creates nothing. person_ids / people_names, media_urls and tags replace the stored list ([] clears); event_id links an owned event (the event is not changed), empty or null unlinks. Visibility is not an argument. Returns changed_fields. Requires API key or OAuth with context.write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "cover_image_url": { "description": "https image link. Empty or null clears.", "type": "string" }, "date": { "description": "Alias for moment_date.", "type": "string" }, "description": { "description": "Replaces the story text. Empty or null clears.", "type": "string" }, "end_date": { "description": "YYYY-MM-DD. Empty or null clears.", "type": "string" }, "event_id": { "description": "Link the moment to an owned event (the event is not changed). Empty or null unlinks.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "location": { "description": "Alias for location_name.", "type": "string" }, "location_name": { "description": "Replaces the place. Empty or null clears. Alias: location.", "type": "string" }, "media_urls": { "description": "Replaces the image links. [] clears.", "items": { "type": "string" }, "type": "array" }, "moment_date": { "description": "YYYY-MM-DD, YYYY-MM or YYYY (alias date).", "type": "string" }, "moment_date_precision": { "description": "How exact the date is. YYYY-MM and YYYY default to month and year; circa for \"around then\".", "enum": [ "exact", "month", "year", "circa" ], "type": "string" }, "moment_id": { "description": "UUID of a moment the user owns (from log_moment).", "type": "string" }, "moment_time": { "description": "Optional local HH:mm or HH:mm:ss. Empty or null clears (date-only).", "type": "string" }, "moment_type": { "description": "Default memory.", "enum": [ "first_met", "milestone", "trip", "achievement", "memory", "anniversary", "life_event", "relationship", "career", "health", "creative", "loss", "other" ], "type": "string" }, "people_names": { "description": "Replaces the tagged people (with person_ids); names match saved contacts only.", "items": { "type": "string" }, "type": "array" }, "person_ids": { "description": "Replaces the tagged people (with people_names). [] clears. Owned contact ids only.", "items": { "type": "string" }, "type": "array" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "tags": { "description": "Replaces the tags. [] clears.", "items": { "type": "string" }, "type": "array" }, "title": { "description": "New title (max 200). Cannot be empty.", "type": "string" } }, "required": [ "moment_id" ], "type": "object" }, "name": "update_moment", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed_fields": { "description": "The columns this call changed; empty when nothing differed.", "items": { "type": "string" }, "type": "array" }, "invalidates": { "items": { "type": "string" }, "type": "array" }, "message": { "type": "string" }, "moment": { "additionalProperties": false, "description": "A moment: a story or memory, private to the owner. event_id links the event it is about.", "properties": { "ai_summary": { "type": [ "string", "null" ] }, "cover_image_url": { "type": [ "string", "null" ] }, "created_at": { "type": [ "string", "null" ] }, "description": { "type": [ "string", "null" ] }, "end_date": { "type": [ "string", "null" ] }, "event_id": { "type": [ "string", "null" ] }, "id": { "type": "string" }, "is_featured": { "type": "boolean" }, "is_pinned": { "type": "boolean" }, "is_recurring": { "type": "boolean" }, "location_lat": { "type": [ "number", "null" ] }, "location_lng": { "type": [ "number", "null" ] }, "location_name": { "type": [ "string", "null" ] }, "location_place_id": { "type": [ "string", "null" ] }, "media_urls": { "items": { "type": "string" }, "type": "array" }, "merged_provenance": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "moment_date": { "description": "YYYY-MM-DD (the first day of the month or year for a soft date).", "type": "string" }, "moment_date_precision": { "description": "exact, month, year or circa", "type": [ "string", "null" ] }, "moment_type": { "type": "string" }, "people_ids": { "items": { "type": "string" }, "type": "array" }, "recurrence_rule": { "type": [ "string", "null" ] }, "sentiment": { "type": [ "string", "null" ] }, "source": { "type": [ "string", "null" ] }, "tags": { "items": { "type": "string" }, "type": "array" }, "title": { "type": "string" }, "updated_at": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private for a moment an agent saves.", "type": "string" } }, "required": [ "id", "title", "moment_type", "moment_date", "people_ids", "media_urls", "tags", "visibility" ], "type": "object" }, "people_tagged": { "items": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "type": "array" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "unresolved_people": { "items": { "type": "string" }, "type": "array" } }, "required": [ "moment", "changed_fields", "people_tagged", "unresolved_people", "message" ], "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "about": { "type": "string" }, "before_fame": { "type": "string" }, "bio": { "type": "string" }, "birth_date": { "description": "YYYY, YYYY-MM, or YYYY-MM-DD. Null/empty clears", "type": "string" }, "birth_place": { "type": "string" }, "family_life": { "type": "string" }, "flag": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "net_worth": { "type": "string" }, "occupation": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "residence": { "type": "string" }, "slug": { "description": "Notable person slug (e.g. taylor-swift)", "type": "string" }, "trivia": { "type": "string" }, "zodiac": { "type": "string" } }, "required": [ "slug" ], "type": "object" }, "name": "update_notable", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed": { "additionalProperties": true, "description": "Changed fields with before and after values.", "type": "object" }, "person": { "additionalProperties": true, "description": "Updated notable catalog row (name, slug).", "type": "object" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "required": [ "person", "changed" ], "type": "object" } }, { "description": "Pending Replies: change one reply by reply_id: its draft (replaces; null clears), summary, channel, category, received_at, person (person_id, or person_name linked only on one match), source, or status pending (reopen / unsnooze) or snoozed with snooze_until. Unknown or other-user reply_id returns not_found. To mark it sent or dismissed use resolve_pending_reply. Never sends anything. Requires API key or OAuth with context.write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "category": { "enum": [ "personal", "work" ], "type": "string" }, "channel": { "description": "Where to reply: whatsapp, email, sms, call, imessage, telegram, instagram, facebook, signal, linkedin, twitter, slack, teams, work_email, zoom, dayze, other. Default email when source is set, else other.", "type": "string" }, "draft": { "description": "The reply text to send later, max 20,000 characters. Replaces the saved draft; empty or null clears. Alias: draft_message.", "type": "string" }, "draft_message": { "description": "Alias for draft.", "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "type": "string" }, "person_name": { "type": "string" }, "received_at": { "type": "string" }, "reply_id": { "description": "From create_pending_reply or get_pending_replies.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "snooze_until": { "description": "ISO date-time, with status snoozed.", "type": "string" }, "source": { "additionalProperties": false, "description": "The email the reply answers, as ids only (e.g. a search_gmail id is a message_id). Never a subject, sender or text. On update, null clears it.", "properties": { "kind": { "enum": [ "gmail", "email", "other" ], "type": "string" }, "message_id": { "type": "string" }, "thread_id": { "type": "string" } }, "type": "object" }, "status": { "enum": [ "pending", "snoozed" ], "type": "string" }, "summary": { "description": "One line (max 280) in your own words: what the reply is about. Never paste the email body, subject line or sender address.", "type": "string" } }, "required": [ "reply_id" ], "type": "object" }, "name": "update_pending_reply", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "changed_fields": { "items": { "type": "string" }, "type": "array" }, "life_state_rebuilt": { "type": "boolean" }, "message": { "type": "string" }, "person_link": { "additionalProperties": false, "description": "Whether a contact was linked. Linked only on one resolve_person match or an owned person_id.", "properties": { "candidates": { "items": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "type": "object" }, "type": "array" }, "contact_name": { "type": [ "string", "null" ] }, "matched_via": { "type": [ "string", "null" ] }, "note": { "type": "string" }, "person_id": { "type": [ "string", "null" ] }, "status": { "description": "linked, ambiguous, no_match or lookup_failed", "type": "string" } }, "required": [ "status", "person_id", "note" ], "type": [ "object", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "reply": { "additionalProperties": false, "description": "One reply the user owes (Inbox → Pending Replies). Dayze never sends it.", "properties": { "approved_at": { "description": "PHI-427: when the owner approved the draft and opened it in Gmail, or null. Dayze never sends; the Gmail sync closes the reply when the email goes out.", "type": [ "string", "null" ] }, "category": { "description": "personal or work", "type": "string" }, "channel": { "type": "string" }, "created_at": { "type": [ "string", "null" ] }, "draft": { "description": "The reply text saved for later.", "type": [ "string", "null" ] }, "due": { "description": "Owed now: pending, or snoozed with snooze_until passed. False while a snooze runs, and when sent or dismissed.", "type": "boolean" }, "is_private": { "description": "Always true.", "type": "boolean" }, "person_id": { "description": "Linked contact id; null when the reply is unlinked.", "type": [ "string", "null" ] }, "person_name": { "type": "string" }, "received_at": { "type": "string" }, "reply_id": { "type": "string" }, "responded_at": { "type": [ "string", "null" ] }, "snooze_until": { "type": [ "string", "null" ] }, "source": { "additionalProperties": false, "description": "The email it answers, as ids only; null when none was saved.", "properties": { "kind": { "description": "gmail, email or other", "type": "string" }, "message_id": { "type": [ "string", "null" ] }, "thread_id": { "type": [ "string", "null" ] } }, "type": [ "object", "null" ] }, "state": { "description": "unsent (pending or snoozed), sent (the owner replied) or dismissed", "type": "string" }, "status": { "description": "pending, snoozed, responded or dismissed", "type": "string" }, "summary": { "type": [ "string", "null" ] }, "updated_at": { "type": [ "string", "null" ] }, "visibility": { "description": "Always private: Pending Replies have no sharing setting.", "type": "string" } }, "required": [ "reply_id", "person_name", "person_id", "channel", "category", "summary", "draft", "status", "state", "due", "received_at", "source", "visibility", "is_private" ], "type": "object" }, "source_saved": { "type": "boolean" } }, "required": [ "reply", "changed_fields", "source_saved", "message", "life_state_rebuilt" ], "type": "object" } }, { "description": "Patch an existing person↔person graph edge (type/context/source/confidence). ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "confidence": { "type": "number" }, "connection_id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "notes": { "type": "string" }, "other_person_id": { "type": "string" }, "person_id": { "type": "string" }, "relationship_type": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" } }, "type": "object" }, "name": "update_people_link", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "connection": { "additionalProperties": true, "type": "object" }, "message": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "updated": { "type": "boolean" } }, "type": "object" } }, { "description": "MUTATES one owned Dayze contact by person_id. A context_tags-only patch is supported; send the full desired tag array (a repeat is a no-op). For personal-write OAuth send request_id, a unique string for each new write; reuse it for an exact retry. Fields left out are untouched. undo_contact_change(change_id) reverts a change. Requires context.write; share tokens cannot write. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "birthday": { "description": "YYYY, YYYY-MM, YYYY-MM-DD, or MM-DD / --MM-DD (year unknown; 02-29 ok). Null/empty clears", "type": "string" }, "context_tags": { "description": "Contexts such as Work, Personal, Family, plus custom tags", "items": { "type": "string" }, "type": "array" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "is_favorite": { "description": "Favorite flag. Favorites (and VIP) appear in get_context_pack inner_circle", "type": "boolean" }, "name": { "description": "Rename contact (also refreshes URL slug). Prefer this over create+merge for spelling fixes", "type": "string" }, "notes": { "description": "Replaces people.notes (does not append). Empty or null clears", "type": "string" }, "person_id": { "description": "UUID of a person the authenticated user owns", "type": "string" }, "preserve_old_name_as_alias": { "description": "When renaming, keep the previous name as a former_name alias (default true)", "type": "boolean" }, "relationship": { "description": "Relationship label (friend, sister, …). Empty or null clears", "type": "string" }, "relationships": { "description": "Who they are to the user, in primary-first order (for example Friend + Client)", "items": { "type": "string" }, "type": "array" }, "request_id": { "description": "Required on personal-write OAuth. Unique for a new write; reuse for an exact retry.", "type": "string" }, "tier": { "description": "Relationship priority. VIP stays in inner_circle even when not favorited", "enum": [ "vip", "normal", "low" ], "type": "string" } }, "required": [ "person_id" ], "type": "object" }, "name": "update_person", "outputSchema": { "additionalProperties": false, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "change_id": { "description": "Pass to undo_contact_change to revert this change, birthday and birthday_precision included.", "type": "string" }, "changed": { "additionalProperties": true, "description": "Changed fields with before and after values.", "type": "object" }, "former_name_alias": { "additionalProperties": true, "description": "After a rename that keeps the old name (preserve_old_name_as_alias, default true): alias, saved, and reason when it could not be kept.", "type": "object" }, "life_state_rebuilt": { "type": "boolean" }, "person": { "additionalProperties": true, "description": "A Dayze person or contact record.", "type": "object" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "required": [ "person", "changed", "life_state_rebuilt" ], "type": "object" } }, { "description": "Update alias_kind/source/display for an existing alias. ($0.05; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "alias": { "type": "string" }, "alias_display": { "type": "string" }, "alias_kind": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "person_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "source": { "type": "string" } }, "required": [ "person_id", "alias" ], "type": "object" }, "name": "update_person_alias", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "alias": { "additionalProperties": true, "type": "object" }, "change_id": { "type": [ "string", "null" ] }, "message": { "type": [ "string", "null" ] }, "person_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "aliases": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "force": { "type": "boolean" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "legal_name": { "type": "string" }, "person_id": { "type": "string" }, "preferred_name": { "type": "string" }, "pronouns": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "social_handles": { "additionalProperties": true, "type": "object" }, "user_relationships": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "website": { "type": "string" } }, "required": [ "person_id" ], "type": "object" }, "name": "update_person_identity", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "change_id": { "type": [ "string", "null" ] }, "changed": { "additionalProperties": true, "type": "object" }, "message": { "type": [ "string", "null" ] }, "person": { "additionalProperties": true, "type": "object" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" } }, "type": "object" } }, { "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)", "inputSchema": { "additionalProperties": false, "properties": { "address": { "type": "string" }, "affordability": { "type": "string" }, "area": { "type": "string" }, "business_contact_id": { "type": "string" }, "category": { "type": "string" }, "city": { "type": "string" }, "country": { "type": "string" }, "description": { "type": "string" }, "hours": { "type": "string" }, "hours_source": { "type": "string" }, "id": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "latitude": { "type": "number" }, "longitude": { "type": "number" }, "name": { "type": "string" }, "notes": { "type": "string" }, "opening_hours": { "type": "string" }, "phone": { "type": "string" }, "phone_numbers": { "items": { "type": "string" }, "type": "array" }, "place_id": { "type": "string" }, "price_level": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "tags": { "items": { "type": "string" }, "type": "array" }, "website": { "type": "string" } }, "type": "object" }, "name": "update_place", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "business_contact_id": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "place": { "additionalProperties": true, "description": "Saved place card.", "type": "object" }, "place_id": { "type": "string" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "updated": { "type": "boolean" } }, "type": "object" } }, { "description": "Sleep: patch an existing sleep record by sleep_id. ($0.10; API key required)", "inputSchema": { "additionalProperties": false, "properties": { "ended_at": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "notes": { "type": "string" }, "quality": { "type": "number" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "sleep_id": { "type": "string" }, "sleep_type": { "enum": [ "overnight", "nap", "unknown" ], "type": "string" }, "started_at": { "type": "string" }, "timezone": { "type": "string" } }, "required": [ "sleep_id" ], "type": "object" }, "name": "update_sleep", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "message": { "type": [ "string", "null" ] }, "ok": { "type": "boolean" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "sleep": { "additionalProperties": true, "type": "object" } }, "type": "object" } }, { "description": "Upload image bytes to Dayze storage (normally re-encoded as WebP; original_preserved and metadata_stripped describe the saved bytes). Accepts image_base64, url, or ChatGPT file object `image` ({download_url, file_id}). Returns asset_id, content_type, byte_size, view_url after bytes are confirmed. Temporary ChatGPT download URLs are never stored. For inventory item photos: pass entity_type=inventory, entity_id=inventory_id, role=photo. For receipt photos: entity_type=expense|event, role=receipt. Or upload then attach_asset. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "anyOf": [ { "required": [ "image_base64" ] }, { "required": [ "url" ] }, { "required": [ "image" ] } ], "properties": { "asset_type": { "description": "photo | receipt | certificate | document | thumbnail | …", "type": "string" }, "content_type": { "description": "Alias for mime_type.", "type": "string" }, "description": { "type": "string" }, "entity_id": { "type": "string" }, "entity_type": { "description": "event | expense | place | person | inventory (inventory_item maps to inventory) | …", "type": "string" }, "filename": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "image": { "additionalProperties": false, "description": "ChatGPT chat attachment. Prefer this for images from the conversation; API clients may still use image_base64 or url.", "properties": { "download_url": { "description": "Temporary HTTPS URL ChatGPT provides for this file.", "type": "string" }, "file_id": { "description": "ChatGPT file id (not a Dayze asset_id).", "type": "string" }, "file_name": { "description": "Optional original filename from ChatGPT.", "type": "string" }, "mime_type": { "description": "Optional MIME type from ChatGPT.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "image_base64": { "description": "Base64 image bytes (optional data: URL prefix).", "type": "string" }, "metadata": { "description": "Free-form metadata, merged into the stored metadata (metadata.source becomes the asset source).", "type": "object" }, "mime_type": { "description": "image/jpeg, image/png, image/webp, … Alias: content_type.", "type": "string" }, "parent_asset_id": { "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "role": { "description": "original | cover | thumbnail | …", "enum": [ "original", "processed", "thumbnail", "cover", "document", "receipt", "certificate", "photo", "other" ], "type": "string" }, "url": { "description": "Remote image URL to fetch and store.", "type": "string" } }, "type": "object" }, "name": "upload_asset", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "asset": { "additionalProperties": true, "type": "object" }, "asset_id": { "type": "string" }, "byte_size": { "type": "number" }, "content_type": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "metadata_stripped": { "type": "boolean" }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "view_url": { "type": "string" } }, "type": "object" } }, { "description": "Upload a photo to a Life Graph entity you have (event, expense, place, person, inventory, …). Accepts image_base64, url, or ChatGPT file object `image` ({download_url, file_id}). Normally re-encodes as WebP; original_preserved and metadata_stripped describe the saved bytes. Partial results include an asset_id for repair: call upload_photo with asset_id and a new request_id, without image bytes. Answers attached: true only after readback confirms asset id, content_type, byte_size, and a viewable URL on the record — never from OCR text alone. Mobile file references without download_url fail clearly (attached: false). Person uploads also write the CRM gallery (person_photos) and avatar when set_as_avatar=true. ($0.15; API key required)", "inputSchema": { "additionalProperties": false, "anyOf": [ { "required": [ "image_base64" ] }, { "required": [ "url" ] }, { "required": [ "image" ] }, { "required": [ "asset_id" ] } ], "properties": { "asset_id": { "description": "Repair saved upload: new request_id, no image bytes.", "type": "string" }, "content_type": { "type": "string" }, "description": { "type": "string" }, "entity_id": { "type": "string" }, "entity_type": { "type": "string" }, "filename": { "type": "string" }, "idempotency_key": { "description": "Alias for request_id.", "type": "string" }, "image": { "additionalProperties": false, "description": "ChatGPT chat attachment. Prefer this for images from the conversation; API clients may still use image_base64 or url.", "properties": { "download_url": { "description": "Temporary HTTPS URL ChatGPT provides for this file.", "type": "string" }, "file_id": { "description": "ChatGPT file id (not a Dayze asset_id).", "type": "string" }, "file_name": { "description": "Optional original filename from ChatGPT.", "type": "string" }, "mime_type": { "description": "Optional MIME type from ChatGPT.", "type": "string" } }, "required": [ "download_url", "file_id" ], "type": "object" }, "image_base64": { "description": "Base64 image bytes (optional data: URL prefix).", "type": "string" }, "mime_type": { "description": "Alias for content_type.", "type": "string" }, "request_id": { "description": "Client idempotency key (retries return original result).", "type": "string" }, "role": { "description": "original | cover | thumbnail | receipt | … (photo is stored as original). set_as_avatar implies cover.", "type": "string" }, "set_as_avatar": { "type": "boolean" }, "title": { "type": "string" }, "url": { "description": "Remote image URL to fetch and store.", "type": "string" } }, "required": [ "entity_type", "entity_id" ], "type": "object" }, "name": "upload_photo", "outputSchema": { "additionalProperties": true, "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "asset": { "additionalProperties": true, "type": "object" }, "asset_id": { "type": "string" }, "attached": { "type": "boolean" }, "avatar_updated": { "type": "boolean" }, "byte_size": { "type": "number" }, "content_type": { "type": "string" }, "entity_id": { "type": "string" }, "entity_type": { "type": "string" }, "message": { "type": [ "string", "null" ] }, "metadata_stripped": { "type": "boolean" }, "optimized": { "additionalProperties": true, "type": "object" }, "photo_id": { "type": [ "string", "null" ] }, "provenance": { "additionalProperties": false, "description": "Which connector wrote the record and which connected Dayze account received it.", "properties": { "account": { "additionalProperties": false, "description": "The Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.", "properties": { "display_name": { "description": "Account display name.", "type": [ "string", "null" ] }, "handle": { "description": "Account handle, e.g. @goh.", "type": [ "string", "null" ] }, "note": { "description": "How to disclose the account to the user.", "type": "string" }, "qa_fixture": { "description": "True for a known QA test account: its records are fixture data, not a real life.", "type": "boolean" } }, "required": [ "handle", "display_name", "qa_fixture", "note" ], "type": "object" }, "channel": { "description": "Always mcp_connector.", "type": "string" }, "connector": { "additionalProperties": false, "properties": { "kind": { "description": "oauth or api_key.", "type": "string" }, "name": { "description": "The connected app or API-key label shown to the account owner.", "type": "string" } }, "required": [ "kind", "name" ], "type": "object" }, "source": { "description": "chatgpt for ChatGPT OAuth writes; mcp for another OAuth app or API key.", "type": "string" } }, "required": [ "source", "channel", "connector", "account" ], "type": "object" }, "url": { "type": [ "string", "null" ] }, "view_url": { "type": "string" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:0703e41489533fd55c5500d0a275e995df895abff42562580b08a6c49ab99b6f | sha256sum