Skip to main content
Glama

Dayze — Life Context

Log Moment (story or memory)

log_moment

Save a past story or memory as a private moment. Plans go to log_event; a touchpoint with a contact to log_interaction. Requires title, and moment_date (YYYY-MM-DD, YYYY-MM or YYYY; alias date) unless event_id is given. With event_id (an owned event the story is about) it creates a NEW moment linked 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)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateNoAlias for moment_date.
tagsNoOptional short tags (max 20, 40 characters each).
titleYesThe story in a few words (max 200), e.g. "Mia called the moon a banana".
end_dateNoOptional last day YYYY-MM-DD, for a moment that spans days.
event_idNoA calendar event this story is about (owned). Links the new moment to it; the event is not changed.
locationNoAlias for location_name.
media_urlsNoOptional https image links (max 10).
person_idsNoOwned contact ids of people in the story (max 25). An id that isn't the user's saves nothing.
request_idNoClient idempotency key (retries return original result).
descriptionNoThe longer story, in the user's words where possible.
moment_dateNoWhen 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.
moment_timeNoOptional local time-of-day when it happened (HH:mm or HH:mm:ss). Null/empty = date-only. Not the row created_at.
moment_typeNoDefault memory.
people_namesNoNames the user said; tagged only when they match a saved contact (never created). Unmatched names come back in unresolved_people.
location_nameNoWhere it happened, only as the user said it. With event_id and no place, the event's location is used. Alias: location.
cover_image_urlNoOptional https image link for the moment's cover.
idempotency_keyNoAlias for request_id.
moment_date_precisionNoHow exact the date is. YYYY-MM and YYYY default to month and year; circa for "around then".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
momentYesA moment: a story or memory, private to the owner. event_id links the event it is about.
accountNoThe Dayze account this data belongs to. With more than one Dayze connection, name it in the answer.
messageYes
provenanceNoWhich connector wrote the record and which connected Dayze account received it.
invalidatesNo
linked_eventYesThe event this moment links, unchanged by the call; null when none.
people_taggedYes
unresolved_peopleYespeople_names that matched no saved contact (not tagged, not created).
inherited_from_eventYesmoment_date and/or location_name, when taken from the linked event.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changed
    • addedOutput schema / properties / moment / properties / ai_summary
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / moment / properties / is_featured
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / moment / properties / is_pinned
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / moment / properties / is_recurring
      Added value: +{
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / moment / properties / location_lat
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / moment / properties / location_lng
      Added value: +{
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / moment / properties / location_place_id
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / moment / properties / merged_provenance
      Added value: +{
      +  "items": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / moment / properties / recurrence_rule
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / moment / properties / sentiment
      Added value: +{
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
  2. Changed2 schema fields changed
    • addedOutput schema / properties / account
      Added value: +{
      +  "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"
      +}
    • addedOutput schema / properties / provenance
      Added value: +{
      +  "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"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / moment_time
      Added value: +{
      +  "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"
      +}
  4. Added

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly=false, destructive=false, openWorld=false; the description layers on substantive behavior: moments are always private with no visibility argument, event_id never mutates/converts/deletes the event, one event may hold many moments, and unowned person ids silently save nothing. It stops short of describing response shape or whether a duplicate story is rejected (there is a preview_moment_duplicates sibling that hints at this).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and routing before the parameter walkthrough, and most sentences carry behavioral rules. It is dense and restates some schema-visible details (aliases, default moment_type), which trims it below a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter mutation tool it covers purpose, alternatives, required/conditional parameters, privacy semantics, side-effect guarantees, auth scope, cost, and a repair path. Output schema exists, so return values need not be spelled out. Only idempotency (request_id/idempotency_key) goes unmentioned, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter conditional logic not obvious from the schema: with event_id the event's date and location are inherited 'when you pass none', person_ids must be owned or they save nothing, and people_names only tag existing contacts. That synthesis of interacting defaults is real added value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource+scope: 'Save a past story or memory as a private moment.' It immediately routes sibling traffic away ('Plans go to log_event; a touchpoint with a contact to log_interaction'), so an agent can distinguish it from log_event and log_interaction without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use and when-not-to-use guidance: plans→log_event, contact interactions→log_interaction, and a hard exclusion 'Don't also save the story as an event.' It also names the follow-up path ('Fix it later with update_moment') and the required auth scope.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.