ChronicleSchema

Properties

PropertyExpected typeDescription
Properties of Message
author manyAgentAn agent that authored the message content, such as a person or software assistant.
contains manyMediaObjectA media artifact carried by a message, such as an attached image, voice recording, video, or document.
recipient manyAgentAn agent the message was directed to. A message can have multiple recipients, such as the other participants in a group conversation.
From Entity
about manyEntityAn entity representing the subject matter of this entity, such as a topic or tag describing what a task concerns.
body oneTextThe textual content of an entity, such as a shell command or message, as supplied by the source.
description oneTextDescriptive text supplied by the source about an entity, such as a task's notes or a project's summary.
handle oneTextA contextual identifier for an entity within its namespace, such as a username, channel slug, or tag label. Its meaning depends on the source or context in which it is used.
inRealm oneRealmThe realm in which an entity resides, such as the computer system hosting a conversation or file. Provides context for identifiers that are local to that realm.
isPartOf manyEntityAn entity that this entity forms part of, such as a task's project or collection, or the page containing an excerpt. Each value identifies a containing whole.
name oneTextThe human-readable name or title of an entity, such as a person's display name, a document title, or a place name.
sameAs manyEntity or TextAnother reference to the same entity, expressed as an entity node or a textual identity reference such as @me. Asserts shared identity, rather than similarity or association.
url oneURLA URL at which the entity can be found, such as a web page's address or a link to a source record.
From Base
source oneTextThe source system that describes the entity or action, such as things-todo. Provides the source namespace in which identifiers such as sourceId are interpreted.
sourceId oneTextThe identifier assigned by the source to an entity or action, such as a record ID or message ID. Represented as text and scoped to the source's own namespace; it need not be globally unique.

Used as a value

A Message can be the value of these properties.

Examples

Receiving a message with a photo

A MessageAction for a message Alex sent you.

{
  "@type": "MessageAction",
  "@key": ["source", "sourceId", "@type"],
  "source": "imessage",
  "sourceId": "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5",
  "timestamp": "2026-05-09T18:22:07.000Z",
  "agent": {
    "@type": "Agent",
    "@key": ["@type", "source", "handle"],
    "source": "icloud",
    "handle": "alex@example.com",
    "name": "Alex Chen",
    "sameAs": [
      {
        "@type": "Agent",
        "@key": ["@type", "source", "handle"],
        "source": "email",
        "handle": "alex@example.com"
      }
    ]
  },
  "object": {
    "@type": "Message",
    "@key": ["@type", "source", "sourceId"],
    "source": "imessage",
    "sourceId": "9B1C5E2A-7F43-4D8E-A6B0-3C2F9E14D7A5",
    "body": "Found the trailhead!",
    "recipient": [
      {
        "@type": "Person",
        "@key": ["@type", "source", "handle"],
        "source": "phone",
        "handle": "+15555550123",
        "sameAs": ["@me"]
      }
    ],
    "contains": [
      {
        "@type": "ImageObject",
        "@key": ["source", "sourceId"],
        "source": "imessage",
        "sourceId": "E4A7C2D9-1B6F-4F3A-8C5E-7D2B9A0F6E13",
        "contentPath": "/Users/sam/Library/Messages/Attachments/4f/15/trailhead.jpg",
        "mimeType": "image/jpeg",
        "description": "trailhead.jpg"
      }
    ]
  }
}

An assistant's reply in a coding session

A MessageAction for a reply from an AI assistant.

{
  "@type": "MessageAction",
  "@key": ["@type", "source", "sourceId"],
  "source": "claude-code",
  "sourceId": "0b7e4c2a-9f13-4d6b-8a5e-2c1f7d9b3e40",
  "timestamp": "2026-07-02T10:41:26.000Z",
  "agent": {
    "@type": "SoftwareAgent",
    "@key": ["@type", "source", "handle"],
    "source": "anthropic",
    "handle": "claude",
    "name": "Claude"
  },
  "instrument": {
    "@type": "SoftwareApplication",
    "@key": ["@type", "source", "handle"],
    "source": "anthropic",
    "handle": "claude-sonnet-5",
    "name": "claude-sonnet-5"
  },
  "object": {
    "@type": "Message",
    "@key": ["@type", "source", "sourceId"],
    "source": "claude-code",
    "sourceId": "0b7e4c2a-9f13-4d6b-8a5e-2c1f7d9b3e40",
    "body": "The test fails when the clock crosses midnight UTC. Pinning the date fixes it.",
    "author": [
      {
        "@type": "SoftwareAgent",
        "@key": ["@type", "source", "handle"],
        "source": "anthropic",
        "handle": "claude",
        "name": "Claude"
      }
    ],
    "isPartOf": [
      {
        "@type": "Thread",
        "@key": ["@type", "source", "sourceId"],
        "source": "claude-code",
        "sourceId": "6d2a9e71-3c5b-4f08-b4e2-9a7c1d5f8e26",
        "name": "Fix the flaky date test",
        "isPartOf": [
          {
            "@type": "Project",
            "@key": ["@type", "source", "handle", "inRealm.handle"],
            "source": "claude-code",
            "handle": "/Users/sam/code/garden-planner",
            "name": "/Users/sam/code/garden-planner",
            "inRealm": {
              "@type": "Realm",
              "@key": ["@type", "source", "handle"],
              "source": "hostname",
              "handle": "studio"
            }
          }
        ]
      }
    ]
  }
}

URI https://schema.chronicle.app/Message

Esc

to move to open/ or ⌘K to search