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"
+]