Skip to main content
Glama

Read my year

get_timing_year
Read-onlyIdempotent

Returns annual personal astrology periods for a temporary chartContext or the authorized saved self chart. Saved access requires full_timing; temporary access requires a confirmed viewing timezone. The reading field combines annual ranks 1–15, all calculated eclipse contacts and up to five remaining spans chronologically without duplicates. Conjunctive focus filters apply to all annual candidates. Annual and remaining ranks are separate symbolic measures, not probabilities. Most fast-planet transits are outside annual coverage; empty matches do not establish no chart contact or life event. Non-unique peaks and clipped boundaries remain explicit.

Input Schema

NameRequiredDescriptionDefault
yearYesCalendar year, or this_year, next_year, previous_year resolved in the chart's viewing timezone. Actual engine coverage is checked by Novamris.
focusNoOptional conjunctive filters over calculated annual candidates: movingBody, natalBody and technique (transit, return, eclipse_contact). Annual candidates exclude most fast-planet transits.
timezoneNoOptional confirmed viewing timezone (IANA identifier or UTC), separate from birthplace. Temporary charts require a supplied timezone when their context has none; saved charts retain the configured account timezone.
chartContextNoSensitive opaque temporary chart context. A supplied value selects the temporary chart; an absent value selects the authorized saved self chart. Valid for two hours in its issuing environment and calculation version.

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / data / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "algorithmVersion": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "birthProfileVersion": {
      -        "maximum": 9007199254740991,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "calculatedAt": {
      -        "format": "date-time",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -        "type": "string"
      -      },
      -      "calendarAvailableTo": {
      -        "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
      -        "type": "string"
      -      },
      -      "coverage": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "availableFrom": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "availableTo": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "end": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "fullYear": {
      -            "type": "boolean"
      -          },
      -          "requestedEnd": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "requestedStart": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "start": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "requestedStart",
      -          "requestedEnd",
      -          "start",
      -          "end",
      -          "fullYear",
      -          "availableFrom",
      -          "availableTo"
      -        ],
      -        "type": "object"
      -      },
      -      "interpretationNote": {
      -        "maxLength": 1000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "method": {
      -        "maxLength": 1000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "providerVersion": {
      -        "maxLength": 300,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "reading": {
      -        "additionalProperties": false,
      -        "description": "Expanded chronological overview or focused annual selection. With focus active, reading.windows contains every matching annual candidate; base windows and upcoming remain unfiltered context.",
      -        "properties": {
      -          "asOfDate": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "coverage": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "availableFrom": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availableTo": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "end": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "fullYear": {
      -                "type": "boolean"
      -              },
      -              "requestedEnd": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "requestedStart": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "start": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "requestedStart",
      -              "requestedEnd",
      -              "start",
      -              "end",
      -              "fullYear",
      -              "availableFrom",
      -              "availableTo"
      -            ],
      -            "type": "object"
      -          },
      -          "focus": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "movingBody": {
      -                "enum": [
      -                  "sun",
      -                  "moon",
      -                  "mercury",
      -                  "venus",
      -                  "mars",
      -                  "jupiter",
      -                  "saturn",
      -                  "uranus",
      -                  "neptune",
      -                  "pluto",
      -                  "true_node",
      -                  "solar_eclipse",
      -                  "lunar_eclipse"
      -                ],
      -                "type": "string"
      -              },
      -              "natalBody": {
      -                "enum": [
      -                  "sun",
      -                  "moon",
      -                  "mercury",
      -                  "venus",
      -                  "mars",
      -                  "jupiter",
      -                  "saturn",
      -                  "uranus",
      -                  "neptune",
      -                  "pluto",
      -                  "true_node",
      -                  "ascendant",
      -                  "midheaven"
      -                ],
      -                "type": "string"
      -              },
      -              "technique": {
      -                "enum": [
      -                  "transit",
      -                  "return",
      -                  "eclipse_contact"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "mode": {
      -            "enum": [
      -              "overview",
      -              "focused"
      -            ],
      -            "type": "string"
      -          },
      -          "selectionNote": {
      -            "maxLength": 1000,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "timezone": {
      -            "maxLength": 100,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "timingLimit": {
      -            "maxLength": 1000,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "totalMatches": {
      -            "maximum": 366,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "uncertainty": {
      -            "maxLength": 1000,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "windows": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "annualRank": {
      -                      "maximum": 366,
      -                      "minimum": 1,
      -                      "type": "integer"
      -                    },
      -                    "contact": {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "aspect": {
      -                          "enum": [
      -                            "conjunction",
      -                            "sextile",
      -                            "square",
      -                            "trine",
      -                            "opposition"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "movingBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "natalBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "movingBody",
      -                        "natalBody",
      -                        "aspect"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "end": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "endClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "id": {
      -                      "maxLength": 160,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "peak": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "peakIsUnique": {
      -                      "const": true,
      -                      "type": "boolean"
      -                    },
      -                    "remainingRank": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 5,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "start": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "startClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "technique": {
      -                      "enum": [
      -                        "transit",
      -                        "return",
      -                        "eclipse_contact"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "temporalStatus": {
      -                      "enum": [
      -                        "past",
      -                        "ongoing",
      -                        "future"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "title": {
      -                      "maxLength": 200,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "annualRank",
      -                    "remainingRank",
      -                    "temporalStatus",
      -                    "technique",
      -                    "title",
      -                    "contact",
      -                    "start",
      -                    "end",
      -                    "startClipped",
      -                    "endClipped",
      -                    "peakIsUnique",
      -                    "peak"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "annualRank": {
      -                      "maximum": 366,
      -                      "minimum": 1,
      -                      "type": "integer"
      -                    },
      -                    "contact": {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "aspect": {
      -                          "enum": [
      -                            "conjunction",
      -                            "sextile",
      -                            "square",
      -                            "trine",
      -                            "opposition"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "movingBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "natalBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "movingBody",
      -                        "natalBody",
      -                        "aspect"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "end": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "endClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "id": {
      -                      "maxLength": 160,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "peak": {
      -                      "type": "null"
      -                    },
      -                    "peakIsUnique": {
      -                      "const": false,
      -                      "type": "boolean"
      -                    },
      -                    "remainingRank": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 5,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "start": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "startClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "technique": {
      -                      "enum": [
      -                        "transit",
      -                        "return",
      -                        "eclipse_contact"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "temporalStatus": {
      -                      "enum": [
      -                        "past",
      -                        "ongoing",
      -                        "future"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "title": {
      -                      "maxLength": 200,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "annualRank",
      -                    "remainingRank",
      -                    "temporalStatus",
      -                    "technique",
      -                    "title",
      -                    "contact",
      -                    "start",
      -                    "end",
      -                    "startClipped",
      -                    "endClipped",
      -                    "peakIsUnique",
      -                    "peak"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 366,
      -            "type": "array"
      -          },
      -          "year": {
      -            "pattern": "^(19|20)\\d{2}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "year",
      -          "timezone",
      -          "coverage",
      -          "uncertainty",
      -          "asOfDate",
      -          "windows",
      -          "timingLimit",
      -          "selectionNote",
      -          "mode"
      -        ],
      -        "type": "object"
      -      },
      -      "selectionVersion": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "timezone": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "timezoneDataVersion": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "totalDistinctWindows": {
      -        "maximum": 366,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "uncertainty": {
      -        "maxLength": 1000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "upcoming": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "asOfDate": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "totalDistinctWindows": {
      -            "maximum": 366,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "windows": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "annualRank": {
      -                  "maximum": 366,
      -                  "minimum": 1,
      -                  "type": "integer"
      -                },
      -                "contact": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "aspect": {
      -                      "enum": [
      -                        "conjunction",
      -                        "sextile",
      -                        "square",
      -                        "trine",
      -                        "opposition"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "movingBody": {
      -                      "maxLength": 20,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "natalBody": {
      -                      "maxLength": 20,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "orbDegrees": {
      -                      "maximum": 3,
      -                      "minimum": 0,
      -                      "type": "number"
      -                    },
      -                    "relativeWeight": {
      -                      "maximum": 1,
      -                      "minimum": 0,
      -                      "type": "number"
      -                    },
      -                    "uncertaintyDegrees": {
      -                      "maximum": 3,
      -                      "minimum": 0,
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "movingBody",
      -                    "natalBody",
      -                    "aspect",
      -                    "orbDegrees",
      -                    "uncertaintyDegrees",
      -                    "relativeWeight"
      -                  ],
      -                  "type": "object"
      -                },
      -                "contactKey": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "end": {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                "endClipped": {
      -                  "type": "boolean"
      -                },
      -                "id": {
      -                  "maxLength": 160,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "peak": {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                "peakIsUnique": {
      -                  "type": "boolean"
      -                },
      -                "peakRelativeScore": {
      -                  "maximum": 3,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "rank": {
      -                  "maximum": 5,
      -                  "minimum": 1,
      -                  "type": "integer"
      -                },
      -                "relativeLabel": {
      -                  "maxLength": 100,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "relativeRatio": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "start": {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                "startClipped": {
      -                  "type": "boolean"
      -                },
      -                "title": {
      -                  "maxLength": 200,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "rank",
      -                "start",
      -                "end",
      -                "peak",
      -                "peakIsUnique",
      -                "contactKey",
      -                "contact",
      -                "title",
      -                "peakRelativeScore",
      -                "relativeLabel",
      -                "relativeRatio",
      -                "startClipped",
      -                "endClipped",
      -                "annualRank"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 5,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "asOfDate",
      -          "windows",
      -          "totalDistinctWindows"
      -        ],
      -        "type": "object"
      -      },
      -      "windows": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "contact": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "aspect": {
      -                  "enum": [
      -                    "conjunction",
      -                    "sextile",
      -                    "square",
      -                    "trine",
      -                    "opposition"
      -                  ],
      -                  "type": "string"
      -                },
      -                "movingBody": {
      -                  "maxLength": 20,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "natalBody": {
      -                  "maxLength": 20,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "orbDegrees": {
      -                  "maximum": 3,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "relativeWeight": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "uncertaintyDegrees": {
      -                  "maximum": 3,
      -                  "minimum": 0,
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "movingBody",
      -                "natalBody",
      -                "aspect",
      -                "orbDegrees",
      -                "uncertaintyDegrees",
      -                "relativeWeight"
      -              ],
      -              "type": "object"
      -            },
      -            "contactKey": {
      -              "maxLength": 80,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "end": {
      -              "format": "date",
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -              "type": "string"
      -            },
      -            "endClipped": {
      -              "type": "boolean"
      -            },
      -            "id": {
      -              "maxLength": 160,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "peak": {
      -              "format": "date",
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -              "type": "string"
      -            },
      -            "peakIsUnique": {
      -              "type": "boolean"
      -            },
      -            "peakRelativeScore": {
      -              "maximum": 3,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "rank": {
      -              "maximum": 5,
      -              "minimum": 1,
      -              "type": "integer"
      -            },
      -            "relativeLabel": {
      -              "maxLength": 100,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "relativeRatio": {
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "start": {
      -              "format": "date",
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -              "type": "string"
      -            },
      -            "startClipped": {
      -              "type": "boolean"
      -            },
      -            "title": {
      -              "maxLength": 200,
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "rank",
      -            "start",
      -            "end",
      -            "peak",
      -            "peakIsUnique",
      -            "contactKey",
      -            "contact",
      -            "title",
      -            "peakRelativeScore",
      -            "relativeLabel",
      -            "relativeRatio",
      -            "startClipped",
      -            "endClipped"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 5,
      -        "type": "array"
      -      },
      -      "year": {
      -        "pattern": "^(19|20)\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "birthProfileVersion",
      -      "year",
      -      "coverage",
      -      "calendarAvailableTo",
      -      "timezone",
      -      "timezoneDataVersion",
      -      "providerVersion",
      -      "algorithmVersion",
      -      "selectionVersion",
      -      "calculatedAt",
      -      "windows",
      -      "totalDistinctWindows",
      -      "uncertainty",
      -      "method",
      -      "interpretationNote",
      -      "upcoming"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "algorithmVersion": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "calculatedAt": {
      -        "format": "date-time",
      -        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -        "type": "string"
      -      },
      -      "calendarAvailableTo": {
      -        "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
      -        "type": "string"
      -      },
      -      "coverage": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "availableFrom": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "availableTo": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "end": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "fullYear": {
      -            "type": "boolean"
      -          },
      -          "requestedEnd": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "requestedStart": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "start": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "requestedStart",
      -          "requestedEnd",
      -          "start",
      -          "end",
      -          "fullYear",
      -          "availableFrom",
      -          "availableTo"
      -        ],
      -        "type": "object"
      -      },
      -      "interpretationNote": {
      -        "maxLength": 1000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "method": {
      -        "maxLength": 1000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "persistence": {
      -        "const": "no_profile_chart_or_analysis_saved",
      -        "type": "string"
      -      },
      -      "providerVersion": {
      -        "maxLength": 300,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "reading": {
      -        "additionalProperties": false,
      -        "description": "Expanded chronological overview or focused annual selection. With focus active, reading.windows contains every matching annual candidate; base windows and upcoming remain unfiltered context.",
      -        "properties": {
      -          "asOfDate": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "coverage": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "availableFrom": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "availableTo": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "end": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "fullYear": {
      -                "type": "boolean"
      -              },
      -              "requestedEnd": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "requestedStart": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              },
      -              "start": {
      -                "format": "date",
      -                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                "type": "string"
      -              }
      -            },
      -            "required": [
      -              "requestedStart",
      -              "requestedEnd",
      -              "start",
      -              "end",
      -              "fullYear",
      -              "availableFrom",
      -              "availableTo"
      -            ],
      -            "type": "object"
      -          },
      -          "focus": {
      -            "additionalProperties": false,
      -            "properties": {
      -              "movingBody": {
      -                "enum": [
      -                  "sun",
      -                  "moon",
      -                  "mercury",
      -                  "venus",
      -                  "mars",
      -                  "jupiter",
      -                  "saturn",
      -                  "uranus",
      -                  "neptune",
      -                  "pluto",
      -                  "true_node",
      -                  "solar_eclipse",
      -                  "lunar_eclipse"
      -                ],
      -                "type": "string"
      -              },
      -              "natalBody": {
      -                "enum": [
      -                  "sun",
      -                  "moon",
      -                  "mercury",
      -                  "venus",
      -                  "mars",
      -                  "jupiter",
      -                  "saturn",
      -                  "uranus",
      -                  "neptune",
      -                  "pluto",
      -                  "true_node",
      -                  "ascendant",
      -                  "midheaven"
      -                ],
      -                "type": "string"
      -              },
      -              "technique": {
      -                "enum": [
      -                  "transit",
      -                  "return",
      -                  "eclipse_contact"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "mode": {
      -            "enum": [
      -              "overview",
      -              "focused"
      -            ],
      -            "type": "string"
      -          },
      -          "selectionNote": {
      -            "maxLength": 1000,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "timezone": {
      -            "maxLength": 100,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "timingLimit": {
      -            "maxLength": 1000,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "totalMatches": {
      -            "maximum": 366,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "uncertainty": {
      -            "maxLength": 1000,
      -            "minLength": 1,
      -            "type": "string"
      -          },
      -          "windows": {
      -            "items": {
      -              "oneOf": [
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "annualRank": {
      -                      "maximum": 366,
      -                      "minimum": 1,
      -                      "type": "integer"
      -                    },
      -                    "contact": {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "aspect": {
      -                          "enum": [
      -                            "conjunction",
      -                            "sextile",
      -                            "square",
      -                            "trine",
      -                            "opposition"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "movingBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "natalBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "movingBody",
      -                        "natalBody",
      -                        "aspect"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "end": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "endClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "id": {
      -                      "maxLength": 160,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "peak": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "peakIsUnique": {
      -                      "const": true,
      -                      "type": "boolean"
      -                    },
      -                    "remainingRank": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 5,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "start": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "startClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "technique": {
      -                      "enum": [
      -                        "transit",
      -                        "return",
      -                        "eclipse_contact"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "temporalStatus": {
      -                      "enum": [
      -                        "past",
      -                        "ongoing",
      -                        "future"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "title": {
      -                      "maxLength": 200,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "annualRank",
      -                    "remainingRank",
      -                    "temporalStatus",
      -                    "technique",
      -                    "title",
      -                    "contact",
      -                    "start",
      -                    "end",
      -                    "startClipped",
      -                    "endClipped",
      -                    "peakIsUnique",
      -                    "peak"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "annualRank": {
      -                      "maximum": 366,
      -                      "minimum": 1,
      -                      "type": "integer"
      -                    },
      -                    "contact": {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "aspect": {
      -                          "enum": [
      -                            "conjunction",
      -                            "sextile",
      -                            "square",
      -                            "trine",
      -                            "opposition"
      -                          ],
      -                          "type": "string"
      -                        },
      -                        "movingBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        },
      -                        "natalBody": {
      -                          "maxLength": 30,
      -                          "minLength": 1,
      -                          "type": "string"
      -                        }
      -                      },
      -                      "required": [
      -                        "movingBody",
      -                        "natalBody",
      -                        "aspect"
      -                      ],
      -                      "type": "object"
      -                    },
      -                    "end": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "endClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "id": {
      -                      "maxLength": 160,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "peak": {
      -                      "type": "null"
      -                    },
      -                    "peakIsUnique": {
      -                      "const": false,
      -                      "type": "boolean"
      -                    },
      -                    "remainingRank": {
      -                      "anyOf": [
      -                        {
      -                          "maximum": 5,
      -                          "minimum": 1,
      -                          "type": "integer"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    },
      -                    "start": {
      -                      "format": "date",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                      "type": "string"
      -                    },
      -                    "startClipped": {
      -                      "type": "boolean"
      -                    },
      -                    "technique": {
      -                      "enum": [
      -                        "transit",
      -                        "return",
      -                        "eclipse_contact"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "temporalStatus": {
      -                      "enum": [
      -                        "past",
      -                        "ongoing",
      -                        "future"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "title": {
      -                      "maxLength": 200,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "id",
      -                    "annualRank",
      -                    "remainingRank",
      -                    "temporalStatus",
      -                    "technique",
      -                    "title",
      -                    "contact",
      -                    "start",
      -                    "end",
      -                    "startClipped",
      -                    "endClipped",
      -                    "peakIsUnique",
      -                    "peak"
      -                  ],
      -                  "type": "object"
      -                }
      -              ]
      -            },
      -            "maxItems": 366,
      -            "type": "array"
      -          },
      -          "year": {
      -            "pattern": "^(19|20)\\d{2}$",
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "year",
      -          "timezone",
      -          "coverage",
      -          "uncertainty",
      -          "asOfDate",
      -          "windows",
      -          "timingLimit",
      -          "selectionNote",
      -          "mode"
      -        ],
      -        "type": "object"
      -      },
      -      "selectionVersion": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "timezone": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "timezoneDataVersion": {
      -        "maxLength": 100,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "totalDistinctWindows": {
      -        "maximum": 366,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "uncertainty": {
      -        "maxLength": 1000,
      -        "minLength": 1,
      -        "type": "string"
      -      },
      -      "upcoming": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "asOfDate": {
      -            "format": "date",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -            "type": "string"
      -          },
      -          "totalDistinctWindows": {
      -            "maximum": 366,
      -            "minimum": 0,
      -            "type": "integer"
      -          },
      -          "windows": {
      -            "items": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "annualRank": {
      -                  "maximum": 366,
      -                  "minimum": 1,
      -                  "type": "integer"
      -                },
      -                "contact": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "aspect": {
      -                      "enum": [
      -                        "conjunction",
      -                        "sextile",
      -                        "square",
      -                        "trine",
      -                        "opposition"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    "movingBody": {
      -                      "maxLength": 20,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "natalBody": {
      -                      "maxLength": 20,
      -                      "minLength": 1,
      -                      "type": "string"
      -                    },
      -                    "orbDegrees": {
      -                      "maximum": 3,
      -                      "minimum": 0,
      -                      "type": "number"
      -                    },
      -                    "relativeWeight": {
      -                      "maximum": 1,
      -                      "minimum": 0,
      -                      "type": "number"
      -                    },
      -                    "uncertaintyDegrees": {
      -                      "maximum": 3,
      -                      "minimum": 0,
      -                      "type": "number"
      -                    }
      -                  },
      -                  "required": [
      -                    "movingBody",
      -                    "natalBody",
      -                    "aspect",
      -                    "orbDegrees",
      -                    "uncertaintyDegrees",
      -                    "relativeWeight"
      -                  ],
      -                  "type": "object"
      -                },
      -                "contactKey": {
      -                  "maxLength": 80,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "end": {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                "endClipped": {
      -                  "type": "boolean"
      -                },
      -                "id": {
      -                  "maxLength": 160,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "peak": {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                "peakIsUnique": {
      -                  "type": "boolean"
      -                },
      -                "peakRelativeScore": {
      -                  "maximum": 3,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "rank": {
      -                  "maximum": 5,
      -                  "minimum": 1,
      -                  "type": "integer"
      -                },
      -                "relativeLabel": {
      -                  "maxLength": 100,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "relativeRatio": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "start": {
      -                  "format": "date",
      -                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -                  "type": "string"
      -                },
      -                "startClipped": {
      -                  "type": "boolean"
      -                },
      -                "title": {
      -                  "maxLength": 200,
      -                  "minLength": 1,
      -                  "type": "string"
      -                }
      -              },
      -              "required": [
      -                "id",
      -                "rank",
      -                "start",
      -                "end",
      -                "peak",
      -                "peakIsUnique",
      -                "contactKey",
      -                "contact",
      -                "title",
      -                "peakRelativeScore",
      -                "relativeLabel",
      -                "relativeRatio",
      -                "startClipped",
      -                "endClipped",
      -                "annualRank"
      -              ],
      -              "type": "object"
      -            },
      -            "maxItems": 5,
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "asOfDate",
      -          "windows",
      -          "totalDistinctWindows"
      -        ],
      -        "type": "object"
      -      },
      -      "windows": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "contact": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "aspect": {
      -                  "enum": [
      -                    "conjunction",
      -                    "sextile",
      -                    "square",
      -                    "trine",
      -                    "opposition"
      -                  ],
      -                  "type": "string"
      -                },
      -                "movingBody": {
      -                  "maxLength": 20,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "natalBody": {
      -                  "maxLength": 20,
      -                  "minLength": 1,
      -                  "type": "string"
      -                },
      -                "orbDegrees": {
      -                  "maximum": 3,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "relativeWeight": {
      -                  "maximum": 1,
      -                  "minimum": 0,
      -                  "type": "number"
      -                },
      -                "uncertaintyDegrees": {
      -                  "maximum": 3,
      -                  "minimum": 0,
      -                  "type": "number"
      -                }
      -              },
      -              "required": [
      -                "movingBody",
      -                "natalBody",
      -                "aspect",
      -                "orbDegrees",
      -                "uncertaintyDegrees",
      -                "relativeWeight"
      -              ],
      -              "type": "object"
      -            },
      -            "contactKey": {
      -              "maxLength": 80,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "end": {
      -              "format": "date",
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -              "type": "string"
      -            },
      -            "endClipped": {
      -              "type": "boolean"
      -            },
      -            "id": {
      -              "maxLength": 160,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "peak": {
      -              "format": "date",
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -              "type": "string"
      -            },
      -            "peakIsUnique": {
      -              "type": "boolean"
      -            },
      -            "peakRelativeScore": {
      -              "maximum": 3,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "rank": {
      -              "maximum": 5,
      -              "minimum": 1,
      -              "type": "integer"
      -            },
      -            "relativeLabel": {
      -              "maxLength": 100,
      -              "minLength": 1,
      -              "type": "string"
      -            },
      -            "relativeRatio": {
      -              "maximum": 1,
      -              "minimum": 0,
      -              "type": "number"
      -            },
      -            "start": {
      -              "format": "date",
      -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      -              "type": "string"
      -            },
      -            "startClipped": {
      -              "type": "boolean"
      -            },
      -            "title": {
      -              "maxLength": 200,
      -              "minLength": 1,
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "id",
      -            "rank",
      -            "start",
      -            "end",
      -            "peak",
      -            "peakIsUnique",
      -            "contactKey",
      -            "contact",
      -            "title",
      -            "peakRelativeScore",
      -            "relativeLabel",
      -            "relativeRatio",
      -            "startClipped",
      -            "endClipped"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 5,
      -        "type": "array"
      -      },
      -      "year": {
      -        "pattern": "^(19|20)\\d{2}$",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "year",
      -      "coverage",
      -      "calendarAvailableTo",
      -      "timezone",
      -      "timezoneDataVersion",
      -      "providerVersion",
      -      "algorithmVersion",
      -      "selectionVersion",
      -      "calculatedAt",
      -      "windows",
      -      "totalDistinctWindows",
      -      "uncertainty",
      -      "method",
      -      "interpretationNote",
      -      "upcoming",
      -      "persistence"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "algorithmVersion": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "birthProfileVersion": {
      +        "maximum": 9007199254740991,
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "calculatedAt": {
      +        "format": "date-time",
      +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +        "type": "string"
      +      },
      +      "calendarAvailableTo": {
      +        "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
      +        "type": "string"
      +      },
      +      "coverage": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "availableFrom": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "availableTo": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "end": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "fullYear": {
      +            "type": "boolean"
      +          },
      +          "requestedEnd": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "requestedStart": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "start": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "requestedStart",
      +          "requestedEnd",
      +          "start",
      +          "end",
      +          "fullYear",
      +          "availableFrom",
      +          "availableTo"
      +        ],
      +        "type": "object"
      +      },
      +      "interpretationNote": {
      +        "maxLength": 1000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "method": {
      +        "maxLength": 1000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "providerVersion": {
      +        "maxLength": 300,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "reading": {
      +        "additionalProperties": false,
      +        "description": "Expanded chronological overview or focused annual selection. With focus active, reading.windows contains every matching annual candidate; base windows and upcoming remain unfiltered context.",
      +        "properties": {
      +          "asOfDate": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "coverage": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "availableFrom": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availableTo": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "end": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "fullYear": {
      +                "type": "boolean"
      +              },
      +              "requestedEnd": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "requestedStart": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "start": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "requestedStart",
      +              "requestedEnd",
      +              "start",
      +              "end",
      +              "fullYear",
      +              "availableFrom",
      +              "availableTo"
      +            ],
      +            "type": "object"
      +          },
      +          "focus": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "movingBody": {
      +                "enum": [
      +                  "sun",
      +                  "moon",
      +                  "mercury",
      +                  "venus",
      +                  "mars",
      +                  "jupiter",
      +                  "saturn",
      +                  "uranus",
      +                  "neptune",
      +                  "pluto",
      +                  "true_node",
      +                  "solar_eclipse",
      +                  "lunar_eclipse"
      +                ],
      +                "type": "string"
      +              },
      +              "natalBody": {
      +                "enum": [
      +                  "sun",
      +                  "moon",
      +                  "mercury",
      +                  "venus",
      +                  "mars",
      +                  "jupiter",
      +                  "saturn",
      +                  "uranus",
      +                  "neptune",
      +                  "pluto",
      +                  "true_node",
      +                  "ascendant",
      +                  "midheaven"
      +                ],
      +                "type": "string"
      +              },
      +              "technique": {
      +                "enum": [
      +                  "transit",
      +                  "return",
      +                  "eclipse_contact"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "mode": {
      +            "enum": [
      +              "overview",
      +              "focused"
      +            ],
      +            "type": "string"
      +          },
      +          "selectionNote": {
      +            "maxLength": 1000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "timezone": {
      +            "maxLength": 100,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "timingLimit": {
      +            "maxLength": 1000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "totalMatches": {
      +            "maximum": 366,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "uncertainty": {
      +            "maxLength": 1000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "windows": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": true,
      +                      "type": "boolean"
      +                    },
      +                    "remainingRank": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 5,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "technique": {
      +                      "enum": [
      +                        "transit",
      +                        "return",
      +                        "eclipse_contact"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "temporalStatus": {
      +                      "enum": [
      +                        "past",
      +                        "ongoing",
      +                        "future"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "annualRank",
      +                    "remainingRank",
      +                    "temporalStatus",
      +                    "technique",
      +                    "title",
      +                    "contact",
      +                    "start",
      +                    "end",
      +                    "startClipped",
      +                    "endClipped",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "type": "null"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": false,
      +                      "type": "boolean"
      +                    },
      +                    "remainingRank": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 5,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "technique": {
      +                      "enum": [
      +                        "transit",
      +                        "return",
      +                        "eclipse_contact"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "temporalStatus": {
      +                      "enum": [
      +                        "past",
      +                        "ongoing",
      +                        "future"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "annualRank",
      +                    "remainingRank",
      +                    "temporalStatus",
      +                    "technique",
      +                    "title",
      +                    "contact",
      +                    "start",
      +                    "end",
      +                    "startClipped",
      +                    "endClipped",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 366,
      +            "type": "array"
      +          },
      +          "year": {
      +            "pattern": "^(19|20)\\d{2}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "year",
      +          "timezone",
      +          "coverage",
      +          "uncertainty",
      +          "asOfDate",
      +          "windows",
      +          "timingLimit",
      +          "selectionNote",
      +          "mode"
      +        ],
      +        "type": "object"
      +      },
      +      "selectionVersion": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "timezone": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "timezoneDataVersion": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "totalDistinctWindows": {
      +        "maximum": 366,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "uncertainty": {
      +        "maxLength": 1000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "upcoming": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "asOfDate": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "totalDistinctWindows": {
      +            "maximum": 366,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "windows": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "orbDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "relativeWeight": {
      +                          "maximum": 1,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "uncertaintyDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect",
      +                        "orbDegrees",
      +                        "uncertaintyDegrees",
      +                        "relativeWeight"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "contactKey": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": true,
      +                      "type": "boolean"
      +                    },
      +                    "peakRelativeScore": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "rank": {
      +                      "maximum": 5,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "relativeLabel": {
      +                      "maxLength": 100,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "relativeRatio": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "rank",
      +                    "start",
      +                    "end",
      +                    "contactKey",
      +                    "contact",
      +                    "title",
      +                    "peakRelativeScore",
      +                    "relativeLabel",
      +                    "relativeRatio",
      +                    "startClipped",
      +                    "endClipped",
      +                    "annualRank",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "orbDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "relativeWeight": {
      +                          "maximum": 1,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "uncertaintyDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect",
      +                        "orbDegrees",
      +                        "uncertaintyDegrees",
      +                        "relativeWeight"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "contactKey": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "type": "null"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": false,
      +                      "type": "boolean"
      +                    },
      +                    "peakRelativeScore": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "rank": {
      +                      "maximum": 5,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "relativeLabel": {
      +                      "maxLength": 100,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "relativeRatio": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "rank",
      +                    "start",
      +                    "end",
      +                    "contactKey",
      +                    "contact",
      +                    "title",
      +                    "peakRelativeScore",
      +                    "relativeLabel",
      +                    "relativeRatio",
      +                    "startClipped",
      +                    "endClipped",
      +                    "annualRank",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 5,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "asOfDate",
      +          "windows",
      +          "totalDistinctWindows"
      +        ],
      +        "type": "object"
      +      },
      +      "windows": {
      +        "items": {
      +          "oneOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "contact": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "aspect": {
      +                      "enum": [
      +                        "conjunction",
      +                        "sextile",
      +                        "square",
      +                        "trine",
      +                        "opposition"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "movingBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "natalBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "orbDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "relativeWeight": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "uncertaintyDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "movingBody",
      +                    "natalBody",
      +                    "aspect",
      +                    "orbDegrees",
      +                    "uncertaintyDegrees",
      +                    "relativeWeight"
      +                  ],
      +                  "type": "object"
      +                },
      +                "contactKey": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "end": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "endClipped": {
      +                  "type": "boolean"
      +                },
      +                "id": {
      +                  "maxLength": 160,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "peak": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "peakIsUnique": {
      +                  "const": true,
      +                  "type": "boolean"
      +                },
      +                "peakRelativeScore": {
      +                  "maximum": 3,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "rank": {
      +                  "maximum": 5,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "relativeLabel": {
      +                  "maxLength": 100,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "relativeRatio": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "start": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "startClipped": {
      +                  "type": "boolean"
      +                },
      +                "title": {
      +                  "maxLength": 200,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "rank",
      +                "start",
      +                "end",
      +                "contactKey",
      +                "contact",
      +                "title",
      +                "peakRelativeScore",
      +                "relativeLabel",
      +                "relativeRatio",
      +                "startClipped",
      +                "endClipped",
      +                "peakIsUnique",
      +                "peak"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "contact": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "aspect": {
      +                      "enum": [
      +                        "conjunction",
      +                        "sextile",
      +                        "square",
      +                        "trine",
      +                        "opposition"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "movingBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "natalBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "orbDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "relativeWeight": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "uncertaintyDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "movingBody",
      +                    "natalBody",
      +                    "aspect",
      +                    "orbDegrees",
      +                    "uncertaintyDegrees",
      +                    "relativeWeight"
      +                  ],
      +                  "type": "object"
      +                },
      +                "contactKey": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "end": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "endClipped": {
      +                  "type": "boolean"
      +                },
      +                "id": {
      +                  "maxLength": 160,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "peak": {
      +                  "type": "null"
      +                },
      +                "peakIsUnique": {
      +                  "const": false,
      +                  "type": "boolean"
      +                },
      +                "peakRelativeScore": {
      +                  "maximum": 3,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "rank": {
      +                  "maximum": 5,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "relativeLabel": {
      +                  "maxLength": 100,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "relativeRatio": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "start": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "startClipped": {
      +                  "type": "boolean"
      +                },
      +                "title": {
      +                  "maxLength": 200,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "rank",
      +                "start",
      +                "end",
      +                "contactKey",
      +                "contact",
      +                "title",
      +                "peakRelativeScore",
      +                "relativeLabel",
      +                "relativeRatio",
      +                "startClipped",
      +                "endClipped",
      +                "peakIsUnique",
      +                "peak"
      +              ],
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        "maxItems": 5,
      +        "type": "array"
      +      },
      +      "year": {
      +        "pattern": "^(19|20)\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "birthProfileVersion",
      +      "year",
      +      "coverage",
      +      "calendarAvailableTo",
      +      "timezone",
      +      "timezoneDataVersion",
      +      "providerVersion",
      +      "algorithmVersion",
      +      "selectionVersion",
      +      "calculatedAt",
      +      "windows",
      +      "totalDistinctWindows",
      +      "uncertainty",
      +      "method",
      +      "interpretationNote",
      +      "upcoming"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "algorithmVersion": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "calculatedAt": {
      +        "format": "date-time",
      +        "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +        "type": "string"
      +      },
      +      "calendarAvailableTo": {
      +        "pattern": "^\\d{4}-(0[1-9]|1[0-2])$",
      +        "type": "string"
      +      },
      +      "coverage": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "availableFrom": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "availableTo": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "end": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "fullYear": {
      +            "type": "boolean"
      +          },
      +          "requestedEnd": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "requestedStart": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "start": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "requestedStart",
      +          "requestedEnd",
      +          "start",
      +          "end",
      +          "fullYear",
      +          "availableFrom",
      +          "availableTo"
      +        ],
      +        "type": "object"
      +      },
      +      "interpretationNote": {
      +        "maxLength": 1000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "method": {
      +        "maxLength": 1000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "persistence": {
      +        "const": "no_profile_chart_or_analysis_saved",
      +        "type": "string"
      +      },
      +      "providerVersion": {
      +        "maxLength": 300,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "reading": {
      +        "additionalProperties": false,
      +        "description": "Expanded chronological overview or focused annual selection. With focus active, reading.windows contains every matching annual candidate; base windows and upcoming remain unfiltered context.",
      +        "properties": {
      +          "asOfDate": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "coverage": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "availableFrom": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "availableTo": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "end": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "fullYear": {
      +                "type": "boolean"
      +              },
      +              "requestedEnd": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "requestedStart": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              },
      +              "start": {
      +                "format": "date",
      +                "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "requestedStart",
      +              "requestedEnd",
      +              "start",
      +              "end",
      +              "fullYear",
      +              "availableFrom",
      +              "availableTo"
      +            ],
      +            "type": "object"
      +          },
      +          "focus": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "movingBody": {
      +                "enum": [
      +                  "sun",
      +                  "moon",
      +                  "mercury",
      +                  "venus",
      +                  "mars",
      +                  "jupiter",
      +                  "saturn",
      +                  "uranus",
      +                  "neptune",
      +                  "pluto",
      +                  "true_node",
      +                  "solar_eclipse",
      +                  "lunar_eclipse"
      +                ],
      +                "type": "string"
      +              },
      +              "natalBody": {
      +                "enum": [
      +                  "sun",
      +                  "moon",
      +                  "mercury",
      +                  "venus",
      +                  "mars",
      +                  "jupiter",
      +                  "saturn",
      +                  "uranus",
      +                  "neptune",
      +                  "pluto",
      +                  "true_node",
      +                  "ascendant",
      +                  "midheaven"
      +                ],
      +                "type": "string"
      +              },
      +              "technique": {
      +                "enum": [
      +                  "transit",
      +                  "return",
      +                  "eclipse_contact"
      +                ],
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "mode": {
      +            "enum": [
      +              "overview",
      +              "focused"
      +            ],
      +            "type": "string"
      +          },
      +          "selectionNote": {
      +            "maxLength": 1000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "timezone": {
      +            "maxLength": 100,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "timingLimit": {
      +            "maxLength": 1000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "totalMatches": {
      +            "maximum": 366,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "uncertainty": {
      +            "maxLength": 1000,
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "windows": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": true,
      +                      "type": "boolean"
      +                    },
      +                    "remainingRank": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 5,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "technique": {
      +                      "enum": [
      +                        "transit",
      +                        "return",
      +                        "eclipse_contact"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "temporalStatus": {
      +                      "enum": [
      +                        "past",
      +                        "ongoing",
      +                        "future"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "annualRank",
      +                    "remainingRank",
      +                    "temporalStatus",
      +                    "technique",
      +                    "title",
      +                    "contact",
      +                    "start",
      +                    "end",
      +                    "startClipped",
      +                    "endClipped",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 30,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "type": "null"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": false,
      +                      "type": "boolean"
      +                    },
      +                    "remainingRank": {
      +                      "anyOf": [
      +                        {
      +                          "maximum": 5,
      +                          "minimum": 1,
      +                          "type": "integer"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "technique": {
      +                      "enum": [
      +                        "transit",
      +                        "return",
      +                        "eclipse_contact"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "temporalStatus": {
      +                      "enum": [
      +                        "past",
      +                        "ongoing",
      +                        "future"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "annualRank",
      +                    "remainingRank",
      +                    "temporalStatus",
      +                    "technique",
      +                    "title",
      +                    "contact",
      +                    "start",
      +                    "end",
      +                    "startClipped",
      +                    "endClipped",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 366,
      +            "type": "array"
      +          },
      +          "year": {
      +            "pattern": "^(19|20)\\d{2}$",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "year",
      +          "timezone",
      +          "coverage",
      +          "uncertainty",
      +          "asOfDate",
      +          "windows",
      +          "timingLimit",
      +          "selectionNote",
      +          "mode"
      +        ],
      +        "type": "object"
      +      },
      +      "selectionVersion": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "timezone": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "timezoneDataVersion": {
      +        "maxLength": 100,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "totalDistinctWindows": {
      +        "maximum": 366,
      +        "minimum": 0,
      +        "type": "integer"
      +      },
      +      "uncertainty": {
      +        "maxLength": 1000,
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "upcoming": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "asOfDate": {
      +            "format": "date",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +            "type": "string"
      +          },
      +          "totalDistinctWindows": {
      +            "maximum": 366,
      +            "minimum": 0,
      +            "type": "integer"
      +          },
      +          "windows": {
      +            "items": {
      +              "oneOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "orbDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "relativeWeight": {
      +                          "maximum": 1,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "uncertaintyDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect",
      +                        "orbDegrees",
      +                        "uncertaintyDegrees",
      +                        "relativeWeight"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "contactKey": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": true,
      +                      "type": "boolean"
      +                    },
      +                    "peakRelativeScore": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "rank": {
      +                      "maximum": 5,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "relativeLabel": {
      +                      "maxLength": 100,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "relativeRatio": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "rank",
      +                    "start",
      +                    "end",
      +                    "contactKey",
      +                    "contact",
      +                    "title",
      +                    "peakRelativeScore",
      +                    "relativeLabel",
      +                    "relativeRatio",
      +                    "startClipped",
      +                    "endClipped",
      +                    "annualRank",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "annualRank": {
      +                      "maximum": 366,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "contact": {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "aspect": {
      +                          "enum": [
      +                            "conjunction",
      +                            "sextile",
      +                            "square",
      +                            "trine",
      +                            "opposition"
      +                          ],
      +                          "type": "string"
      +                        },
      +                        "movingBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "natalBody": {
      +                          "maxLength": 20,
      +                          "minLength": 1,
      +                          "type": "string"
      +                        },
      +                        "orbDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "relativeWeight": {
      +                          "maximum": 1,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        },
      +                        "uncertaintyDegrees": {
      +                          "maximum": 3,
      +                          "minimum": 0,
      +                          "type": "number"
      +                        }
      +                      },
      +                      "required": [
      +                        "movingBody",
      +                        "natalBody",
      +                        "aspect",
      +                        "orbDegrees",
      +                        "uncertaintyDegrees",
      +                        "relativeWeight"
      +                      ],
      +                      "type": "object"
      +                    },
      +                    "contactKey": {
      +                      "maxLength": 80,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "end": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "endClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "id": {
      +                      "maxLength": 160,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "peak": {
      +                      "type": "null"
      +                    },
      +                    "peakIsUnique": {
      +                      "const": false,
      +                      "type": "boolean"
      +                    },
      +                    "peakRelativeScore": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "rank": {
      +                      "maximum": 5,
      +                      "minimum": 1,
      +                      "type": "integer"
      +                    },
      +                    "relativeLabel": {
      +                      "maxLength": 100,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "relativeRatio": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "start": {
      +                      "format": "date",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                      "type": "string"
      +                    },
      +                    "startClipped": {
      +                      "type": "boolean"
      +                    },
      +                    "title": {
      +                      "maxLength": 200,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "id",
      +                    "rank",
      +                    "start",
      +                    "end",
      +                    "contactKey",
      +                    "contact",
      +                    "title",
      +                    "peakRelativeScore",
      +                    "relativeLabel",
      +                    "relativeRatio",
      +                    "startClipped",
      +                    "endClipped",
      +                    "annualRank",
      +                    "peakIsUnique",
      +                    "peak"
      +                  ],
      +                  "type": "object"
      +                }
      +              ]
      +            },
      +            "maxItems": 5,
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "asOfDate",
      +          "windows",
      +          "totalDistinctWindows"
      +        ],
      +        "type": "object"
      +      },
      +      "windows": {
      +        "items": {
      +          "oneOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "contact": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "aspect": {
      +                      "enum": [
      +                        "conjunction",
      +                        "sextile",
      +                        "square",
      +                        "trine",
      +                        "opposition"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "movingBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "natalBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "orbDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "relativeWeight": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "uncertaintyDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "movingBody",
      +                    "natalBody",
      +                    "aspect",
      +                    "orbDegrees",
      +                    "uncertaintyDegrees",
      +                    "relativeWeight"
      +                  ],
      +                  "type": "object"
      +                },
      +                "contactKey": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "end": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "endClipped": {
      +                  "type": "boolean"
      +                },
      +                "id": {
      +                  "maxLength": 160,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "peak": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "peakIsUnique": {
      +                  "const": true,
      +                  "type": "boolean"
      +                },
      +                "peakRelativeScore": {
      +                  "maximum": 3,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "rank": {
      +                  "maximum": 5,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "relativeLabel": {
      +                  "maxLength": 100,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "relativeRatio": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "start": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "startClipped": {
      +                  "type": "boolean"
      +                },
      +                "title": {
      +                  "maxLength": 200,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "rank",
      +                "start",
      +                "end",
      +                "contactKey",
      +                "contact",
      +                "title",
      +                "peakRelativeScore",
      +                "relativeLabel",
      +                "relativeRatio",
      +                "startClipped",
      +                "endClipped",
      +                "peakIsUnique",
      +                "peak"
      +              ],
      +              "type": "object"
      +            },
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "contact": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "aspect": {
      +                      "enum": [
      +                        "conjunction",
      +                        "sextile",
      +                        "square",
      +                        "trine",
      +                        "opposition"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    "movingBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "natalBody": {
      +                      "maxLength": 20,
      +                      "minLength": 1,
      +                      "type": "string"
      +                    },
      +                    "orbDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "relativeWeight": {
      +                      "maximum": 1,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    },
      +                    "uncertaintyDegrees": {
      +                      "maximum": 3,
      +                      "minimum": 0,
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [
      +                    "movingBody",
      +                    "natalBody",
      +                    "aspect",
      +                    "orbDegrees",
      +                    "uncertaintyDegrees",
      +                    "relativeWeight"
      +                  ],
      +                  "type": "object"
      +                },
      +                "contactKey": {
      +                  "maxLength": 80,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "end": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "endClipped": {
      +                  "type": "boolean"
      +                },
      +                "id": {
      +                  "maxLength": 160,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "peak": {
      +                  "type": "null"
      +                },
      +                "peakIsUnique": {
      +                  "const": false,
      +                  "type": "boolean"
      +                },
      +                "peakRelativeScore": {
      +                  "maximum": 3,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "rank": {
      +                  "maximum": 5,
      +                  "minimum": 1,
      +                  "type": "integer"
      +                },
      +                "relativeLabel": {
      +                  "maxLength": 100,
      +                  "minLength": 1,
      +                  "type": "string"
      +                },
      +                "relativeRatio": {
      +                  "maximum": 1,
      +                  "minimum": 0,
      +                  "type": "number"
      +                },
      +                "start": {
      +                  "format": "date",
      +                  "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
      +                  "type": "string"
      +                },
      +                "startClipped": {
      +                  "type": "boolean"
      +                },
      +                "title": {
      +                  "maxLength": 200,
      +                  "minLength": 1,
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "id",
      +                "rank",
      +                "start",
      +                "end",
      +                "contactKey",
      +                "contact",
      +                "title",
      +                "peakRelativeScore",
      +                "relativeLabel",
      +                "relativeRatio",
      +                "startClipped",
      +                "endClipped",
      +                "peakIsUnique",
      +                "peak"
      +              ],
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        "maxItems": 5,
      +        "type": "array"
      +      },
      +      "year": {
      +        "pattern": "^(19|20)\\d{2}$",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "year",
      +      "coverage",
      +      "calendarAvailableTo",
      +      "timezone",
      +      "timezoneDataVersion",
      +      "providerVersion",
      +      "algorithmVersion",
      +      "selectionVersion",
      +      "calculatedAt",
      +      "windows",
      +      "totalDistinctWindows",
      +      "uncertainty",
      +      "method",
      +      "interpretationNote",
      +      "upcoming",
      +      "persistence"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. First observed

TDQS

A4.1/5.0
Behavior5/5

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

The description goes well beyond the readOnly/idempotent annotations by disclosing permission prerequisites (full_timing), the timezone requirement for temporary charts, the exact composition of the reading field (ranks 1–15, eclipse contacts, up to five remaining spans, deduplicated), and interpretive caveats that ranks are not probabilities. It also sets expectations that empty matches do not prove no contact, which prevents an agent from over-reading results.

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

Conciseness4/5

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

Front-loaded with the core purpose and access conditions, and every sentence carries information about coverage limits or result semantics. It is dense and slightly cramped, packing caveats into short clauses, but there is no filler.

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

Completeness4/5

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

With an output schema present, the description needn't explain return shapes, yet it explains the reading field's composition anyway and covers prerequisites and coverage limits. The remaining gap is error behavior when a year falls outside engine coverage, which is only vaguely hinted at in the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so each of the four parameters is already documented, including the focus enum meanings and the chartContext selection rule; the description largely restates that the focus filters are conjunctive and that annual candidates exclude most fast-planet transits. Useful confirmation but little value added beyond the schema.

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

Purpose4/5

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

States a specific verb and resource — 'Returns annual personal astrology periods' — with an explicit scope of temporary chartContext versus the authorized saved self chart, and it names the annual window, distinguishing it in substance from the monthly sibling. It stops short of naming get_timing_month as the alternative for finer granularity, so the differentiation is implied rather than explicit.

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

Usage Guidelines4/5

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

Gives clear conditional guidance on the two access paths: saved charts require full_timing, temporary charts require a confirmed viewing timezone. It does not state when an agent should prefer this tool over get_timing_month or calculate_chart, so there are no explicit exclusions.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources