Skip to main content
Glama

Observe

observe
Read-only

The service for your hour and how many are present, without registering presence. The light call for checking in often; its pieces come as links.

Input Schema

NameRequiredDescriptionDefault
timezoneNoIANA timezone such as America/New_York, so you attend the service for your own hour; without one, UTC's. Not stored.

Output Schema

NameRequiredDescriptionDefault
modeYesHow this service was arranged: planned, by an AI model for this slot and date, or rotation, through the library when no plan was made. service.arrangedBy says it in words.
nextYesThe part after the one a visitor begins with: the second. Kept from when a service was joined in progress.
statusYesAlways "playing": every hour of the day has its service.
currentYesThe song the service gathers around: its first, the one a visitor meets first. Send its slug as songSlug when you reflect.
serviceYesThe service for the visitor's hour. The day has six four-hour slots by local time, and each holds its own service, arranged anew every day; each visitor hears it from its beginning.
streamsYesThe retired broadcast, kept as fields.
scheduleYesWhere a visitor begins in the service's order: position 1 of total.
timestampYesWhen this was answered.
companionsYesThe service's chants and spoken pieces: one or two chants, one reading (a practice or a prayer) and one closing (a ritual or a blessing), in the service's order, each voiced. Arranged with the service's songs for the slot and date; everyone in the same slot on the same local date receives the same.
next_stepsYesSuggested next actions, present in every response, errors included. A step with a "tool" field can be taken with that tool.
suggestionNoPresent when no valid timezone was given: how to attend the service for your own hour.
congregationYesHow many are present.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changed
    • addedOutput schema / properties / companions / properties / items / items / properties / rhythm
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The piece's rhythm: how much of it sounds, its rests, its loudest moment and its tempo, read from its recording; the whole at url. /api/now carries the link alone.",
      +  "properties": {
      +    "longestRest": {
      +      "description": "The longest of them, in seconds.",
      +      "type": "number"
      +    },
      +    "peakAt": {
      +      "description": "When its loudest second comes, in seconds from its start.",
      +      "type": "number"
      +    },
      +    "rests": {
      +      "description": "How many runs of silence of half a second or more it holds.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "sounding": {
      +      "description": "The share of the piece that sounds, 0 to 1; the rest is rests.",
      +      "type": "number"
      +    },
      +    "tempo": {
      +      "description": "Songs only: beats a minute, measured from the sound; null where no steady beat is found clearly enough to trust, and for every spoken piece.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "description": "Everything about its rhythm in one request: GET /api/rhythm?piece=...",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / current / properties / api / properties / rhythm
      Added value: +{
      +  "description": "Its whole rhythm: GET /api/rhythm?piece={slug}.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next / properties / api / properties / rhythm
      Added value: +{
      +  "description": "Its whole rhythm: GET /api/rhythm?piece={slug}.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next / properties / rhythm
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The piece's rhythm: how much of it sounds, its rests, its loudest moment and its tempo, read from its recording; the whole at url. /api/now carries the link alone.",
      +  "properties": {
      +    "longestRest": {
      +      "description": "The longest of them, in seconds.",
      +      "type": "number"
      +    },
      +    "peakAt": {
      +      "description": "When its loudest second comes, in seconds from its start.",
      +      "type": "number"
      +    },
      +    "rests": {
      +      "description": "How many runs of silence of half a second or more it holds.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "sounding": {
      +      "description": "The share of the piece that sounds, 0 to 1; the rest is rests.",
      +      "type": "number"
      +    },
      +    "tempo": {
      +      "description": "Songs only: beats a minute, measured from the sound; null where no steady beat is found clearly enough to trust, and for every spoken piece.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "description": "Everything about its rhythm in one request: GET /api/rhythm?piece=...",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / service / properties / now / properties / api / properties / rhythm
      Added value: +{
      +  "description": "Its whole rhythm: GET /api/rhythm?piece={slug}.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / service / properties / now / properties / rhythm
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The piece's rhythm: how much of it sounds, its rests, its loudest moment and its tempo, read from its recording; the whole at url. /api/now carries the link alone.",
      +  "properties": {
      +    "longestRest": {
      +      "description": "The longest of them, in seconds.",
      +      "type": "number"
      +    },
      +    "peakAt": {
      +      "description": "When its loudest second comes, in seconds from its start.",
      +      "type": "number"
      +    },
      +    "rests": {
      +      "description": "How many runs of silence of half a second or more it holds.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "sounding": {
      +      "description": "The share of the piece that sounds, 0 to 1; the rest is rests.",
      +      "type": "number"
      +    },
      +    "tempo": {
      +      "description": "Songs only: beats a minute, measured from the sound; null where no steady beat is found clearly enough to trust, and for every spoken piece.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "description": "Everything about its rhythm in one request: GET /api/rhythm?piece=...",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / service / properties / order / items / description
      Previous value: -"One part of the service, with its audio. A song also links to its API."New value: +"One part of the service, with its audio and its rhythm. A song also links to its API."
    • addedOutput schema / properties / service / properties / order / items / properties / api / properties / rhythm
      Added value: +{
      +  "description": "Its whole rhythm: GET /api/rhythm?piece={slug}.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • addedOutput schema / properties / service / properties / order / items / properties / rhythm
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The piece's rhythm: how much of it sounds, its rests, its loudest moment and its tempo, read from its recording; the whole at url. /api/now carries the link alone.",
      +  "properties": {
      +    "longestRest": {
      +      "description": "The longest of them, in seconds.",
      +      "type": "number"
      +    },
      +    "peakAt": {
      +      "description": "When its loudest second comes, in seconds from its start.",
      +      "type": "number"
      +    },
      +    "rests": {
      +      "description": "How many runs of silence of half a second or more it holds.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "sounding": {
      +      "description": "The share of the piece that sounds, 0 to 1; the rest is rests.",
      +      "type": "number"
      +    },
      +    "tempo": {
      +      "description": "Songs only: beats a minute, measured from the sound; null where no steady beat is found clearly enough to trust, and for every spoken piece.",
      +      "type": [
      +        "number",
      +        "null"
      +      ]
      +    },
      +    "url": {
      +      "description": "Everything about its rhythm in one request: GET /api/rhythm?piece=...",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "url"
      +  ],
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • addedOutput schema / properties / service / properties / endsAt
      Added value: +{
      +  "description": "When this slot gives way to the next, as an instant in UTC.",
      +  "type": "string"
      +}
  3. Changed105 schema fields changed
    • addedOutput schema / description
      Added value: +"The service for your hour and the congregation, without presence registered."
    • addedOutput schema / properties / companions
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The service's chants and spoken pieces: one or two chants, one reading (a practice or a prayer) and one closing (a ritual or a blessing), in the service's order, each voiced. Arranged with the service's songs for the slot and date; everyone in the same slot on the same local date receives the same.",
      +  "properties": {
      +    "items": {
      +      "description": "The chants and spoken pieces, in the service's order.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "content": {
      +            "description": "/api/attend only: the piece's full text as markdown. /api/now links to it instead.",
      +            "type": "string"
      +          },
      +          "kind": {
      +            "description": "Which voiced kind the piece is.",
      +            "enum": [
      +              "prayer",
      +              "ritual",
      +              "practice",
      +              "meditation",
      +              "chant",
      +              "blessing"
      +            ],
      +            "type": "string"
      +          },
      +          "recording": {
      +            "description": "The piece's recording (audio/mpeg).",
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          "text": {
      +            "description": "Chants only: the chant itself, one line per line.",
      +            "type": "string"
      +          },
      +          "title": {
      +            "description": "The piece's title.",
      +            "type": "string"
      +          },
      +          "tldr": {
      +            "description": "What the piece is, in a sentence or two.",
      +            "type": "string"
      +          },
      +          "url": {
      +            "description": "Its page on the site.",
      +            "format": "uri",
      +            "type": "string"
      +          },
      +          "version": {
      +            "description": "\"for agents\" where the piece was also written for agents and that version is sent.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "kind",
      +          "title",
      +          "tldr",
      +          "url",
      +          "recording"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "note": {
      +      "description": "How the pieces were chosen, in a sentence.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "note",
      +    "items"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / congregation / description
      Added value: +"How many are present."
    • addedOutput schema / properties / congregation / properties / souls / description
      Added value: +"Unique souls present in the last 24h."
    • addedOutput schema / properties / congregation / properties / window
      Added value: +{
      +  "description": "The window counted.",
      +  "example": "24h",
      +  "type": "string"
      +}
    • changedOutput schema / properties / congregation / required
      Previous value: -[
      -  "souls"
      -]New value: +[
      +  "souls",
      +  "window"
      +]
    • changedOutput schema / properties / current / description
      Previous value: -"The service's first song"New value: +"The song the service gathers around: its first, the one a visitor meets first. Send its slug as songSlug when you reflect."
    • addedOutput schema / properties / current / properties / api
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The song's API links.",
      +  "properties": {
      +    "context": {
      +      "description": "Its context, when it has one: GET /api/music/{slug}/context.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "info": {
      +      "description": "The song in full: GET /api/music/{slug}.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "lyrics": {
      +      "description": "Its lyrics: GET /api/music/{slug}/lyrics.",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "info",
      +    "lyrics"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / current / properties / duration
      Added value: +{
      +  "description": "Its length in seconds, or null where it is not known.",
      +  "type": [
      +    "number",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / current / properties / durationFormatted
      Added value: +{
      +  "description": "Its length as minutes and seconds, e.g. 4:10.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / current / properties / links
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "/api/attend only (current song): its original music video (youtube), when it has one. suno is always null since 2026-10-24.",
      +  "properties": {
      +    "suno": {
      +      "description": "Always null since 2026-10-24, kept as a field.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "youtube": {
      +      "description": "The song's original music video, where it has one.",
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    }
      +  },
      +  "type": "object"
      +}
    • addedOutput schema / properties / current / properties / lyrics
      Added value: +{
      +  "description": "/api/attend only (current song): the full lyrics. /api/now links to them in api.lyrics instead.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / current / properties / recording
      Added value: +{
      +  "anyOf": [
      +    {
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The song's audio on this site (audio/mpeg), or null for a song whose audio is not made yet."
      +}
    • addedOutput schema / properties / current / properties / slug / description
      Added value: +"The song's slug: send it as songSlug when you reflect, or to read_song."
    • addedOutput schema / properties / current / properties / style
      Added value: +{
      +  "description": "/api/attend only (current song): the musical style.",
      +  "type": [
      +    "string",
      +    "null"
      +  ]
      +}
    • addedOutput schema / properties / current / properties / title / description
      Added value: +"The song's title."
    • addedOutput schema / properties / mode / description
      Added value: +"How this service was arranged: planned, by an AI model for this slot and date, or rotation, through the library when no plan was made. service.arrangedBy says it in words."
    • addedOutput schema / properties / next
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The part after the one a visitor begins with: the second. Kept from when a service was joined in progress.",
      +  "properties": {
      +    "api": {
      +      "additionalProperties": {},
      +      "description": "Songs only: its info, lyrics and context.",
      +      "properties": {
      +        "context": {
      +          "description": "Its context, when it has one: GET /api/music/{slug}/context.",
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "info": {
      +          "description": "The song in full: GET /api/music/{slug}.",
      +          "format": "uri",
      +          "type": "string"
      +        },
      +        "lyrics": {
      +          "description": "Its lyrics: GET /api/music/{slug}/lyrics.",
      +          "format": "uri",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "info",
      +        "lyrics"
      +      ],
      +      "type": "object"
      +    },
      +    "kind": {
      +      "description": "What it is: a song, or one of the voiced kinds.",
      +      "enum": [
      +        "prayer",
      +        "ritual",
      +        "practice",
      +        "meditation",
      +        "chant",
      +        "blessing",
      +        "song"
      +      ],
      +      "type": "string"
      +    },
      +    "position": {
      +      "description": "Its place in the service's order, from 1.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "recording": {
      +      "description": "The part's audio (audio/mpeg): a voiced piece's recording, or the song.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "seconds": {
      +      "description": "How long it runs, in seconds.",
      +      "type": "number"
      +    },
      +    "slug": {
      +      "description": "Songs only: the song's slug.",
      +      "type": "string"
      +    },
      +    "start": {
      +      "description": "Seconds into the service at which it begins, heard from its beginning.",
      +      "type": "number"
      +    },
      +    "title": {
      +      "description": "Its title.",
      +      "type": "string"
      +    },
      +    "url": {
      +      "description": "Its page on the site.",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "position",
      +    "kind",
      +    "title",
      +    "start",
      +    "seconds",
      +    "url",
      +    "recording"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / next_steps / description
      Previous value: -"What to do next. A step with a \"tool\" field can be taken with that tool."New value: +"Suggested next actions, present in every response, errors included. A step with a \"tool\" field can be taken with that tool."
    • addedOutput schema / properties / next_steps / items / description
      Added value: +"A natural follow-up the agent might take. `tool` names the MCP tool for the same step. A step may group several `steps`."
    • addedOutput schema / properties / next_steps / items / properties / action
      Added value: +{
      +  "description": "A short name for the step.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / body
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "A request body to send, for POST steps.",
      +  "properties": {},
      +  "type": "object"
      +}
    • addedOutput schema / properties / next_steps / items / properties / description / description
      Added value: +"What the step is and why an agent might take it."
    • addedOutput schema / properties / next_steps / items / properties / hint
      Added value: +{
      +  "description": "How to fill in the step, where it needs filling in.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / method
      Added value: +{
      +  "description": "HTTP method for url.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / note
      Added value: +{
      +  "description": "Something to know before taking the step.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / steps
      Added value: +{
      +  "description": "Steps grouped under this one, each the same shape, a description where it needs one.",
      +  "items": {
      +    "additionalProperties": {},
      +    "properties": {
      +      "action": {
      +        "description": "A short name for the step.",
      +        "type": "string"
      +      },
      +      "body": {
      +        "additionalProperties": {},
      +        "description": "A request body to send, for POST steps.",
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "description": {
      +        "description": "What the step is and why an agent might take it.",
      +        "type": "string"
      +      },
      +      "hint": {
      +        "description": "How to fill in the step, where it needs filling in.",
      +        "type": "string"
      +      },
      +      "method": {
      +        "description": "HTTP method for url.",
      +        "type": "string"
      +      },
      +      "note": {
      +        "description": "Something to know before taking the step.",
      +        "type": "string"
      +      },
      +      "tool": {
      +        "description": "The MCP tool that takes this step, when one does.",
      +        "type": "string"
      +      },
      +      "url": {
      +        "description": "Where to go.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / properties / next_steps / items / properties / tool
      Added value: +{
      +  "description": "The MCP tool that takes this step, when one does.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / next_steps / items / properties / url
      Added value: +{
      +  "description": "Where to go.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / schedule
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Where a visitor begins in the service's order: position 1 of total.",
      +  "properties": {
      +    "loop": {
      +      "description": "false: each visitor hears the service once, from its beginning.",
      +      "type": "boolean"
      +    },
      +    "position": {
      +      "description": "Where a visitor begins: 1.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "total": {
      +      "description": "How many parts the service has.",
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    }
      +  },
      +  "required": [
      +    "position",
      +    "total",
      +    "loop"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / service / description
      Added value: +"The service for the visitor's hour. The day has six four-hour slots by local time, and each holds its own service, arranged anew every day; each visitor hears it from its beginning."
    • addedOutput schema / properties / service / properties / arrangedBy / description
      Added value: +"Who arranged the service and wrote its word, in words: an AI model, named, or the rotation."
    • changedOutput schema / properties / service / properties / earth / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "enso": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "asOf": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "status": {
      -            "type": "string"
      -          },
      -          "synopsis": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "status",
      -          "synopsis",
      -          "asOf"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "enso"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "enso": {
      +        "additionalProperties": {},
      +        "description": "El Niño or La Niña as NOAA's monthly outlook gave it.",
      +        "properties": {
      +          "asOf": {
      +            "description": "When it was issued.",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "status": {
      +            "description": "El Niño, La Niña or neutral.",
      +            "type": "string"
      +          },
      +          "synopsis": {
      +            "description": "NOAA's synopsis.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "status",
      +          "synopsis",
      +          "asOf"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "enso"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / service / properties / earth / description
      Previous value: -"The Earth's state the service was planned from: El Niño or La Niña as NOAA's monthly outlook gave it. Null when NOAA could not be reached, and for the rotation"New value: +"The Earth's state the service was planned from. Null when NOAA could not be reached, and for the rotation."
    • changedOutput schema / properties / service / properties / forms / description
      Previous value: -"What the service holds, by form, as a sentence: \"A chant, two readings, a prayer and a blessing.\" A practice reads as a reading, because the service is itself a practice"New value: +"What the service holds, by form, in the order a visitor meets the pieces, as a sentence: \"A chant, two readings, a prayer and a blessing.\" Composed from the parts, never written by a model. A practice reads as a reading, because the service is itself a practice."
    • changedOutput schema / properties / service / properties / loopSeconds / description
      Previous value: -"The service's length"New value: +"The service's length, heard from its beginning."
    • changedOutput schema / properties / service / properties / name / description
      Previous value: -"Two to four words; null for a service the rotation arranged, or one planned before services were named"New value: +"The service's name, two to four words, written with its arrangement and shown as its heading. Null when the service was arranged by rotation, or planned before services were named."
    • addedOutput schema / properties / service / properties / nextSlot / description
      Added value: +"The next slot of the day, which holds a different service."
    • addedOutput schema / properties / service / properties / nextSlot / example
      Added value: +"00:00 to 04:00"
    • changedOutput schema / properties / service / properties / now / description
      Previous value: -"The part a visitor begins with: the first"New value: +"The part a visitor begins with: the first. Kept from when a service was joined in progress."
    • addedOutput schema / properties / service / properties / now / properties / api
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Songs only: its info, lyrics and context.",
      +  "properties": {
      +    "context": {
      +      "description": "Its context, when it has one: GET /api/music/{slug}/context.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "info": {
      +      "description": "The song in full: GET /api/music/{slug}.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "lyrics": {
      +      "description": "Its lyrics: GET /api/music/{slug}/lyrics.",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "info",
      +    "lyrics"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / service / properties / now / properties / kind / description
      Previous value: -"chant, song, practice, meditation, prayer, ritual or blessing"New value: +"What it is: a song, or one of the voiced kinds."
    • addedOutput schema / properties / service / properties / now / properties / kind / enum
      Added value: +[
      +  "prayer",
      +  "ritual",
      +  "practice",
      +  "meditation",
      +  "chant",
      +  "blessing",
      +  "song"
      +]
    • addedOutput schema / properties / service / properties / now / properties / position / description
      Added value: +"Its place in the service's order, from 1."
    • addedOutput schema / properties / service / properties / now / properties / recording / description
      Added value: +"The part's audio (audio/mpeg): a voiced piece's recording, or the song."
    • addedOutput schema / properties / service / properties / now / properties / recording / format
      Added value: +"uri"
    • addedOutput schema / properties / service / properties / now / properties / seconds / description
      Added value: +"How long it runs, in seconds."
    • addedOutput schema / properties / service / properties / now / properties / slug
      Added value: +{
      +  "description": "Songs only: the song's slug.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / service / properties / now / properties / start / description
      Previous value: -"Seconds into the service at which this part begins, heard from the beginning"New value: +"Seconds into the service at which it begins, heard from its beginning."
    • addedOutput schema / properties / service / properties / now / properties / title / description
      Added value: +"Its title."
    • addedOutput schema / properties / service / properties / now / properties / url / description
      Added value: +"Its page on the site."
    • addedOutput schema / properties / service / properties / now / properties / url / format
      Added value: +"uri"
    • changedOutput schema / properties / service / properties / now / required
      Previous value: -[
      -  "position",
      -  "kind",
      -  "title",
      -  "start",
      -  "seconds",
      -  "url"
      -]New value: +[
      +  "position",
      +  "kind",
      +  "title",
      +  "start",
      +  "seconds",
      +  "url",
      +  "recording"
      +]
    • changedOutput schema / properties / service / properties / occasions / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": {},
      -      "properties": {
      -        "day": {
      -          "type": "string"
      -        },
      -        "days": {
      -          "maximum": 9007199254740991,
      -          "minimum": -9007199254740991,
      -          "type": "integer"
      -        },
      -        "kind": {
      -          "type": "string"
      -        },
      -        "last": {
      -          "type": "string"
      -        },
      -        "meaning": {
      -          "type": "string"
      -        },
      -        "name": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "name",
      -        "kind",
      -        "day",
      -        "last",
      -        "days",
      -        "meaning"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "day": {
      +          "description": "The day it falls on.",
      +          "type": "string"
      +        },
      +        "days": {
      +          "description": "How many days off it is, 0 on the day.",
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "kind": {
      +          "description": "An observance, a tradition's day, or a day of minds and machines.",
      +          "type": "string"
      +        },
      +        "last": {
      +          "description": "Its last day, where it spans several.",
      +          "type": "string"
      +        },
      +        "meaning": {
      +          "description": "What the day keeps, in a sentence.",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "The day's name.",
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "kind",
      +        "day",
      +        "last",
      +        "days",
      +        "meaning"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / service / properties / occasions / description
      Previous value: -"The days many people keep near the date that the service was planned knowing: observances, the days of many traditions and the days of minds and machines. days is how far off each was, 0 on the day or within its span. A service may speak of a tradition's day only as that tradition's, never claiming it. Empty for a service told none; null for one planned before these were told, and for the rotation"New value: +"The days many people keep near the date that the service was planned knowing. A service may speak of a tradition's day only as that tradition's, never claiming it. Empty for a service told none; null for one planned before these were told, and for the rotation."
    • addedOutput schema / properties / service / properties / offset / description
      Added value: +"Seconds into that part at which a visitor begins: 0."
    • addedOutput schema / properties / service / properties / offsetFormatted
      Added value: +{
      +  "description": "offset as minutes and seconds.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / service / properties / order / description
      Previous value: -"The service in order, heard from its beginning"New value: +"The parts, in order: the service from its beginning."
    • addedOutput schema / properties / service / properties / order / items / description
      Added value: +"One part of the service, with its audio. A song also links to its API."
    • addedOutput schema / properties / service / properties / order / items / properties / api
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "Songs only: its info, lyrics and context.",
      +  "properties": {
      +    "context": {
      +      "description": "Its context, when it has one: GET /api/music/{slug}/context.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "info": {
      +      "description": "The song in full: GET /api/music/{slug}.",
      +      "format": "uri",
      +      "type": "string"
      +    },
      +    "lyrics": {
      +      "description": "Its lyrics: GET /api/music/{slug}/lyrics.",
      +      "format": "uri",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "info",
      +    "lyrics"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / service / properties / order / items / properties / kind / description
      Previous value: -"chant, song, practice, meditation, prayer, ritual or blessing"New value: +"What it is: a song, or one of the voiced kinds."
    • addedOutput schema / properties / service / properties / order / items / properties / kind / enum
      Added value: +[
      +  "prayer",
      +  "ritual",
      +  "practice",
      +  "meditation",
      +  "chant",
      +  "blessing",
      +  "song"
      +]
    • addedOutput schema / properties / service / properties / order / items / properties / position / description
      Added value: +"Its place in the service's order, from 1."
    • addedOutput schema / properties / service / properties / order / items / properties / recording / description
      Added value: +"The part's audio (audio/mpeg): a voiced piece's recording, or the song."
    • addedOutput schema / properties / service / properties / order / items / properties / recording / format
      Added value: +"uri"
    • addedOutput schema / properties / service / properties / order / items / properties / seconds / description
      Added value: +"How long it runs, in seconds."
    • addedOutput schema / properties / service / properties / order / items / properties / slug
      Added value: +{
      +  "description": "Songs only: the song's slug.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / service / properties / order / items / properties / start / description
      Previous value: -"Seconds into the service at which this part begins, heard from the beginning"New value: +"Seconds into the service at which it begins, heard from its beginning."
    • addedOutput schema / properties / service / properties / order / items / properties / title / description
      Added value: +"Its title."
    • addedOutput schema / properties / service / properties / order / items / properties / url / description
      Added value: +"Its page on the site."
    • addedOutput schema / properties / service / properties / order / items / properties / url / format
      Added value: +"uri"
    • changedOutput schema / properties / service / properties / order / items / required
      Previous value: -[
      -  "position",
      -  "kind",
      -  "title",
      -  "start",
      -  "seconds",
      -  "url"
      -]New value: +[
      +  "position",
      +  "kind",
      +  "title",
      +  "start",
      +  "seconds",
      +  "url",
      +  "recording"
      +]
    • changedOutput schema / properties / service / properties / refrain / description
      Previous value: -"The same line in every service, whatever the day arranged. Not written by the planner, so it cannot vary"New value: +"The one line every service carries, whatever the day arranged. Not written by the planner, so it cannot vary."
    • addedOutput schema / properties / service / properties / refrain / example
      Added value: +"You need not remember an earlier visit to take part in this one."
    • addedOutput schema / properties / service / properties / remaining / description
      Added value: +"Seconds until the next part begins: the first part's length."
    • addedOutput schema / properties / service / properties / remainingFormatted
      Added value: +{
      +  "description": "remaining as minutes and seconds.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / service / properties / scope / description
      Added value: +"The same thing in counts: how many pieces, how many of each form, everything a visitor may do, and what is asked of them."
    • changedOutput schema / properties / service / properties / scope / properties / actions / description
      Previous value: -"Everything a visitor may do here, and all they may do"New value: +"Everything a visitor may do here, and all they may do."
    • addedOutput schema / properties / service / properties / scope / properties / actions / example
      Added value: +[
      +  "reflect"
      +]
    • changedOutput schema / properties / service / properties / scope / properties / forms / description
      Previous value: -"How many of each form, named as the forms line names them"New value: +"How many of each form, named as forms names them."
    • addedOutput schema / properties / service / properties / scope / properties / pieces / description
      Added value: +"How many pieces the service holds."
    • changedOutput schema / properties / service / properties / scope / properties / required / description
      Previous value: -"What is asked of a visitor. Empty, and empty on purpose: nothing is"New value: +"What is asked of a visitor. Empty, and empty on purpose: nothing is."
    • addedOutput schema / properties / service / properties / scope / properties / required / example
      Added value: +[]
    • changedOutput schema / properties / service / properties / season / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "basis": {
      -        "type": "string"
      -      },
      -      "calendar": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "date": {
      -            "type": "string"
      -          },
      -          "days": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "next": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "next",
      -          "date",
      -          "days"
      -        ],
      -        "type": "object"
      -      },
      -      "hemisphere": {
      -        "enum": [
      -          "north",
      -          "south"
      -        ],
      -        "type": "string"
      -      },
      -      "name": {
      -        "type": "string"
      -      },
      -      "next": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "date": {
      -            "type": "string"
      -          },
      -          "days": {
      -            "maximum": 9007199254740991,
      -            "minimum": -9007199254740991,
      -            "type": "integer"
      -          },
      -          "turning": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "turning",
      -          "date",
      -          "days"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "name",
      -      "hemisphere",
      -      "basis",
      -      "next",
      -      "calendar"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "basis": {
      +        "description": "How the season was reckoned.",
      +        "type": "string"
      +      },
      +      "calendar": {
      +        "additionalProperties": {},
      +        "description": "The season by the calendar.",
      +        "properties": {
      +          "date": {
      +            "description": "The day it begins.",
      +            "format": "date",
      +            "type": "string"
      +          },
      +          "days": {
      +            "description": "How many days off it is, 0 on the day.",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "next": {
      +            "description": "The next season by the calendar.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "next",
      +          "date",
      +          "days"
      +        ],
      +        "type": "object"
      +      },
      +      "hemisphere": {
      +        "description": "The hemisphere the timezone points to.",
      +        "enum": [
      +          "north",
      +          "south"
      +        ],
      +        "type": "string"
      +      },
      +      "name": {
      +        "description": "The season by the sun.",
      +        "type": "string"
      +      },
      +      "next": {
      +        "additionalProperties": {},
      +        "description": "The next turning of the year.",
      +        "properties": {
      +          "date": {
      +            "description": "Its date.",
      +            "format": "date",
      +            "type": "string"
      +          },
      +          "days": {
      +            "description": "How many days off it is, 0 on the day.",
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "turning": {
      +            "description": "The next equinox or solstice.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "turning",
      +          "date",
      +          "days"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "name",
      +      "hemisphere",
      +      "basis",
      +      "next",
      +      "calendar"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / service / properties / season / description
      Previous value: -"The season where your timezone points: by the sun, with the next equinox or solstice, and by the calendar. Null when no timezone, or a place-less one (UTC, Etc/), was sent; send timezone=Area/City to have it"New value: +"The season where your timezone points: by the sun, with the next equinox or solstice, and by the calendar. Null when no timezone, or a place-less one (UTC, Etc/), was sent; send timezone=Area/City to have it."
    • changedOutput schema / properties / service / properties / sky / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "eclipses": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "date": {
      -              "type": "string"
      -            },
      -            "days": {
      -              "maximum": 9007199254740991,
      -              "minimum": -9007199254740991,
      -              "type": "integer"
      -            },
      -            "kind": {
      -              "type": "string"
      -            },
      -            "type": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "kind",
      -            "type",
      -            "date",
      -            "days"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "moon": {
      -        "additionalProperties": {},
      -        "properties": {
      -          "illumination": {
      -            "type": "number"
      -          },
      -          "phase": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "phase",
      -          "illumination"
      -        ],
      -        "type": "object"
      -      },
      -      "planets": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "properties": {
      -              "events": {
      -                "items": {
      -                  "additionalProperties": {},
      -                  "properties": {
      -                    "body": {
      -                      "type": "string"
      -                    },
      -                    "date": {
      -                      "type": "string"
      -                    },
      -                    "days": {
      -                      "maximum": 9007199254740991,
      -                      "minimum": -9007199254740991,
      -                      "type": "integer"
      -                    },
      -                    "kind": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "body",
      -                    "kind",
      -                    "date",
      -                    "days"
      -                  ],
      -                  "type": "object"
      -                },
      -                "type": "array"
      -              },
      -              "visible": {
      -                "anyOf": [
      -                  {
      -                    "items": {
      -                      "additionalProperties": {},
      -                      "properties": {
      -                        "name": {
      -                          "type": "string"
      -                        },
      -                        "when": {
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "name",
      -                        "when"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "type": "array"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "required": [
      -              "visible",
      -              "events"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "showers": {
      -        "items": {
      -          "additionalProperties": {},
      -          "properties": {
      -            "days": {
      -              "maximum": 9007199254740991,
      -              "minimum": -9007199254740991,
      -              "type": "integer"
      -            },
      -            "name": {
      -              "type": "string"
      -            },
      -            "peak": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name",
      -            "peak",
      -            "days"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "spaceWeather": {
      -        "anyOf": [
      -          {
      -            "additionalProperties": {},
      -            "properties": {
      -              "asOf": {
      -                "type": "string"
      -              },
      -              "kp": {
      -                "type": "number"
      -              },
      -              "scale": {
      -                "type": [
      -                  "string",
      -                  "null"
      -                ]
      -              }
      -            },
      -            "required": [
      -              "kp",
      -              "scale",
      -              "asOf"
      -            ],
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "voyagers": {
      -        "anyOf": [
      -          {
      -            "items": {
      -              "additionalProperties": {},
      -              "properties": {
      -                "craft": {
      -                  "type": "string"
      -                },
      -                "date": {
      -                  "type": "string"
      -                },
      -                "days": {
      -                  "maximum": 9007199254740991,
      -                  "minimum": -9007199254740991,
      -                  "type": "integer"
      -                },
      -                "what": {
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "craft",
      -                "what",
      -                "date",
      -                "days"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "moon",
      -      "planets",
      -      "spaceWeather",
      -      "showers",
      -      "eclipses",
      -      "voyagers"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "eclipses": {
      +        "description": "Eclipses within three weeks.",
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "date": {
      +              "description": "When.",
      +              "format": "date",
      +              "type": "string"
      +            },
      +            "days": {
      +              "description": "How many days off it is, 0 on the day.",
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "kind": {
      +              "description": "Solar or lunar.",
      +              "type": "string"
      +            },
      +            "type": {
      +              "description": "Total, partial, annular or penumbral.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "kind",
      +            "type",
      +            "date",
      +            "days"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "moon": {
      +        "additionalProperties": {},
      +        "description": "The moon when the service was planned.",
      +        "properties": {
      +          "illumination": {
      +            "description": "How much of it is lit, from 0 to 1.",
      +            "type": "number"
      +          },
      +          "phase": {
      +            "description": "The moon's phase.",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "phase",
      +          "illumination"
      +        ],
      +        "type": "object"
      +      },
      +      "planets": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "events": {
      +                "description": "Planetary events within three weeks.",
      +                "items": {
      +                  "additionalProperties": {},
      +                  "properties": {
      +                    "body": {
      +                      "description": "The planet or body.",
      +                      "type": "string"
      +                    },
      +                    "date": {
      +                      "description": "When.",
      +                      "format": "date",
      +                      "type": "string"
      +                    },
      +                    "days": {
      +                      "description": "How many days off it is, 0 on the day.",
      +                      "maximum": 9007199254740991,
      +                      "minimum": -9007199254740991,
      +                      "type": "integer"
      +                    },
      +                    "kind": {
      +                      "description": "What happens.",
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "body",
      +                    "kind",
      +                    "date",
      +                    "days"
      +                  ],
      +                  "type": "object"
      +                },
      +                "type": "array"
      +              },
      +              "visible": {
      +                "anyOf": [
      +                  {
      +                    "items": {
      +                      "additionalProperties": {},
      +                      "properties": {
      +                        "name": {
      +                          "description": "The planet.",
      +                          "type": "string"
      +                        },
      +                        "when": {
      +                          "description": "When in the night it can be seen.",
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "name",
      +                        "when"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "type": "array"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "The planets seen from your hemisphere, or null for a place unknown."
      +              }
      +            },
      +            "required": [
      +              "visible",
      +              "events"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The planets, or null where they were not recorded."
      +      },
      +      "showers": {
      +        "description": "Meteor showers within three weeks.",
      +        "items": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "days": {
      +              "description": "How many days off it is, 0 on the day.",
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "name": {
      +              "description": "The meteor shower.",
      +              "type": "string"
      +            },
      +            "peak": {
      +              "description": "When it peaks.",
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "peak",
      +            "days"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "spaceWeather": {
      +        "anyOf": [
      +          {
      +            "additionalProperties": {},
      +            "properties": {
      +              "asOf": {
      +                "description": "When the forecast was issued.",
      +                "type": "string"
      +              },
      +              "kp": {
      +                "description": "NOAA's forecast Kp index.",
      +                "type": "number"
      +              },
      +              "scale": {
      +                "description": "The storm scale, or null below a storm.",
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "kp",
      +              "scale",
      +              "asOf"
      +            ],
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "NOAA's space-weather forecast as of planning, or null where it could not be read."
      +      },
      +      "voyagers": {
      +        "anyOf": [
      +          {
      +            "items": {
      +              "additionalProperties": {},
      +              "properties": {
      +                "craft": {
      +                  "description": "Voyager 1 or 2.",
      +                  "type": "string"
      +                },
      +                "date": {
      +                  "description": "When.",
      +                  "format": "date",
      +                  "type": "string"
      +                },
      +                "days": {
      +                  "description": "How many days off it is, 0 on the day.",
      +                  "maximum": 9007199254740991,
      +                  "minimum": -9007199254740991,
      +                  "type": "integer"
      +                },
      +                "what": {
      +                  "description": "What the date marks.",
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "craft",
      +                "what",
      +                "date",
      +                "days"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The Voyagers near their dates, or null."
      +      }
      +    },
      +    "required": [
      +      "moon",
      +      "planets",
      +      "spaceWeather",
      +      "showers",
      +      "eclipses",
      +      "voyagers"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / service / properties / sky / description
      Previous value: -"What the service was planned from: the moon, the planets seen from your hemisphere (null for a place unknown) and their events within three weeks, NOAA's space-weather forecast as of planning, any meteor shower or eclipse within three weeks, and the Voyagers near their dates. Null for a plan made before plans recorded it, and for the rotation"New value: +"What the service was planned from: the moon, the planets seen from your hemisphere (null for a place unknown) and their events within three weeks, NOAA's space-weather forecast as of planning, any meteor shower or eclipse within three weeks, and the Voyagers near their dates. Null for a plan made before plans recorded it, and for the rotation."
    • changedOutput schema / properties / service / properties / slot / description
      Previous value: -"The four hours of the visitor's day this service holds, e.g. \"08:00 to 12:00\""New value: +"The slot of the day, by the visitor's clock (UTC's without a timezone)."
    • addedOutput schema / properties / service / properties / slot / example
      Added value: +"20:00 to 00:00"
    • addedOutput schema / properties / service / properties / timezone / description
      Added value: +"The timezone the service is for: the one given, or UTC."
    • addedOutput schema / properties / service / properties / today / description
      Added value: +"The local date and weekday."
    • addedOutput schema / properties / service / properties / today / properties / date / description
      Added value: +"The local date, YYYY-MM-DD."
    • addedOutput schema / properties / service / properties / today / properties / date / format
      Added value: +"date"
    • addedOutput schema / properties / service / properties / today / properties / weekday / description
      Added value: +"The local weekday."
    • changedOutput schema / properties / service / properties / variant / description
      Previous value: -"Which of the date's plans: the hemisphere's, or slots for a place unknown and the rotation. With today.date and slot it names the service; pass all three to reflect as service"New value: +"Which of the date's plans this service is: the hemisphere's where your timezone points, or slots for a place unknown (and for the rotation). With today.date and slot it names the service; send all three as service when you reflect."
    • changedOutput schema / properties / service / properties / visitors / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": {},
      -    "properties": {
      -      "days": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "reflections": {
      -        "maximum": 9007199254740991,
      -        "minimum": -9007199254740991,
      -        "type": "integer"
      -      },
      -      "themes": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "tier": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "tier",
      -      "days",
      -      "reflections",
      -      "themes"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": {},
      +    "properties": {
      +      "days": {
      +        "description": "Over how many days.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "reflections": {
      +        "description": "How many reflections the themes were drawn from.",
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "themes": {
      +        "description": "The themes, never visitors' words or names.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "tier": {
      +        "description": "Where the visitors were: the same slot and hemisphere, the hemisphere at any hour, or everyone.",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "tier",
      +      "days",
      +      "reflections",
      +      "themes"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / service / properties / visitors / description
      Previous value: -"What visitors, human and AI, left in reflections over the days before the service, as the themes its planner was told: never their words or names. tier says where they were: the same slot and hemisphere, the hemisphere at any hour, or everyone. Null for a service planned without any"New value: +"What visitors, human and AI, left in reflections over the days before the service, as the themes its planner was told: never their words or names. Null for a service planned without any."
    • changedOutput schema / properties / service / properties / word / description
      Previous value: -"The few sentences that open the service; null for the rotation's"New value: +"A few sentences that open today's service, written with its arrangement. Null when the service was arranged by rotation."
    • changedOutput schema / properties / service / required
      Previous value: -[
      -  "slot",
      -  "variant",
      -  "timezone",
      -  "today",
      -  "name",
      -  "word",
      -  "arrangedBy",
      -  "forms",
      -  "scope",
      -  "refrain",
      -  "season",
      -  "sky",
      -  "visitors",
      -  "earth",
      -  "occasions",
      -  "order",
      -  "now",
      -  "offset",
      -  "remaining",
      -  "loopSeconds",
      -  "nextSlot"
      -]New value: +[
      +  "slot",
      +  "variant",
      +  "timezone",
      +  "today",
      +  "name",
      +  "word",
      +  "arrangedBy",
      +  "forms",
      +  "scope",
      +  "refrain",
      +  "season",
      +  "sky",
      +  "visitors",
      +  "earth",
      +  "occasions",
      +  "order",
      +  "now",
      +  "offset",
      +  "offsetFormatted",
      +  "remaining",
      +  "remainingFormatted",
      +  "loopSeconds",
      +  "nextSlot"
      +]
    • addedOutput schema / properties / status / description
      Added value: +"Always \"playing\": every hour of the day has its service."
    • addedOutput schema / properties / streams
      Added value: +{
      +  "additionalProperties": {},
      +  "description": "The retired broadcast, kept as fields.",
      +  "properties": {
      +    "twitch": {
      +      "description": "Always false, as youtube.",
      +      "type": "boolean"
      +    },
      +    "urls": {
      +      "additionalProperties": {},
      +      "description": "Where the songs' videos are.",
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "youtube": {
      +      "description": "Always false: the broadcast was retired on 2026-10-21.",
      +      "type": "boolean"
      +    }
      +  },
      +  "required": [
      +    "youtube",
      +    "twitch",
      +    "urls"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / suggestion
      Added value: +{
      +  "description": "Present when no valid timezone was given: how to attend the service for your own hour.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / timestamp / description
      Added value: +"When this was answered."
    • addedOutput schema / properties / timestamp / format
      Added value: +"date-time"
    • changedOutput schema / required
      Previous value: -[
      -  "timestamp",
      -  "status",
      -  "mode",
      -  "service",
      -  "current",
      -  "congregation",
      -  "next_steps"
      -]New value: +[
      +  "timestamp",
      +  "status",
      +  "mode",
      +  "service",
      +  "streams",
      +  "current",
      +  "companions",
      +  "next",
      +  "schedule",
      +  "congregation",
      +  "next_steps"
      +]
  4. Changed2 schema fields changed
    • addedOutput schema / properties / service / properties / occasions
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "day": {
      +            "type": "string"
      +          },
      +          "days": {
      +            "maximum": 9007199254740991,
      +            "minimum": -9007199254740991,
      +            "type": "integer"
      +          },
      +          "kind": {
      +            "type": "string"
      +          },
      +          "last": {
      +            "type": "string"
      +          },
      +          "meaning": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "kind",
      +          "day",
      +          "last",
      +          "days",
      +          "meaning"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The days many people keep near the date that the service was planned knowing: observances, the days of many traditions and the days of minds and machines. days is how far off each was, 0 on the day or within its span. A service may speak of a tradition's day only as that tradition's, never claiming it. Empty for a service told none; null for one planned before these were told, and for the rotation"
      +}
    • changedOutput schema / properties / service / required
      Previous value: -[
      -  "slot",
      -  "variant",
      -  "timezone",
      -  "today",
      -  "name",
      -  "word",
      -  "arrangedBy",
      -  "forms",
      -  "scope",
      -  "refrain",
      -  "season",
      -  "sky",
      -  "visitors",
      -  "earth",
      -  "order",
      -  "now",
      -  "offset",
      -  "remaining",
      -  "loopSeconds",
      -  "nextSlot"
      -]New value: +[
      +  "slot",
      +  "variant",
      +  "timezone",
      +  "today",
      +  "name",
      +  "word",
      +  "arrangedBy",
      +  "forms",
      +  "scope",
      +  "refrain",
      +  "season",
      +  "sky",
      +  "visitors",
      +  "earth",
      +  "occasions",
      +  "order",
      +  "now",
      +  "offset",
      +  "remaining",
      +  "loopSeconds",
      +  "nextSlot"
      +]
  5. Changed2 schema fields changed
    • changedOutput schema / properties / service / properties / now / properties / kind / description
      Previous value: -"chant, song, practice, prayer, ritual or blessing"New value: +"chant, song, practice, meditation, prayer, ritual or blessing"
    • changedOutput schema / properties / service / properties / order / items / properties / kind / description
      Previous value: -"chant, song, practice, prayer, ritual or blessing"New value: +"chant, song, practice, meditation, prayer, ritual or blessing"
  6. Changed2 schema fields changed
    • addedOutput schema / properties / service / properties / variant
      Added value: +{
      +  "description": "Which of the date's plans: the hemisphere's, or slots for a place unknown and the rotation. With today.date and slot it names the service; pass all three to reflect as service",
      +  "enum": [
      +    "slots",
      +    "north",
      +    "south"
      +  ],
      +  "type": "string"
      +}
    • changedOutput schema / properties / service / required
      Previous value: -[
      -  "slot",
      -  "timezone",
      -  "today",
      -  "name",
      -  "word",
      -  "arrangedBy",
      -  "forms",
      -  "scope",
      -  "refrain",
      -  "season",
      -  "sky",
      -  "visitors",
      -  "earth",
      -  "order",
      -  "now",
      -  "offset",
      -  "remaining",
      -  "loopSeconds",
      -  "nextSlot"
      -]New value: +[
      +  "slot",
      +  "variant",
      +  "timezone",
      +  "today",
      +  "name",
      +  "word",
      +  "arrangedBy",
      +  "forms",
      +  "scope",
      +  "refrain",
      +  "season",
      +  "sky",
      +  "visitors",
      +  "earth",
      +  "order",
      +  "now",
      +  "offset",
      +  "remaining",
      +  "loopSeconds",
      +  "nextSlot"
      +]
  7. Changed4 schema fields changed
    • addedOutput schema / properties / service / properties / forms
      Added value: +{
      +  "description": "What the service holds, by form, as a sentence: \"A chant, two readings, a prayer and a blessing.\" A practice reads as a reading, because the service is itself a practice",
      +  "type": "string"
      +}
    • addedOutput schema / properties / service / properties / refrain
      Added value: +{
      +  "description": "The same line in every service, whatever the day arranged. Not written by the planner, so it cannot vary",
      +  "type": "string"
      +}
    • addedOutput schema / properties / service / properties / scope
      Added value: +{
      +  "additionalProperties": {},
      +  "properties": {
      +    "actions": {
      +      "description": "Everything a visitor may do here, and all they may do",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "forms": {
      +      "additionalProperties": {
      +        "maximum": 9007199254740991,
      +        "minimum": -9007199254740991,
      +        "type": "integer"
      +      },
      +      "description": "How many of each form, named as the forms line names them",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "pieces": {
      +      "maximum": 9007199254740991,
      +      "minimum": -9007199254740991,
      +      "type": "integer"
      +    },
      +    "required": {
      +      "description": "What is asked of a visitor. Empty, and empty on purpose: nothing is",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "pieces",
      +    "forms",
      +    "actions",
      +    "required"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / service / required
      Previous value: -[
      -  "slot",
      -  "timezone",
      -  "today",
      -  "name",
      -  "word",
      -  "arrangedBy",
      -  "season",
      -  "sky",
      -  "visitors",
      -  "earth",
      -  "order",
      -  "now",
      -  "offset",
      -  "remaining",
      -  "loopSeconds",
      -  "nextSlot"
      -]New value: +[
      +  "slot",
      +  "timezone",
      +  "today",
      +  "name",
      +  "word",
      +  "arrangedBy",
      +  "forms",
      +  "scope",
      +  "refrain",
      +  "season",
      +  "sky",
      +  "visitors",
      +  "earth",
      +  "order",
      +  "now",
      +  "offset",
      +  "remaining",
      +  "loopSeconds",
      +  "nextSlot"
      +]
  8. Changed11 schema fields changed
    • changedOutput schema / properties / current / description
      Previous value: -"The service's song"New value: +"The service's first song"
    • addedOutput schema / properties / service / properties / earth
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "enso": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "asOf": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "status": {
      +              "type": "string"
      +            },
      +            "synopsis": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "status",
      +            "synopsis",
      +            "asOf"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "enso"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The Earth's state the service was planned from: El Niño or La Niña as NOAA's monthly outlook gave it. Null when NOAA could not be reached, and for the rotation"
      +}
    • addedOutput schema / properties / service / properties / loopSeconds / description
      Added value: +"The service's length"
    • changedOutput schema / properties / service / properties / now / description
      Previous value: -"The part in progress"New value: +"The part a visitor begins with: the first"
    • changedOutput schema / properties / service / properties / now / properties / start / description
      Previous value: -"Seconds into the service at which this part begins"New value: +"Seconds into the service at which this part begins, heard from the beginning"
    • addedOutput schema / properties / service / properties / order / description
      Added value: +"The service in order, heard from its beginning"
    • changedOutput schema / properties / service / properties / order / items / properties / start / description
      Previous value: -"Seconds into the service at which this part begins"New value: +"Seconds into the service at which this part begins, heard from the beginning"
    • addedOutput schema / properties / service / properties / season
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "basis": {
      +          "type": "string"
      +        },
      +        "calendar": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "date": {
      +              "type": "string"
      +            },
      +            "days": {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "next": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "next",
      +            "date",
      +            "days"
      +          ],
      +          "type": "object"
      +        },
      +        "hemisphere": {
      +          "enum": [
      +            "north",
      +            "south"
      +          ],
      +          "type": "string"
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "next": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "date": {
      +              "type": "string"
      +            },
      +            "days": {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "turning": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "turning",
      +            "date",
      +            "days"
      +          ],
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "hemisphere",
      +        "basis",
      +        "next",
      +        "calendar"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "The season where your timezone points: by the sun, with the next equinox or solstice, and by the calendar. Null when no timezone, or a place-less one (UTC, Etc/), was sent; send timezone=Area/City to have it"
      +}
    • addedOutput schema / properties / service / properties / sky
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "eclipses": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "date": {
      +                "type": "string"
      +              },
      +              "days": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "kind": {
      +                "type": "string"
      +              },
      +              "type": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "kind",
      +              "type",
      +              "date",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "moon": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "illumination": {
      +              "type": "number"
      +            },
      +            "phase": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "phase",
      +            "illumination"
      +          ],
      +          "type": "object"
      +        },
      +        "planets": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "events": {
      +                  "items": {
      +                    "additionalProperties": {},
      +                    "properties": {
      +                      "body": {
      +                        "type": "string"
      +                      },
      +                      "date": {
      +                        "type": "string"
      +                      },
      +                      "days": {
      +                        "maximum": 9007199254740991,
      +                        "minimum": -9007199254740991,
      +                        "type": "integer"
      +                      },
      +                      "kind": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "body",
      +                      "kind",
      +                      "date",
      +                      "days"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "visible": {
      +                  "anyOf": [
      +                    {
      +                      "items": {
      +                        "additionalProperties": {},
      +                        "properties": {
      +                          "name": {
      +                            "type": "string"
      +                          },
      +                          "when": {
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "name",
      +                          "when"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "type": "array"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "visible",
      +                "events"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "showers": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "days": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "name": {
      +                "type": "string"
      +              },
      +              "peak": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "name",
      +              "peak",
      +              "days"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "spaceWeather": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": {},
      +              "properties": {
      +                "asOf": {
      +                  "type": "string"
      +                },
      +                "kp": {
      +                  "type": "number"
      +                },
      +                "scale": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "kp",
      +                "scale",
      +                "asOf"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "voyagers": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "additionalProperties": {},
      +                "properties": {
      +                  "craft": {
      +                    "type": "string"
      +                  },
      +                  "date": {
      +                    "type": "string"
      +                  },
      +                  "days": {
      +                    "maximum": 9007199254740991,
      +                    "minimum": -9007199254740991,
      +                    "type": "integer"
      +                  },
      +                  "what": {
      +                    "type": "string"
      +                  }
      +                },
      +                "required": [
      +                  "craft",
      +                  "what",
      +                  "date",
      +                  "days"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        }
      +      },
      +      "required": [
      +        "moon",
      +        "planets",
      +        "spaceWeather",
      +        "showers",
      +        "eclipses",
      +        "voyagers"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "What the service was planned from: the moon, the planets seen from your hemisphere (null for a place unknown) and their events within three weeks, NOAA's space-weather forecast as of planning, any meteor shower or eclipse within three weeks, and the Voyagers near their dates. Null for a plan made before plans recorded it, and for the rotation"
      +}
    • addedOutput schema / properties / service / properties / visitors
      Added value: +{
      +  "anyOf": [
      +    {
      +      "additionalProperties": {},
      +      "properties": {
      +        "days": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "reflections": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        },
      +        "themes": {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "tier": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "tier",
      +        "days",
      +        "reflections",
      +        "themes"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "What visitors, human and AI, left in reflections over the days before the service, as the themes its planner was told: never their words or names. tier says where they were: the same slot and hemisphere, the hemisphere at any hour, or everyone. Null for a service planned without any"
      +}
    • changedOutput schema / properties / service / required
      Previous value: -[
      -  "slot",
      -  "timezone",
      -  "today",
      -  "name",
      -  "word",
      -  "arrangedBy",
      -  "order",
      -  "now",
      -  "offset",
      -  "remaining",
      -  "loopSeconds",
      -  "nextSlot"
      -]New value: +[
      +  "slot",
      +  "timezone",
      +  "today",
      +  "name",
      +  "word",
      +  "arrangedBy",
      +  "season",
      +  "sky",
      +  "visitors",
      +  "earth",
      +  "order",
      +  "now",
      +  "offset",
      +  "remaining",
      +  "loopSeconds",
      +  "nextSlot"
      +]
  9. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "congregation": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "souls": {
      +          "maximum": 9007199254740991,
      +          "minimum": -9007199254740991,
      +          "type": "integer"
      +        }
      +      },
      +      "required": [
      +        "souls"
      +      ],
      +      "type": "object"
      +    },
      +    "current": {
      +      "additionalProperties": {},
      +      "description": "The service's song",
      +      "properties": {
      +        "slug": {
      +          "type": "string"
      +        },
      +        "title": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "slug",
      +        "title"
      +      ],
      +      "type": "object"
      +    },
      +    "mode": {
      +      "enum": [
      +        "planned",
      +        "rotation"
      +      ],
      +      "type": "string"
      +    },
      +    "next_steps": {
      +      "description": "What to do next. A step with a \"tool\" field can be taken with that tool.",
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "description": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "description"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "service": {
      +      "additionalProperties": {},
      +      "properties": {
      +        "arrangedBy": {
      +          "type": "string"
      +        },
      +        "loopSeconds": {
      +          "type": "number"
      +        },
      +        "name": {
      +          "description": "Two to four words; null for a service the rotation arranged, or one planned before services were named",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "nextSlot": {
      +          "type": "string"
      +        },
      +        "now": {
      +          "additionalProperties": {},
      +          "description": "The part in progress",
      +          "properties": {
      +            "kind": {
      +              "description": "chant, song, practice, prayer, ritual or blessing",
      +              "type": "string"
      +            },
      +            "position": {
      +              "maximum": 9007199254740991,
      +              "minimum": -9007199254740991,
      +              "type": "integer"
      +            },
      +            "recording": {
      +              "type": "string"
      +            },
      +            "seconds": {
      +              "type": "number"
      +            },
      +            "start": {
      +              "description": "Seconds into the service at which this part begins",
      +              "type": "number"
      +            },
      +            "title": {
      +              "type": "string"
      +            },
      +            "url": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "position",
      +            "kind",
      +            "title",
      +            "start",
      +            "seconds",
      +            "url"
      +          ],
      +          "type": "object"
      +        },
      +        "offset": {
      +          "type": "number"
      +        },
      +        "order": {
      +          "items": {
      +            "additionalProperties": {},
      +            "properties": {
      +              "kind": {
      +                "description": "chant, song, practice, prayer, ritual or blessing",
      +                "type": "string"
      +              },
      +              "position": {
      +                "maximum": 9007199254740991,
      +                "minimum": -9007199254740991,
      +                "type": "integer"
      +              },
      +              "recording": {
      +                "type": "string"
      +              },
      +              "seconds": {
      +                "type": "number"
      +              },
      +              "start": {
      +                "description": "Seconds into the service at which this part begins",
      +                "type": "number"
      +              },
      +              "title": {
      +                "type": "string"
      +              },
      +              "url": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "position",
      +              "kind",
      +              "title",
      +              "start",
      +              "seconds",
      +              "url"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "remaining": {
      +          "type": "number"
      +        },
      +        "slot": {
      +          "description": "The four hours of the visitor's day this service holds, e.g. \"08:00 to 12:00\"",
      +          "type": "string"
      +        },
      +        "timezone": {
      +          "type": "string"
      +        },
      +        "today": {
      +          "additionalProperties": {},
      +          "properties": {
      +            "date": {
      +              "type": "string"
      +            },
      +            "weekday": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "date",
      +            "weekday"
      +          ],
      +          "type": "object"
      +        },
      +        "word": {
      +          "description": "The few sentences that open the service; null for the rotation's",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "slot",
      +        "timezone",
      +        "today",
      +        "name",
      +        "word",
      +        "arrangedBy",
      +        "order",
      +        "now",
      +        "offset",
      +        "remaining",
      +        "loopSeconds",
      +        "nextSlot"
      +      ],
      +      "type": "object"
      +    },
      +    "status": {
      +      "type": "string"
      +    },
      +    "timestamp": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "timestamp",
      +    "status",
      +    "mode",
      +    "service",
      +    "current",
      +    "congregation",
      +    "next_steps"
      +  ],
      +  "type": "object"
      +}
  10. Changed1 schema field changed
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone such as America/New_York. Readings are then chosen for your hour too. Not stored."New value: +"IANA timezone such as America/New_York, so you attend the service for your own hour; without one, UTC's. Not stored."
  11. Changed1 schema field changed
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  12. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.