Western Astrology MCP Server by RoxyAPI
Server Details
Western natal charts, horoscopes, transits and synastry for AI agents, verified vs NASA JPL.
- Status
- Healthy
- Uptime
- 99.9% over 63 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 39 tools
The set covers many distinct astrological calculations, but several tools overlap in purpose—most notably post_astrology_synastry and post_astrology_compatibility_score both compute relationship compatibility from two charts, and post_astrology_transits and post_astrology_transit_aspects both handle transit-to-natal analysis. Descriptions are detailed enough to mitigate most confusion, but the sheer number of similar-sounding endpoints leaves room for misselection.
All tools use a consistent snake_case pattern with get_astrology_* for retrieval and post_astrology_* for calculations, and no mixed conventions appear. The only minor quirks are suffixes like _id and _year_month, but they remain readable and predictable.
39 tools is well above the rubric's threshold for a heavy tool set, and many could be consolidated by adding parameters (e.g., daily/weekly/monthly/yearly horoscopes, planets vs planets_monthly, transits vs transits_monthly). While each tool may be distinct, the surface is unwieldy for an agent to navigate efficiently.
The server covers an exceptionally broad range of Western astrology techniques—natal charts, houses, transits, returns, progressions, synastry, horoscopes, fixed stars, asteroids, and more. No obvious core lifecycle operation is missing for the domain, so the surface is essentially complete.
Available Tools
39 toolsget_astrology_horoscope_sign_dailyDaily horoscope by zodiac sign - Transit-based editorial columnsARead-onlyInspect
A publish-ready column for any zodiac sign, built from the dated transits over it and returned with those events for fact-checking. The reading names the aspects, sign ingresses, lunations and retrograde stations driving it and reads each into the whole-sign houses of that sign, so every sign gets different content rather than one blurb reused twelve times. Alongside the column come overview, love, career, health, finance and advice, the active transits, Moon sign and phase, an energy rating, lucky number and color, and compatible signs. No language model is involved, so a given sign and date always returns the same text and a piece scheduled months ahead is the piece that runs. Content rolls over at midnight, by default UTC. Pass date for editorial scheduling, or timezone to roll over on a local clock. Composed in 8 languages (en, de, es, fr, hi, pt, ru, tr); any other lang code returns English. Daily horoscope API, zodiac forecast, sun sign horoscope, astrology prediction.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Forecast date in YYYY-MM-DD format. Past and future dates are both supported, for editorial scheduling and backfill. Defaults to the current period in the timezone parameter. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| sign | Yes | Zodiac sign, case-insensitive (e.g., aries, Aries, ARIES all work). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | No | Selects which period counts as current when date is omitted. Defaults to UTC, so the forecast rolls over at 00:00 UTC on each day. Pass the timezone of the end user to roll over on their local clock instead. Ignored when date is set. Accepts an IANA name (e.g. "America/New_York"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| love | Yes | |
| sign | Yes | |
| advice | Yes | |
| career | Yes | |
| column | Yes | |
| events | Yes | |
| health | Yes | |
| finance | Yes | |
| moonSign | Yes | |
| overview | Yes | |
| moonPhase | Yes | |
| luckyColor | Yes | |
| luckyNumber | Yes | |
| energyRating | Yes | |
| activeTransits | Yes | |
| compatibleSigns | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with readOnlyHint=true and destructiveHint=false already in the annotations, the description adds substantial behavioral guarantees: no language model is involved, the same sign and date always return the same text, scheduled content is stable, rollover defaults to UTC, and unsupported language codes fall back to English. This goes well beyond the safety profile the annotations already provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well front-loaded with the core purpose and behavioral guarantees, and most sentences carry operational weight. The trailing keyword string 'Daily horoscope API, zodiac forecast, sun sign horoscope, astrology prediction.' is non-operational filler, and the language list partially duplicates schema data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema present, the description does not need to enumerate return values, and it covers everything an agent needs to call the tool correctly: date handling, timezone behavior, language fallback, determinism, and the fact that transit events are included for fact-checking. The only minor caveat is the 8-vs-10 language mismatch, which is a parameter-level nuance rather than a completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline of 3 applies and the description does not need to compensate. It adds useful framing for `date` and `timezone` ('editorial scheduling' / 'local clock'), but the language claim ('Composed in 8 languages... any other lang code returns English') slightly conflicts with the schema's 10-language enum and per-field fallback wording, so it doesn't add clean value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific deliverable: a publish-ready daily horoscope column generated from dated transits for any zodiac sign, returned with its underlying events for fact-checking. It also makes the tool's distinctiveness clear — 'every sign gets different content rather than one blurb reused twelve times' and the rollover-at-midnight detail reinforce the daily scope that separates it from weekly/monthly/yearly siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational context: pass a date for editorial scheduling, pass a timezone to roll over on a local clock, and expect English fallback for unsupported languages. It does not explicitly route to the weekly/monthly/yearly siblings, so the when-to-use guidance is strong but not fully explicit about alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_horoscope_sign_monthlyMonthly horoscope by zodiac sign - Editorial column with key datesARead-onlyInspect
A month-long column for any zodiac sign, plus a week-by-week breakdown and dated key dates a calendar page renders directly. The column names the major aspects, slow-planet sign changes, lunations and stations of the month, and reads each into the whole-sign houses of that sign, and those events come back beside the prose with their exact instants, so a piece can be checked against NASA JPL Horizons or the US Naval Observatory before it runs. Key dates are the real New Moon, Full Moon and retrograde instants, never approximations. Alongside the column come overview, love, career, health, finance and advice. Pass any date inside a month to retrieve that month, or timezone to roll over on a local clock. Composed in 8 languages (en, de, es, fr, hi, pt, ru, tr); any other lang code returns English. Monthly horoscope API, zodiac monthly forecast, astrology monthly prediction.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Any date inside the target month, in YYYY-MM-DD format. The forecast covers the whole calendar month containing it. Defaults to the current period in the timezone parameter. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| sign | Yes | Zodiac sign, case-insensitive (e.g., aries, Aries, ARIES all work). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | No | Selects which period counts as current when date is omitted. Defaults to UTC, so the forecast rolls over at 00:00 UTC on the 1st. Pass the timezone of the end user to roll over on their local clock instead. Ignored when date is set. Accepts an IANA name (e.g. "America/New_York"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| love | Yes | |
| sign | Yes | |
| month | Yes | |
| advice | Yes | |
| career | Yes | |
| column | Yes | |
| events | Yes | |
| health | Yes | |
| finance | Yes | |
| keyDates | Yes | |
| overview | Yes | |
| luckyColor | Yes | |
| weekByWeek | Yes | |
| luckyNumbers | Yes | |
| compatibleSigns | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive, and the description goes well beyond that by disclosing exact event instants, verifiability against NASA/USNO, language fallback to English, timezone-relative rollover, and the section structure. This is rich behavioral context with no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening is front-loaded with the core scope, but the description is padded with redundant quality claims and ends in keyword-stuffed phrases like 'Monthly horoscope API, zodiac monthly forecast, astrology monthly prediction.' It is structured enough to be usable, but not every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema and 100% schema coverage, the description does not need to explain return shapes. It covers content sections, key dates, language fallback, date/timezone semantics, and the read-only nature, so an agent has everything needed to select and call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds little beyond what the schema already states for date/timezone behavior. The claim of '8 languages' is inconsistent with the schema's 10-language enum, so I do not give it credit for improving parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource: a month-long column for any zodiac sign with weekly breakdown and dated key dates. 'Month-long' explicitly differentiates it from the daily/weekly/yearly sibling tools, and the mention of key dates adds a distinguishing attribute.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear invocation context: any date inside a month retrieves that month, and timezone controls rollover when date is omitted. It does not explicitly name sibling alternatives or exclusion conditions, but the month-scoped content makes the appropriate use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_horoscope_sign_weeklyWeekly horoscope by zodiac sign - Seven-day editorial columnARead-onlyInspect
A Monday to Sunday column for any zodiac sign, naming the transits that perfect during the week and the days they fall on. Each event is read into the whole-sign houses of that sign, so content is unique per sign, and the dated events come back beside the prose so an editor can check a piece before it runs. Alongside the column come overview, love, career, health, finance and advice, plus lucky days, lucky numbers and compatible signs. No language model is involved, so the same sign and week always returns the same text. Pass any date inside a week to retrieve that week, or timezone to roll over on a local clock. Composed in 8 languages (en, de, es, fr, hi, pt, ru, tr); any other lang code returns English. Weekly horoscope API, zodiac weekly forecast, astrology weekly prediction.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Any date inside the target week, in YYYY-MM-DD format. The forecast covers the Monday to Sunday week containing it. Defaults to the current period in the timezone parameter. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| sign | Yes | Zodiac sign, case-insensitive (e.g., aries, Aries, ARIES all work). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | No | Selects which period counts as current when date is omitted. Defaults to UTC, so the forecast rolls over at 00:00 UTC on each Monday. Pass the timezone of the end user to roll over on their local clock instead. Ignored when date is set. Accepts an IANA name (e.g. "America/New_York"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| love | Yes | |
| sign | Yes | |
| week | Yes | |
| advice | Yes | |
| career | Yes | |
| column | Yes | |
| events | Yes | |
| health | Yes | |
| finance | Yes | |
| overview | Yes | |
| luckyDays | Yes | |
| luckyNumbers | Yes | |
| compatibleSigns | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses behaviors not available in the annotations: deterministic output ('No language model is involved, so the same sign and week always returns the same text'), language fallback ('any other lang code returns English'), timezone-sensitive week rollover, and uniqueness of content per sign. This adds substantial context beyond the readOnlyHint/destructiveHint annotations. No contradiction exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is organized and front-loads the core purpose, but it is longer than necessary and ends with a keyword-stuffed sentence ('Weekly horoscope API, zodiac weekly forecast, astrology weekly prediction') that adds no agent value. Several behavioral details are repeated in the schema, so not every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description correctly avoids restating return formats. It covers what the column contains (overview, love, career, health, finance, advice, lucky days, numbers, compatible signs), determinism, date/timezone behavior, and language fallback. The only minor gap is not explicitly distinguishing when to prefer this over the daily/monthly siblings, though the Monday-to-Sunday framing makes it inferable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description reinforces parameter semantics (e.g., 'Pass any date inside a week to retrieve that week' for date, 'timezone to roll over on a local clock' for timezone, and language fallback), but it doesn't introduce meaning beyond what the schema already documents. This is adequate but not additive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the resource: a Monday-to-Sunday horoscope column for any zodiac sign, naming transits and the days they fall on. The 'Monday to Sunday' framing sharply distinguishes it from daily and monthly sibling tools. The verb 'retrieve' appears in the date-handling sentence, making the action explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear operational context: pass any date inside a week to select that week, omit date to use the current period, and pass a timezone to control the local rollover. It doesn't explicitly say 'use this instead of the daily/monthly tools,' but the weekly scope and content list make the intended use obvious. No exclusions or alternative routing are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_horoscope_sign_yearlyYearly horoscope by zodiac sign - Year ahead forecast with themes, key periods, eclipses and retrogradesARead-onlyInspect
Get the year ahead for any zodiac sign, as a long-form column plus the structured arrays a year-ahead page is built from: the slow-body themes that set the backdrop, a dated key period for each of the twelve houses, the best month for love, career, health and finance, and every eclipse and every retrograde and direct station with the house it falls in for this sign. Love, career, health, finance and advice cover the whole year, and the dated events behind the copy come back beside it so an editor can check the piece before it runs. Omit the year for the one in progress, or pass any year from 1900 to 2100 to build an archive or a forecast ahead of time. Yearly horoscope API, year ahead astrology, annual zodiac forecast, eclipse and retrograde calendar.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| sign | Yes | Zodiac sign, case-insensitive (e.g., aries, Aries, ARIES all work). | |
| year | No | Calendar year to forecast, 1900 to 2100. Defaults to the current year in the timezone parameter. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | No | Selects which year counts as current when year is omitted. Defaults to UTC, so the forecast rolls over at 00:00 UTC on January 1. Pass the timezone of the end user to roll over on their local clock instead. Ignored when year is set. Accepts an IANA name (e.g. "America/New_York"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| love | Yes | |
| sign | Yes | |
| year | Yes | |
| advice | Yes | |
| career | Yes | |
| column | Yes | |
| events | Yes | |
| health | Yes | |
| themes | Yes | |
| finance | Yes | |
| eclipses | Yes | |
| overview | Yes | |
| keyPeriods | Yes | |
| luckyColor | Yes | |
| bestPeriods | Yes | |
| retrogrades | Yes | |
| luckyNumbers | Yes | |
| compatibleSigns | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only and non-destructive. The description adds substantial behavioral detail beyond that: it returns editorial copy plus structured dated events, includes every eclipse and retrograde station by house, and explains compact-mode and timezone-related behavior. There is no contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first three sentences are dense but informative, covering output structure, verification use case, and year/timezone usage. However, the trailing keyword phrase ('Yearly horoscope API, year ahead astrology...') is filler that adds no agent value, and the first sentence packs a very long list that could be more readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter GET with an output schema and read-only annotations, the description covers the returned content, current vs. historical year selection, timezone behavior, compact token savings, and editor verification. Nothing essential for selecting or invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters have full schema descriptions with enums, defaults, examples, and range constraints, so the baseline is 3. The description reinforces the year semantics ('Omit the year for the one in progress') and compact output, but it does not materially add meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Get the year ahead') and a clear resource (yearly horoscope by zodiac sign), then enumerates the concrete contents: themes, 12-house key periods, best months, eclipses, and retrogrades. This distinguishes it strongly from the daily, weekly, and monthly sibling tools by its yearly scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: omit the year for the current one, pass 1900–2100 for archives or early forecasts, and rely on the timezone parameter to define the current year. It does not explicitly name daily/weekly/monthly as alternatives or state when not to use this tool, but the year-ahead framing makes the intended use fairly unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_moon_phase_calendar_year_monthGet lunar calendar - Moon phases for entire monthARead-onlyInspect
Get complete lunar calendar showing moon phase and illumination for every day of a specific month. Perfect for creating moon phase calendars, lunar planners, and astrology event schedules.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | Yes | Calendar year, 1551 to 2649. | |
| month | Yes | Calendar month (1-12). 1 = January, 12 = December. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| month | Yes | |
| calendar | Yes | |
| monthName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered structurally. The description adds that the result is 'complete' month coverage with illumination values, which is mild scoping context, but says nothing about rate limits, coverage gaps, or return shape. Adequate given annotations, not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both front-loaded with the core capability first and the use cases second. The second sentence leans promotional but does carry some routing value; no wasted preamble.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile, the description need not explain return values. Year/month scope, illumination inclusion and a language-capable schema cover what an agent needs; only the when-vs-sibling guidance is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% – year range, month 1-12, lang enum and compact mode are all documented in the schema itself. The description adds no parameter-level detail beyond what the schema already carries, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('complete lunar calendar showing moon phase and illumination') and pins the scope to 'every day of a specific month'. That scope clause is what separates it from the sibling single-point tools get_astrology_moon_phase_current and get_astrology_moon_phase_upcoming without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives use cases ('moon phase calendars, lunar planners, astrology event schedules'), which implies when the tool is appropriate, but it never states when to prefer it over get_astrology_moon_phase_current/upcoming or names any alternative. Usage is implied rather than prescribed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_moon_phase_currentGet current moon phase - Lunar phase calculator with zodiac signARead-onlyInspect
Get current moon phase with illumination percentage, lunar age (days since new moon), zodiac sign, and distance from Earth. Returns phase name (New Moon, Waxing Crescent Moon, First Quarter Moon, Waxing Gibbous Moon, Full Moon, Waning Gibbous Moon, Last Quarter Moon, Waning Crescent Moon) plus exact lunar position. Perfect for moon tracking apps, lunar calendars, astrology widgets, and gardening by moon phase tools.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date in YYYY-MM-DD format. Defaults to today if omitted. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | No | Time in 24-hour HH:MM:SS format. Defaults to 12:00:00 (noon). Moon moves ~13 degrees per day so time affects phase precision. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | No | IANA name (e.g. "America/New_York", "Europe/London"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00"). IANA resolved to the DST-correct offset for the given date. Defaults to 0 (UTC). |
Output Schema
| Name | Required | Description |
|---|---|---|
| age | Yes | |
| date | Yes | |
| sign | Yes | |
| phase | Yes | |
| degree | Yes | |
| meaning | No | |
| distance | Yes | |
| illumination | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The read-only and non-destructive nature is already encoded in annotations, so the description only needs to add context, and it does: it enumerates the returned data and phase-name vocabulary. It also surfaces the behavioral nuance that time matters because the Moon moves ~13 degrees per day, affecting phase precision. This aligns with annotations rather than contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
At three sentences, the description is appropriately sized and opens with the core function before adding use-case context. The phase-name enumeration is somewhat verbose if the output schema already defines those values, but it remains useful for an agent to anticipate response values. There is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero required parameters, 100% schema coverage, read-only annotations, and an output schema, the description does not need to explain return structure or safety. The description adds the user-facing intent and enough behavioral context (time sensitivity, returned values) for an agent to call it correctly. The main omission, sibling differentiation, is a usage-guideline issue rather than a callability gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every parameter has a full schema description with formats, defaults, enums, and examples, so schema coverage is 100%. The tool description mostly describes outputs rather than parameters; the one parameter-level insight (time affects precision) is already present in the time parameter's schema. Little additional parameter meaning is contributed by the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states a clear verb and resource ('Get current moon phase') and lists exact return fields, including phase name, illumination, lunar age, zodiac sign, and distance. It is unambiguous about what the tool computes. It does not contrast itself with sibling moon-phase tools such as get_astrology_moon_phase_calendar_year_month or get_astrology_moon_phase_upcoming, so differentiation is left to the name/title.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final sentence names real consumer contexts ('moon tracking apps, lunar calendars, astrology widgets, gardening by moon phase tools'), which hints at applicable use cases. It does not say when to prefer this tool over the calendar/upcoming moon-phase siblings or provide any exclusions. Selection guidance is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_moon_phase_upcomingGet upcoming moon phases - Next new moon, full moon, quartersARead-onlyInspect
Get upcoming moon phase transitions (New Moon, First Quarter Moon, Full Moon, Third Quarter Moon) for the next weeks/months. Returns dates and phase names for each lunar quarter. Perfect for lunar event calendars, moon phase widgets, and astrology planning tools.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| count | No | Number of upcoming moon phase transitions to return (1-20). Defaults to 8. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| startDate | No | Start date in YYYY-MM-DD format. Defaults to today if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| phases | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that results are phase names plus dates over a span of weeks/months, but says nothing about ordering, timezone/UTC handling of dates, or how the span relates to count — useful gaps remain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what is returned and its scope, followed by use cases. Nothing is redundant or padded; only the marketing-flavored 'Perfect for' sentence is marginal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-format detail is not required, and all four optional parameters are well documented with defaults. Combined with read-only annotations, an agent has enough to call it correctly; only the date/timezone semantics of the returned transitions are unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so lang, count, compact, and startDate are all fully documented in the schema itself, including ranges, defaults, and the compact columnar format. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (upcoming moon phase transitions), enumerating the four phase types and the scope ('next weeks/months'). It reads clearly against siblings like get_astrology_moon_phase_current and get_astrology_moon_phase_calendar_year_month, but it never names those alternatives to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers use-case framing ('lunar event calendars, moon phase widgets, astrology planning tools'), which implies usage. It does not say when to prefer this over the current-phase or month-calendar siblings, nor state any exclusions, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_planet_meaningsGet all planet meanings - Complete astrology planet interpretations listARead-onlyInspect
Returns all 14 astrological bodies (the 10 classical planets Sun through Pluto, the lunar nodes, Chiron, and Black Moon Lilith) with essential meanings: name, symbol, tagline, category (personal/social/generational), ruling sign, and short descriptions. Perfect for astrology reference apps, planet meaning widgets, birth chart interpretation tools, astrology learning platforms, planetary keywords reference, and zodiac planet guides. Use GET /planet-meanings/{id} for complete profiles with detailed interpretations, keywords, temperature, and dignities (rulership/detriment/exaltation/fall).
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, non-destructive operation, and the description does not contradiction them. It adds behavioral scope: the tool deliberately returns the full set of 14 bodies and defines exactly what 'meaning' contains (symbol, tagine, category, ruling sign), so an agent can predict response shape and cardinality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is dense and front-loads the main value. However, the sentence 'Perfect for astrology reference apps, planet meaning widgets, ...' is a largely redundant use-case list that does not help an agent call the tool more precisely. One useful sentence plus a partial-purpose sentence; compact but with minor filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter, read-only list operation, the description and schema together cover invocation, output scope, language switches, compact mode, and where to go for deeper data. No output schema is needed because the description already marks the fields expected. Nothing important is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with both parameters thoroughly explained in the schema: lang includes a full list of codes, a default, and a translation-fallback behavior, and compact describes the columnar output shape. The description contributes no parameter-level information, but the schema handles that responsibility, which supports the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb ('Returns') and a specific resource ('all 14 astrological bodies') and enumerates its exact contents (Sun through Pluto, lunar nodes, Chiron, Black Moon Lilith) plus the fields returned. It is clearly distinct from the sibling that fetches a single planet profile, so purpose ambiguity is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the use cases for the list tool and explicitly names the alternative endpoint for more detailed data: 'Use GET /planet-meanings/{id} for complete profiles with detailed interpretations, keywords, temperature, and dignities'. This gives an agent a clear selection rule between the list and the detail endpoint.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_planet_meanings_idGet planet meaning details - Complete astrology planet interpretationARead-onlyInspect
Retrieve comprehensive planet interpretation for any astrological planet using lowercase ID (e.g., "sun", "moon") or case-insensitive name (e.g., "Sun", "MOON"). Returns complete astrology meaning including: symbol, tagline, category (personal/social/generational), temperature, orbital period, retrograde status, dignities (rulership/detriment/exaltation/fall), positive and negative keywords, and short/long descriptions. Perfect for birth chart readings, planet meaning lookups, astrology education, natal chart interpretation, transit meanings, planetary symbolism reference, and keyword-based interpretations.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Planet ID (lowercase, e.g., sun, moon, mercury) or display name (case-insensitive, e.g., Sun, MOON). Spaces, hyphens and underscores are interchangeable, so the two lunar nodes answer to north-node and south-node as well as to their ids north node and south node, and Black Moon Lilith answers to black-moon-lilith as well as to lilith. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| fall | No | |
| name | Yes | |
| orbit | Yes | |
| symbol | Yes | |
| tagline | Yes | |
| category | No | |
| keywords | Yes | |
| detriment | No | |
| rulership | No | |
| exaltation | No | |
| exultation | No | |
| retrograde | No | |
| description | Yes | |
| temperature | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about the returned content fields and identifier flexibility, but it does not disclose additional behavioral traits such as error behavior, rate limits, or data source caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the action and the required id semantics, then enumerates the response fields and use cases. It is somewhat dense but every sentence contributes useful information, with no significant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the annotations, full schema documentation, and presence of an output schema, the description provides all necessary orientation: what the tool does, what inputs are expected, what data is returned, and common use cases. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for id, lang, and compact already present. The description mostly restates the id flexibility (lowercase vs case-insensitive names) and does not add substantial meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Retrieve comprehensive planet interpretation') and a specific resource ('any astrological planet'), and it explains the required identifier style. It is easy to distinguish from the sibling list tool because it describes a per-planet ID lookup by name and ID.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases such as birth chart readings, natal chart interpretation, transit meanings, and planet meaning lookups, which clearly indicate when this tool is appropriate. It does not explicitly name an alternative or exclusion case, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_signsGet all zodiac signs - Complete zodiac signs list with dates and elementsARead-onlyInspect
Returns all 12 tropical zodiac signs (Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces) with essential information: name, symbol, element (fire, earth, air, water), date ranges, and short descriptions. Perfect for zodiac sign lists, horoscope widgets, birth chart calculators, astrology apps, star sign selectors, and zodiac reference tools. Use GET /signs/{id} for complete zodiac sign profiles with personality traits, compatibility, and detailed characteristics.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, covering side-effect safety. The description adds useful context about scope ('tropical zodiac signs') and what data is included, but it does not disclose other behavioral traits like possible language fallback behavior or latency concerns. Given the safety profile is covered, this is adequate but not beyond what annotations already imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action ('Returns all 12 tropical zodiac signs'), follows with concise parameter-relevant info and use cases, and ends with the sibling alternative. The full list of suns is verbose but useful for agent recognition, and every sentence earns its place. No fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description does a good job stating it returns the requested fields. It covers scope, signing list complete. The `lang` and `compact` behavior are only captured in the schema, but the description doesn't need to repeat schema-covered biases. It also clearly points to the detail endpoint for complete profiles. Missing only minor financial usage constraints, but those are well covered by annotations and schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%: both `lang` and `compact` have thorough descriptions in the schema, so the tool description adds no new parameter insight. It does not mention that `lang` or `compact` exist, but the schema fully covers their semantics, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states an exact action and resource: 'Returns all 12 tropical zodiac signs' and lists every one of them. It names the exact fields returned (name, symbol, element, date ranges, short descriptions), and explicitly distinguishes it from the sibling 'GET /signs/{id}' endpoint for detailed profiles. This leaves no ambiguity about the tool's role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a range of concrete use cases ('zodiac sign lists, horoscope widgets, birth chart calculators, astrology app...') and explicitly says to use GET /signs/{id} when full profiles with personality traits are needed. This is a clear when to use/alternatives guidance, leaving no doubt about when this listing is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_astrology_signs_idGet zodiac sign details - Complete astrology sign profile with personality traitsARead-onlyInspect
Retrieve comprehensive zodiac sign information for any astrological sign using lowercase ID (e.g., "aries") or case-insensitive name (e.g., "Aries", "ARIES"). Returns complete astrology profile including: element (fire, earth, air, water), modality (cardinal, fixed, mutable), ruling planet, birth date ranges, personality traits (positive, negative, keywords), zodiac sign descriptions, famous people with this sign, key strengths and qualities, sign motto, greatest gifts, challenges, and secret weapon. Perfect for horoscope readings, zodiac compatibility checks, birth chart interpretations, astrology blogs, star sign personality analysis, and zodiac meaning databases.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Sign ID (lowercase, e.g., aries, taurus) or display name (case-insensitive, e.g., Aries, TAURUS). | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| dates | Yes | |
| gifts | No | |
| motto | No | |
| famous | No | |
| symbol | No | |
| weapon | No | |
| element | Yes | |
| keywords | Yes | |
| modality | Yes | |
| strengths | No | |
| challenges | No | |
| symbolName | Yes | |
| description | Yes | |
| rulingPlanet | Yes | |
| compatibleSigns | Yes | |
| elementLocalized | No | |
| modalityLocalized | No | |
| rulingPlanetLocalized | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context: input flexibility (lowercase ID or case-insensitive name) and the comprehensive nature of the response. It does not contradict annotations and provides extra detail about what the call returns without relying solely on the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, long, run-on sentence that packs a massive enumeration of returned fields ('...personality traits (positive, negative, keywords), zodiac sign descriptions, famous people with this sign, key strengths and qualities, sign motto, greatest gifts, challenges, and secret weapon.'). It is not front-loaded with the most critical differentiators and would be easier to scan if split into short sentences or bullets. This length reduces usability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return-value explanation is unnecessary. The description covers input formats, language options via schema, and the breadth of returned data. It does not mention error handling or edge cases (e.g., unknown sign IDs), but for a simple read-by-ID tool with read-only annotations, the description is sufficiently complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — every parameter (id, lang, compact) has a description in the input schema. The tool description essentially repeats the id input behavior (lowercase or case-insensitive) that the schema already documents, adding no new semantic value. It does not elaborate on lang or compact beyond what the schema states. Since schema carries the full burden, a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Retrieve') and a clear resource ('comprehensive zodiac sign information'), then enumerates the exact fields returned (element, modality, ruling planet, personality traits, etc.). It is unambiguous about what the tool does and is not a tautology. However, it does not explicitly contrast with the sibling get_astrology_signs (likely a list-all tool), so it slightly misses sibling differentiation, but the purpose itself is crystal clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists broad use cases ('Perfect for horoscope readings, zodiac compatibility checks...') but gives no guidance on when to choose this tool over alternatives. It does not mention get_astrology_signs (which likely returns all signs) or any condition that would make this tool inappropriate. The implication that it handles a single sign is present but not explicit, and there is no when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_arabic_lotsArabic lots calculator - seven Hermetic parts including Part of Fortune and SpiritARead-onlyInspect
Calculate the seven Hermetic lots (Arabic parts) for any birth moment. The lots are the Part of Fortune, Part of Spirit, Eros, Necessity, Courage, Victory, and Nemesis. Each lot is a sensitive point projected by arc from the Ascendant, with the day or night formula applied automatically from the chart sect. Returns the zodiac sign, degree, exact longitude, the arc used, and a plain language interpretation per lot, for Hellenistic and traditional astrology apps. Built on accurate tropical chart positions, no astronomy expertise needed.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| houseSystem | No | House system used to place the Sun, which determines the chart sect (day when the Sun is above the horizon, night when below) and therefore which lot formula applies. Placidus (default), Whole Sign, Equal, or Koch. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| lots | Yes | |
| sect | Yes | |
| summary | Yes | |
| birthDetails | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context: the lots are arc-projected from the Ascendant, and the day/night formula is selected automatically from chart sect. It also discloses the return contents per lot, though nothing about auth or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action and the lot list, then the mechanism and returns. The closing 'Built on accurate tropical chart positions, no astronomy expertise needed' is mildly promotional, but the rest is dense and waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be detailed, yet the description still summarizes them. Annotations cover safety and all params are schema-documented, leaving only the sibling-routing gap. Adequate for a read-only calculator.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters thoroughly. The description adds only an indirect note tying chart sect to the applied formula, without clarifying individual parameters beyond the schema baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Calculate') and resource ('the seven Hermetic lots (Arabic parts)'), then enumerates all seven lots by name. It is immediately distinguishable from siblings like post_astrology_natal_chart or post_astrology_houses.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives audience context ('for Hellenistic and traditional astrology apps') and scope ('for any birth moment'), which implies when it applies. However, it never names an alternative or states when NOT to use it versus the broader natal chart tool that likely also surfaces lots.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_aspect_patternsDetect aspect patterns - Grand Trine, Kite, T-Square, Grand Cross, Yod, Mystic Rectangle, StelliumARead-onlyInspect
Identify classical Western astrology multi-planet configurations in a birth chart. Returns Grand Trines (with element), Kites (with apex), T-Squares (with apex and modality), Grand Crosses (with modality), Yods (Finger of Fate, with apex), Mystic Rectangles, and Stelliums. Each pattern carries a tightness score (0-100), dissociate flag for out-of-sign configurations, and a one-line interpretation suitable for chart reports. Disambiguation is built in: a Grand Cross suppresses its contained T-Squares, a Kite suppresses its underlying Grand Trine. Useful for personalized natal report engines, astrology chatbots, AI agents that interpret chart geometry, and editorial chart-pattern callouts.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| include | No | Comma-separated list of optional bodies to include beyond the classical 10 planets. Valid tokens (case-insensitive): chiron, northNode (also accepts north_node, north-node, northnode). Empty by default. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| strictOrbs | No | Use tighter orbs, so only closely formed patterns are reported. Truthy values (true, 1, yes, on; case-insensitive) narrow trine to 5 degrees, square to 5, sextile to 4, quincunx to 2. Defaults to false, the standard pattern-detection orbs. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| options | Yes | |
| patterns | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover safety (readOnly, non-destructive); the description adds genuinely useful behavioral detail beyond that: what each pattern object carries (tightness score 0-100, dissociate flag, one-line interpretation) and the built-in suppression rule where a Grand Cross suppresses contained T-Squares and a Kite suppresses its underlying Grand Trine. It doesn't discuss orbs/tolerance behavior or failure modes, but the disclosure is well above the annotation baseline.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by return contents and the suppression rule, all of which earn their place. The trailing audience list ('useful for ... and editorial chart-pattern callouts') is the one soft sentence, but the rest is dense and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not explain return values, yet it usefully summarizes them; 5 required and 10 total parameters are fully documented in the schema, and the pattern vocabulary is complete. The only real gap is sibling-level routing guidance, which the description leaves implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameters (including strictOrbs orb-narrowing behavior, include tokens, nodeType, compact) are already fully documented in the schema. The description mentions no parameter at all, adding no semantic value beyond what structured fields provide; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (identify/detect) and resource (classical Western multi-planet configurations in a birth chart), then enumerates the exact pattern types returned (Grand Trine, Kite, T-Square, Grand Cross, Yod, Mystic Rectangle, Stellium). This clearly separates it from the pairwise-modifier sibling post_astrology_aspects without the agent needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence lists audiences ('personalized natal report engines, astrology chatbots, AI agents that interpret chart geometry'), which implies usage context but is audience-oriented rather than decision-oriented. It never states when to prefer this over post_astrology_aspects, post_astrology_natal_chart, or post_astrology_transit_aspects, nor any prerequisites. Usage is inferable from the pattern list but not explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_aspectsCalculate planetary aspects - Aspect finder for any date and timeARead-onlyInspect
Calculate all major and minor aspects between planets for any date and time. Finds conjunctions (0°), oppositions (180°), trines (120°), squares (90°), sextiles (60°), and minor aspects. Returns aspect type, exact angle, orb, applying/separating status, and strength (0-100). Filter by specific planets or aspect types. Perfect for aspect tables, transit analysis, and aspect pattern detection. Uses standard Western astrology orbs.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Date in YYYY-MM-DD format | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Time in HH:MM:SS format (24-hour) | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| planets | No | Optional: specific bodies to calculate aspects for (defaults to all 14: the 10 classical planets, the lunar nodes, Chiron, and Black Moon Lilith) | |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| aspectTypes | No | Optional: specific aspect types to find (defaults to all 9) |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| time | Yes | |
| aspects | Yes | |
| summary | Yes | |
| patterns | No | |
| timezone | Yes | |
| aspectsFound | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only safety profile, so the bar is lower; the description still adds real behavioral context: standard Western astrology orbs, returned fields (aspect type, exact angle, orb, applying/separating, strength 0-100), and default coverage of all planets/aspect types.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then return fields, then filtering, then use cases. Dense but every sentence carries information; the final 'Perfect for...' sentence is the weakest and partly redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations, a fully documented schema, and an output schema present, the description needn't explain return values in depth. It still adds orb conventions and default scoping, leaving little an agent needs beyond the structured fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including defaults (all 14 bodies, all 9 aspects). The description's 'filter by specific planets or aspect types' adds no syntax or format detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: calculates major and minor aspects between planets for a date/time, and enumerates the aspect types returned. It is clearly a natal-moment aspect calculator, though it never names the closely related siblings (post_astrology_transit_aspects, post_astrology_aspect_patterns) to draw the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied via 'Perfect for aspect tables, transit analysis, and aspect pattern detection,' which actually points toward sibling tools rather than distinguishing this one. No explicit when-to-use/when-not or alternative routing is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_aspects_monthlyMonthly Aspects - Tropical aspect calendar for an entire monthARead-onlyInspect
Get every planetary aspect that perfects during a given month, across the 13 non-lunar Western bodies: the Sun and Mercury through Pluto, both lunar nodes, Chiron and Black Moon Lilith. Detects nine aspects, five major (conjunction, sextile, square, trine, opposition) and four minor (semi-sextile, semi-square, sesquiquadrate, quincunx), each with its own traditional orb, and returns the exact date and time of closest approach in your timezone along with the nature of the aspect. Calculated on tropical longitudes. The Moon is excluded because it forms hundreds of aspects a month and belongs in a daily view rather than a monthly one. Omit year and month to get the month in progress, so a published calendar stays current without a redeploy. Essential for monthly forecast copy, transit calendars, electional timing, and newsletter automation. Monthly aspect calendar API, exact aspect times, planetary aspect ephemeris, transit timing. Verified against NASA JPL Horizons.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | No | Year for the aspect calendar (1551 to 2649). Defaults to the current year (UTC). | |
| month | No | Month number (1-12). Defaults to the current month (UTC). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | No | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Event dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC). |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| month | Yes | |
| events | Yes | |
| timezone | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds real behavioral context beyond that: calculation on tropical longitudes, per-aspect traditional orbs, closest-approach timestamps converted to the caller's timezone, and the rationale for excluding the Moon. It stops short of disclosing response size, rate limits, or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and well organized, but the closing lines ('Monthly aspect calendar API, exact aspect times, planetary aspect ephemeris, transit timing. Verified against NASA JPL Horizons.') are SEO keyword padding that adds no invocation value. Some redundancy exists between the title and the opening clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers scope, exclusions, defaults, calculation basis, and timezone handling adequately for a 6-parameter, zero-required tool. Minor gaps remain around response volume for a full month and the compact/nodeType knobs, but nothing critical for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds meaning: omitting year and month yields the month in progress (useful for a published calendar), and it clarifies that event times are rendered in the supplied timezone. It says nothing about lang, compact, or nodeType, which remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get), resource (planetary aspects), and precise scope (every aspect perfecting in a given month across 13 non-lunar Western bodies). It enumerates the nine aspect types and explicitly carves out the Moon, so an agent can tell it apart from daily/transit aspect siblings without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when it applies (monthly forecast copy, transit calendars, electional timing, newsletter automation) and states the no-argument default behavior. It contrasts scope against a 'daily view' but never names the alternative sibling tool (e.g. post_astrology_aspects or post_astrology_transit_aspects), leaving the routing decision partly to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_asteroidsAsteroid goddesses calculator - Ceres, Pallas, Juno, and Vesta natal positionsARead-onlyInspect
Calculate the natal positions of the four classical asteroid goddesses, Ceres, Pallas, Juno, and Vesta, for any birth moment. Each asteroid returns its tropical zodiac sign, degree, house placement, daily speed, retrograde status, and a plain language interpretation of its meaning in the chart. Chiron is available through the natal chart endpoint, so this endpoint stays focused on the four asteroid goddesses for natal reports and relationship astrology.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| houseSystem | No | House system used to assign each asteroid to a natal house. Placidus (default), Whole Sign, Equal, or Koch. Above the polar circle, quadrant systems fall back to Whole Sign and the echoed houseSystem reports the system actually used. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| summary | Yes | |
| asteroids | Yes | |
| houseSystem | Yes | |
| birthDetails | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that: it enumerates what each asteroid returns (sign, degree, house, daily speed, retrograde status, interpretation) and clarifies the deliberate scope exclusion of Chiron. It does not discuss rate limits or computation cost, but the added scope and output detail is substantive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose and scope, followed by output detail and the Chiron routing note. Every sentence carries information; the middle sentence is slightly list-heavy but earns its place by preempting questions about what comes back.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and 100% parameter coverage, the description need not explain return shapes or field syntax, and it correctly focuses on scope and routing. It is complete for selection purposes; only minor gaps remain around polar-latitude fallback behavior and precision limits, which the schema partially covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% across all 9 parameters, with detailed per-field docs for date, time, timezone, houseSystem, nodeType, lang, and compact. The description adds no parameter-level guidance of its own, so the baseline 3 is appropriate — the schema carries the full parameter burden.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Calculate the natal positions of the four classical asteroid goddesses, Ceres, Pallas, Juno, and Vesta'), names the exact bodies covered, and explicitly distinguishes itself from the natal chart endpoint by stating Chiron is handled there. An agent can separate this from post_astrology_natal_chart or post_astrology_lilith without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the use context ('for natal reports and relationship astrology') and routes Chiron work to the natal chart endpoint, giving a clear when-to-use signal and one explicit alternative. It stops short of naming when this tool should NOT be used versus other asteroid-adjacent endpoints (e.g. Lilith, Arabic lots), so it is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_astrocartographyAstrocartography map - planetary lines and relocation calculatorARead-onlyInspect
Generate an astrocartography map of Midheaven, Imum Coeli, Ascendant, and Descendant planetary lines for any birth moment. Each line marks where a planet turns angular across the world, the core of relocation astrology and astro mapping. Returns right ascension, declination, the two meridian line longitudes, and sampled rising and setting curves ready to plot, with a short interpretation per line.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| include | No | Optional comma separated list of extra bodies to plot beyond the ten classical planets. Allowed values: north-node, chiron, lilith. north-node is the mean lunar node. Unknown values are ignored. Defaults to none. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. |
Output Schema
| Name | Required | Description |
|---|---|---|
| lines | Yes | |
| summary | Yes | |
| birthDetails | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a safe read-only operation, so the bar is lower; the description adds useful context by disclosing the computation ('where a planet turns angular across the world') and what is shipped (right ascension, declination, meridian longitudes, sampled rising/setting curves, per-line interpretation). It says nothing about cost, rate limits, or caching, so it is not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the deliverable, then the meaning of the lines, then the return contents. Sizing is appropriate for the complexity, though the middle sentence is mildly decorative ('the core of relocation astrology') rather than actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With annotations covering the safety profile and a full output schema and 100% parameter coverage, the description only needs to establish purpose and output character, which it does. It could still say more about how the map is scoped (global coverage) and how optional flags like include/compact affect the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nine parameters (including enum-rich nodeType, lang, include, compact) are thoroughly documented in the schema itself. The description adds no parameter guidance beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: generate an astrocartography map of MC/IC/Ascendant/Descendant planetary lines for a birth moment, and explains what each line means. It is clearly distinct in output from relocation_chart or local_space, but it never names or contrasts those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys what the artifact is for ('the core of relocation astrology and astro mapping') and that it takes any birth moment, which implies when it is wanted, but it gives no explicit when-to-use, prerequisites, or alternatives versus the relocation and local-space siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_compatibility_scoreCompatibility score - Relationship compatibility APIBRead-onlyInspect
Calculate a detailed compatibility score between two birth charts using Western synastry (inter-chart aspects). Returns overall score (0-100) plus category breakdowns for romantic, emotional, intellectual, physical, and spiritual compatibility. Each category analyzes specific planetary pairs: Venus-Mars for romance, Moon-Moon for emotions, Mercury-Mercury for intellect. Includes Sun, Moon, Venus, and Mars sign compatibility narratives, element balance analysis, relationship archetype classification, and the most significant inter-chart aspects with relationship-specific interpretations.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| person1 | Yes | First person birth details (date, time, location, timezone). Required for calculating natal planetary positions. | |
| person2 | Yes | Second person birth details. Compared against person1 to evaluate inter-chart aspects and compatibility. |
Output Schema
| Name | Required | Description |
|---|---|---|
| persons | Yes | |
| summary | Yes | |
| archetype | Yes | |
| strengths | Yes | |
| categories | Yes | |
| challenges | Yes | |
| keyAspects | Yes | |
| overallScore | Yes | |
| elementBalance | Yes | |
| interpretation | Yes | |
| aspectBreakdown | Yes | |
| signCompatibility | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that this is a scored, interpretive analysis (0-100 score, category breakdowns, narratives), which is useful, but it discloses no operational traits such as cost, rate limits, or what happens with missing/unknown birth times beyond the schema's own note.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause, but the bulk of the text is an enumeration of return contents that the output schema already defines (categories, narratives, element balance, archetype, aspects). That enumeration is largely redundant against the existing output schema and could be trimmed without losing agent-relevant signal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the definition is otherwise thorough about the tool's scope. The one real gap is the absence of any routing contrast against sibling tools that consume the same birth-chart inputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the nested person1/person2 objects are fully documented in the schema itself, so the description carries no additional parameter burden. The description adds nothing beyond what the schema already states, warranting the baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Calculate a detailed compatibility score between two birth charts using Western synastry.' It is unambiguous what the tool produces. It stops short of naming the sibling it competes with (post_astrology_synastry, post_astrology_composite_chart), so an agent must infer the boundary between a scored relationship analysis and raw inter-chart aspects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance. With three sibling relationship-analysis tools (synastry, composite_chart, compatibility_score), the definition never says when the scored/interpreted view is preferable to the raw aspect output. The agent is left to infer routing purely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_composite_chartComposite Chart - Midpoint relationship chart with interpretationsBRead-onlyInspect
Generate a composite chart by calculating midpoints between two natal charts. The composite chart represents the relationship as a single entity, showing its core identity, emotional bond, communication style, and growth direction. Uses the midpoint method: planets, angles and house cusps are each the midpoint of the two natal values, so the Ascendant always sits on the first cusp. Returns composite planetary positions, house cusps, Ascendant, Midheaven, aspects, and relationship interpretation. Composite chart API, midpoint chart calculator, relationship astrology, couple chart analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| person1 | Yes | First person birth details (date, time, location, timezone). | |
| person2 | Yes | Second person birth details (date, time, location, timezone). | |
| houseSystem | No | House system for the composite chart. Placidus (default), Whole Sign, Equal, or Koch. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| aspects | Yes | |
| person1 | Yes | |
| person2 | Yes | |
| interpretation | Yes | |
| compositeHouses | Yes | |
| compositePlanets | Yes | |
| compositeAscendant | Yes | |
| compositeMidheaven | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the exact midpoint methodology ('planets, angles and house cusps are each the midpoint of the two natal values'), the invariant that the Ascendant always sits on the first cusp, and the returned artifacts. No auth or rate-limit context, but the calculation semantics are well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and method are front-loaded well, but the closing keyword list ('Composite chart API, midpoint chart calculator, relationship astrology, couple chart analysis') is SEO padding that adds no actionable information, and 'core identity, emotional bond, communication style, and growth direction' is marketing-flavored filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not enumerate return values, and it still summarizes them. For a 5-parameter, nested-object tool with full schema coverage, the only real gap is the absence of when-to-use guidance relative to the synastry/compatibility siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with person1/person2 sub-fields, lang, compact, and houseSystem all documented in the schema itself. The description adds no parameter-level meaning (e.g., it never mentions houseSystem or the lang/compact options), so the baseline 3 for fully-covered schemas applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a composite chart by calculating midpoints between two natal charts') and explains the underlying method in detail, so the agent knows exactly what computation is performed. However, it never names its closest sibling (post_astrology_synastry), leaving the composite-vs-synastry distinction to be inferred from the description of the composite as 'a single entity'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what a composite chart represents but gives no explicit when-to-use guidance, no conditions, and no alternatives. An agent choosing between this and post_astrology_synastry or post_astrology_compatibility_score gets no routing help beyond the implicit 'relationship' framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_ecliptic_crossingsEcliptic Crossings - Node passages for a whole yearARead-onlyInspect
Get every moment a body crosses the plane of the ecliptic during a given year, for the 11 Western bodies that leave it: the Moon and Mercury through Pluto, plus Chiron and Black Moon Lilith. A crossing from south to north is an ascending node passage, north to south a descending one. These are the instants a body sits exactly on the ecliptic rather than merely near it, which is what makes an eclipse possible when a lunar crossing coincides with a New or Full Moon, and what practitioners use for node-based timing. Returns the exact date and time in your timezone with the tropical longitude and sign. The Sun and the lunar nodes are excluded because they lie on the plane by definition and so have no nodes of their own. Essential for eclipse-season work, node timing, and astronomical calendars. Ecliptic crossing API, planetary node passage, ascending and descending nodes. Verified against NASA JPL Horizons.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | Yes | Year to scan for node passages (1551 to 2649). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | No | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Crossing dates and times are reported in this zone. Defaults to 0 (UTC). |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| events | Yes | |
| timezone | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare a safe read-only profile, and the description adds genuine behavioral context: the exact set of included/excluded bodies, the direction convention (south-to-north = ascending), the returned fields (date/time in the caller's timezone with tropical longitude and sign), and a data-provenance note (verified against NASA JPL Horizons). It stops short of describing pagination, volume of results, or any rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core explanation is front-loaded and accurate, but the tail contains padding: a marketing sentence ("Essential for eclipse-season work...") and a keyword-stuffed fragment ("Ecliptic crossing API, planetary node passage, ascending and descending nodes.") that repeats the topic rather than informing. Some sentences could be trimmed without losing meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not enumerate return values, and it covers the crucial domain semantics: which bodies are included/excluded and why, the ascending/descending convention, and the eclipse relevance. An agent has enough to call the tool correctly; only result volume/shape nuance is left unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents year, lang, compact, and timezone in detail. The description reinforces only the timezone behavior ("the exact date and time in your timezone") and the year scoping, adding little beyond what the schema provides. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and resource (moments a body crosses the plane of the ecliptic) with precise scope: a given year, 11 named bodies, and the explicit exclusion of the Sun and lunar nodes. It clearly distinguishes itself from sibling transit/aspect tools by centering on node passages rather than general positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context ("Essential for eclipse-season work, node timing, and astronomical calendars") and explains the astronomical condition that makes a crossing meaningful. However, it never names an alternative sibling tool or states when NOT to use this one (e.g., versus post_astrology_transits_monthly).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_fixed_starsFixed stars and star conjunctions calculator - Regulus, Spica, Algol natal reportARead-onlyInspect
Calculate the tropical zodiac positions of the major named fixed stars for any birth moment. Covers the four Royal stars and the fifteen Behenian stars, then detects conjunctions to the natal planets, Ascendant, and Midheaven. Each star returns its precessed ecliptic longitude, zodiac sign, visual magnitude, and traditional planetary nature, with a plain language interpretation for every conjunction inside the chosen orb. A focused tool for natal reports that weigh Regulus, Spica, Aldebaran, Antares, and Algol against the chart.
| Name | Required | Description | Default |
|---|---|---|---|
| orb | No | Conjunction orb in degrees, the maximum separation for a star to count as conjunct a chart point. Defaults to 1, maximum 3. Widen it to surface looser contacts or tighten it for only the closest hits. | |
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. |
Output Schema
| Name | Required | Description |
|---|---|---|
| orb | Yes | |
| stars | Yes | |
| summary | Yes | |
| birthDetails | Yes | |
| conjunctions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the read-only, non-destructive profile. The description adds real behavioral context beyond that: every returned star carries precessed longitude, sign, magnitude and planetary nature, and each conjunction inside 'the chosen orb' receives a plain-language interpretation. That tells the agent what is computed and how the orb affects output, though it doesn't discuss volume or edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences: purpose, coverage/detection, return content, and audience. Front-loaded with the core action, no repetition of the title, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 correctly avoids enumerating return fields in exhaustive detail while still summarizing its shape and the orb-driven interpretation. Safety is covered by annotations and inputs by the schema, so the description is complete enough; only the absence of any guidance about large conjunctions lists or performance keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters thoroughly (orb, nodeType, timezone, compact, etc.). The description only alludes to 'the chosen orb' and 'the chart' without adding syntax or format detail beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Calculate the tropical zodiac positions of the major named fixed stars') plus exact scope (four Royal stars, fifteen Behenian stars, conjunctions to planets/Ascendant/Midheaven). This clearly separates it from siblings like post_astrology_natal_chart, post_astrology_planets, or post_astrology_asteroids without the agent needing to open any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The closing sentence gives context ('a focused tool for natal reports that weigh Regulus, Spica, Aldebaran, Antares, and Algol'), implying when it is useful. However, it never states when to prefer this over the plain natal chart or planet tools, nor any exclusions or prerequisites, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_housesCalculate house cusps - House system calculator with comparisonARead-onlyInspect
Calculate astrological house cusps using Placidus, Whole Sign, Equal, or Koch house systems. Returns all 12 house cusps with zodiac signs, degrees, Ascendant, and Midheaven. Use "all" parameter to compare all 4 house systems side-by-side. Perfect for astrology charts, house cusp tables, and educational tools showing house system differences. Includes accurate Ascendant and MC calculations.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Date is critical for house cusp calculations as it determines planetary positions used in some house systems. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Time is ESSENTIAL for accurate house cusps, and even minutes matter. The Ascendant (1st house cusp) changes roughly every 4 minutes. Without accurate time, house placements will be incorrect. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Location determines the local horizon and meridian, which are fundamental to house division. Higher latitudes cause more distortion in time-based systems like Placidus. | |
| timezone | Yes | Decimal hours from UTC (e.g. -5 for EST, 5.5 for IST, 9 for JST) OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the chart date. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Affects local time and horizon calculations for house cusps. | |
| houseSystem | No | House system for dividing ecliptic into 12 houses. Placidus (most popular) uses time, Whole Sign (ancient) uses signs, Equal divides from Ascendant. Use "all" to compare all 4 systems side-by-side for educational purposes. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| date | Yes | |
| time | Yes | |
| houses | Yes | |
| latitude | Yes | |
| timezone | Yes | |
| ascendant | Yes | |
| longitude | Yes | |
| midheaven | Yes | |
| comparison | No | |
| houseSystem | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a safe read-only, non-destructive operation, so the burden is lightened. The description adds the return scope (12 cusps, signs, degrees, Ascendant, Midheaven) and notes accurate Asc/MC calculations, but the substantive caveat about latitude distortion lives in the schema, not the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, and the 'all' parameter guidance comes before the promotional tail. The closing 'Perfect for astrology charts...' sentence is marketing padding that does not earn its place, mildly diluting an otherwise tight description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema covering return values and full schema coverage on inputs, the description only needs to convey purpose, routing, and scope, which it does. It could still help by noting latitude limitations or how it relates to the natal chart sibling, but nothing essential to correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all eight parameters are already documented in the schema, including the houseSystem enum and the 'all' option. The description only restates the house-system choices at a high level, adding no syntax or format detail beyond structured data.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Calculate astrological house cusps') and enumerates the supported house systems, which distinguishes it from sibling chart tools like post_astrology_natal_chart that also produce houses. An agent can select it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear usage context: default single-system calculation, plus the explicit 'all' parameter route for side-by-side comparison, and names target use cases (charts, cusp tables, educational tools). It does not, however, say when a sibling tool such as the natal chart would be preferable, so no exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_lilithBlack Moon Lilith calculator - mean and true lunar apogee in the natal chartARead-onlyInspect
Calculate Black Moon Lilith for any birth chart, both the mean lunar apogee, the steady and most widely used point, and the true or osculating apogee, the exact position that can shift sign and turn retrograde. Returns the zodiac sign, degree, house, ecliptic longitude and latitude, daily speed, retrograde flag, and a plain language interpretation for each variant. Built for natal astrology apps and AI agents exploring the wild, suppressed, and reclaimed self that Lilith represents.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| houseSystem | No | House system used to place each Lilith variant in a house. Placidus (default), Whole Sign, Equal, or Koch. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| lilith | Yes | |
| summary | Yes | |
| houseSystem | Yes | |
| birthDetails | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the mean-vs-true distinction and notes that the true apogee can shift sign and turn retrograde, but says nothing about permissions, rate limits, or precision caveats beyond that. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and resource, then the variant distinction, then the return fields and audience. Dense but every sentence carries information; only the audience sentence is borderline expendable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 enumerate return values, and the parameter documentation is fully covered by the schema. For a complex calculation tool this is nearly complete; the only gap is any guidance on choosing this over a broader natal-chart tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters in depth; baseline 3 applies. The description's explanation of the mean/true variants loosely maps to nodeType, but adds no syntax or format detail the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Calculate Black Moon Lilith for any birth chart') and precisely scopes it to both the mean and true lunar apogee. It clearly identifies the tool's domain, though it never explicitly contrasts itself with overlapping siblings like post_astrology_natal_chart or post_astrology_asteroids, which may also surface points.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('for any birth chart') and the audience is named ('natal astrology apps and AI agents'), but there is no explicit when-to-use/when-not guidance or routing to alternatives. An agent can infer the context but gets no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_local_spaceLocal space astrology map - Directional planetary compass linesARead-onlyInspect
Generate a local space astrology map that projects the natal planets onto the local horizon as compass directions and great-circle lines radiating from the birthplace. Returns each body azimuth (degrees clockwise from true north), altitude, 16-point compass direction, whether it sits above the horizon, and the latitude and longitude waypoints of its directional line. Ideal for relocation planning, directional astrology, and travel-direction maps.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Combined with time and timezone it fixes the birth instant whose planetary positions are projected onto the local horizon. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Time is essential: the local horizon rotates a full circle each day, so the azimuth (compass direction) of every body depends on the exact birth time. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| include | No | Optional comma-separated extra bodies to add beyond the 10 classical planets. Allowed values: north-node, chiron, lilith. north-node is the mean lunar node. Omit to return the 10 classical planets only. | |
| latitude | Yes | Birthplace latitude in decimal degrees (-90 to 90). This is the origin point of every local space line and the observer latitude used to turn each body into an azimuth and altitude. | |
| timezone | Yes | Decimal hours from UTC (e.g. -5 for EST, 5.5 for IST, 9 for JST) OR IANA name (e.g. "America/New_York"). IANA resolved to the offset in force at the birth date and time. | |
| longitude | Yes | Birthplace longitude in decimal degrees (-180 to 180). Sets the local horizon orientation and the starting point from which the directional lines radiate. |
Output Schema
| Name | Required | Description |
|---|---|---|
| bodies | Yes | |
| summary | Yes | |
| birthDetails | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safe-read profile is covered. The description adds the domain behavior (horizon rotation makes birth time essential) but discloses nothing about permissions, rate limits, or cost, and since an output schema exists the return-value enumeration is largely redundant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both earning their place: the first front-loads what the tool computes and returns, the second gives use cases. The opening sentence is dense but well-structured; nothing is filler or restated name/title boilerplate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not explain return values, and it adequately covers the computational contract and the five required inputs. The one remaining gap is sibling disambiguation against relocation/astrocartography tools, which matters given 39 overlapping astrology tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter (date, time, latitude, longitude, timezone, include, compact, lang) is documented in the schema itself, so the baseline of 3 applies. The description only hints that latitude/longitude are the 'birthplace' origin, adding no meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a local space astrology map') and immediately specifies the mechanism (projecting natal planets onto the local horizon as compass directions and great-circle lines). It enumerates the concrete outputs (azimuth, altitude, 16-point compass direction, above-horizon flag, lat/long waypoints), so an agent knows exactly what this produces versus the broader family of chart tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear use contexts ('Ideal for relocation planning, directional astrology, and travel-direction maps'), which is more than implied guidance. It does not, however, name or exclude the closely related siblings post_astrology_relocation_chart and post_astrology_astrocartography, so an agent has no explicit routing rule when several overlap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_lunar_returnLunar Return Chart - Monthly emotional forecast with Moon cycle chartBRead-onlyInspect
Generate a lunar return chart for any month, cast for the exact moment the transiting Moon returns to its natal ecliptic longitude. The Moon completes one sidereal orbit every ~27.3 days, making this the primary technique for monthly astrological forecasting. Returns full tropical zodiac chart with planetary positions, house cusps, aspects, Ascendant, and Midheaven. Reveals emotional patterns, domestic focus, and intuitive themes for the coming month. Lunar return chart API, monthly horoscope forecast, Moon cycle chart, emotional astrology prediction.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Latitude of the lunar return location in decimal degrees (-90 to 90). Affects the Ascendant and house cusps of the return chart. | |
| timezone | Yes | Decimal hours from UTC OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the birthDate. Output datetime is adjusted to this timezone. | |
| birthDate | Yes | Original birth date in YYYY-MM-DD format. Used to determine natal Moon longitude for the lunar return calculation. | |
| birthTime | Yes | Original birth time in 24-hour HH:MM:SS format. Determines exact natal Moon position for monthly return timing. | |
| longitude | Yes | Longitude of the lunar return location in decimal degrees (-180 to 180). Determines local sidereal time for house calculations. | |
| returnDate | Yes | Approximate date near the desired lunar return (YYYY-MM-DD). The Moon returns to its natal position every ~27.3 days, so provide a date within a few days of the expected return. | |
| houseSystem | No | House system for the lunar return chart. Placidus (default), Whole Sign, Equal, or Koch. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| chart | Yes | |
| location | Yes | |
| birthDate | Yes | |
| interpretation | Yes | |
| lunarReturnDate | Yes | |
| natalMoonPosition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a safe read (readOnlyHint=true, destructiveHint=false), so the safety profile is covered. The description adds the underlying astronomy (~27.3-day sidereal orbit) and the fact that output is a full tropical chart, but says nothing about authentication, rate limits, or accuracy caveats around the approximate returnDate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The body sentences are informative and front-loaded, leading with the verb and the precise astronomical condition. However, the trailing keyword list ('Lunar return chart API, monthly horoscope forecast, Moon cycle chart, emotional astrology prediction') is SEO padding that adds no actionable content and dilutes the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not detail return values, yet it still summarizes the chart components and the interpretive themes, which is helpful. Combined with 100% schema coverage and annotations, an agent has enough to call the tool correctly; only explicit sibling differentiation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and an output schema exists, so the schema already documents all nine parameters including latitude/longitude effects, timezone resolution, and returnDate tolerance. The description adds no parameter-level meaning beyond what the schema states, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Generate a lunar return chart') and pins down the technical trigger precisely: the moment the transiting Moon returns to its natal ecliptic longitude. It is clearly a natal-chart-based return calculation, but it never names the most confusable sibling, post_astrology_solar_return, so the agent must infer the lunar-vs-solar distinction from domain knowledge.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'primary technique for monthly astrological forecasting' implies when this tool is appropriate, but there are no explicit when-to-use/when-not-to-use rules and no routing to alternatives such as post_astrology_solar_return (yearly) or post_astrology_horoscope_sign_monthly. Usage context is present but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_natal_chartGenerate natal chart - Birth chart calculator API with houses and aspectsARead-onlyInspect
Calculate complete Western astrology natal chart (birth chart) with tropical zodiac. Returns all 14 celestial bodies (the 10 classical planets Sun through Pluto, the lunar nodes, Chiron, and Black Moon Lilith), 12 house cusps with customizable house systems (Placidus, Whole Sign, Equal, Koch), major and minor aspects, Ascendant, Midheaven, dominant elements and modalities. Perfect for astrology apps, birth chart generators, horoscope websites, and astrological consultation tools. Verified against NASA JPL Horizons.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| houseSystem | No | House system for dividing the chart into 12 houses. Placidus (default) is most popular in Western astrology and time-sensitive. Whole Sign assigns one sign per house (simpler, ancient). Equal houses divide chart into 30° segments from Ascendant. Koch emphasizes houses in high latitudes. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| houses | Yes | |
| vertex | Yes | |
| aspects | Yes | |
| planets | Yes | |
| summary | Yes | |
| patterns | No | |
| ascendant | Yes | |
| midheaven | Yes | |
| houseSystem | Yes | |
| birthDetails | Yes | |
| partOfFortune | Yes | |
| aspectsInterpretation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that the calculation uses the tropical zodiac and is 'Verified against NASA JPL Horizons,' which is a useful accuracy signal, but it does not disclose rate limits, authentication needs, or other operational behavior; much of the remaining text restates return contents that the output schema covers.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first sentence is front-loaded with the core purpose and return contents, and the final accuracy claim is useful. The middle marketing sentence ('Perfect for...') does not help an agent invoke the tool and could be removed, but overall the description is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, read-only calculation tool with full schema coverage, an output schema, and safety annotations, the description provides enough context about scope and outputs. It does not need to explain return values because an output schema exists, though it could better route agents among the many sibling chart tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters—including the house system enum and node type—are already fully documented in the input schema. The description mentions customizable house systems but adds no syntax, defaults, or constraints beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Calculate') and resource ('Western astrology natal chart'), and enumerates the returned bodies, houses, aspects, Ascendant, Midheaven, and dominants. This distinguishes it from narrower sibling tools like post_astrology_planets or post_astrology_houses, which each return a subset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description says it is 'Perfect for astrology apps, birth chart generators, horoscope websites, and astrological consultation tools,' which implies usage context but never states when to choose this complete-chart tool over siblings like post_astrology_planets or post_astrology_aspects. No exclusions or prerequisites are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_parallels_monthlyMonthly Parallels - Declination contacts for an entire monthARead-onlyInspect
Get every parallel and contraparallel of declination that perfects during a given month, across the 13 non-lunar Western bodies: the Sun and Mercury through Pluto, both lunar nodes, Chiron and Black Moon Lilith. A parallel is two bodies at the same declination and reads much like a conjunction; a contraparallel is equal and opposite declinations and reads much like an opposition. Neither depends on zodiacal distance, so they surface connections an aspect table cannot show, which is why traditional and modern practitioners read them alongside aspects. Declinations are geocentric, matching what an ephemeris publishes. Returns the exact date and time of closest approach in your timezone with both declinations. The Moon is excluded because its declination swings the full range every month and would bury the slow pairs. Omit year and month to get the month in progress, so a published calendar stays current without a redeploy. Essential for declination work, out-of-bounds tracking, monthly forecast copy, and electional timing. Monthly parallel calendar API, declination aspects, contraparallel ephemeris. Verified against NASA JPL Horizons.
| Name | Required | Description | Default |
|---|---|---|---|
| orb | No | How far from exact still counts, in degrees. The traditional orb for a declination contact is tighter than for a zodiacal aspect because declination changes slowly. Defaults to 1.5. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | No | Year for the declination calendar (1551 to 2649). Defaults to the current year (UTC). | |
| month | No | Month number (1-12). Defaults to the current month (UTC). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | No | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Event dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC). |
Output Schema
| Name | Required | Description |
|---|---|---|
| orb | Yes | |
| year | Yes | |
| month | Yes | |
| events | Yes | |
| timezone | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description still adds real value beyond that: the geocentric frame matching ephemerides, the deliberate exclusion of the Moon and its rationale, and the fact that returned times are localized to the caller's timezone with exact closest-approach instants.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and each explanatory sentence (Moon exclusion, geocentric frame, return contents) earns its place. However, the trailing SEO keyword string ('Monthly parallel calendar API, declination aspects, contraparallel ephemeris. Verified against NASA JPL Horizons.') is filler that dilutes an otherwise tight definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and all seven parameters fully described, the description needn't explain return shapes, and it still covers the interpretive context (parallel≈conjunction, contraparallel≈opposition), the excluded body, and the reference frame. Nothing an agent needs to call this correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already documents orb, lang, year, month, compact, nodeType, and timezone in detail, so the baseline is 3. The description adds little parameter-specific syntax beyond reinforcing that year/month are optional and timezone drives reported event times.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get every parallel and contraparallel of declination'), a precise resource (declination contacts for a month), and enumerates the exact body set (13 non-lunar Western bodies, Moon excluded). This cleanly separates it from the aspect-oriented siblings like post_astrology_aspects_monthly, since it explicitly notes these contacts are not zodiacal-distance based.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete usage contexts ('declination work, out-of-bounds tracking, monthly forecast copy, electional timing') and explains when defaults apply ('Omit year and month to get the month in progress'). It also implies contrast with aspect tables ('surface connections an aspect table cannot show') but never names a specific sibling tool to use instead, so routing is inferred rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_planetary_returnsPlanetary Return Chart - Saturn return, Jupiter return, and inner planet cyclesARead-onlyInspect
Generate a planetary return chart for Mercury, Venus, Mars, Jupiter, or Saturn. A planetary return occurs when a transiting planet conjuncts its natal longitude, marking the beginning of a new cycle. Saturn return (~29 years) is the most significant life milestone in Western astrology. Jupiter return (~12 years) signals expansion and growth phases. Mars return (~2 years) resets energy and drive. Returns full tropical zodiac chart with all planetary positions, house cusps, and aspects. Planetary return chart API, Saturn return calculator, Jupiter return chart, Mars return forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| planet | Yes | Planet for the return calculation. Supports Mercury (~88 days), Venus (~225 days), Mars (~687 days), Jupiter (~12 years), and Saturn (~29 years). Saturn return is a major life milestone in Western astrology. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Latitude of the return location in decimal degrees (-90 to 90). Affects house cusps and Ascendant of the return chart. | |
| timezone | Yes | Decimal hours from UTC OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the birthDate. Output datetime is adjusted to this timezone. | |
| birthDate | Yes | Original birth date in YYYY-MM-DD format. Used to determine the natal longitude of the selected planet. | |
| birthTime | Yes | Original birth time in 24-hour HH:MM:SS format. Determines exact natal planet position for return timing. | |
| longitude | Yes | Longitude of the return location in decimal degrees (-180 to 180). | |
| houseSystem | No | House system for the return chart. Placidus (default), Whole Sign, Equal, or Koch. | placidus |
| approximateDate | Yes | Approximate date near the expected planetary return (YYYY-MM-DD). The return nearest this date is returned, so a date off by months still lands on a genuine return; during a retrograde loop the planet crosses its natal degree up to three times and the crossing nearest the date is the one returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| chart | Yes | |
| planet | Yes | |
| location | Yes | |
| birthDate | Yes | |
| returnDate | Yes | |
| interpretation | Yes | |
| approximateCycle | Yes | |
| natalPlanetPosition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds what the chart contains (planetary positions, house cusps, aspects), but says nothing about authentication, rate limits, or how a retrograde multi-crossing return is disambiguated at the description level.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening two sentences are well front-loaded and informative, but the trailing 'Planetary return chart API, Saturn return calculator, Jupiter return chart, Mars return forecast' is keyword-stuffed filler that repeats the title, and the Saturn-return milestone claim duplicates the schema text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description adequately conveys purpose and planetary scope for a 10-parameter, 7-required tool. Only the absence of explicit sibling routing keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter, including the retrograde/approximateDate nuance, is already documented in the schema. The description only restates the planet options and cycle lengths, adding no syntax or format detail beyond structured fields, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) plus the resource (planetary return chart) and enumerates the exact supported planets, which cleanly separates it from post_astrology_solar_return and post_astrology_lunar_return without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what a planetary return is and how long each cycle lasts, which implies when the tool is relevant, but it never states when to prefer it over the solar/lunar return siblings or any prerequisites. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_planetsGet planetary positions - Ephemeris calculator for all planetsARead-onlyInspect
Calculate accurate tropical zodiac positions for all 14 celestial bodies for any date, time, and location. The bodies are the 10 classical planets Sun through Pluto, the lunar nodes, Chiron, and Black Moon Lilith. Returns longitude, latitude, zodiac sign, degree within sign, daily motion speed, and retrograde status. Perfect for transit tracking, ephemeris tables, astrology apps, and planetary position widgets. Verified against NASA JPL Horizons.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Target date for planetary positions in YYYY-MM-DD format. Use current date for transit positions, or any historical/future date for research. Planets move daily, so this date determines their zodiac positions. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Time in 24-hour HH:MM:SS format for precise calculations. Moon moves ~13° per day, so time matters for accurate lunar position. Use 12:00:00 (noon) as default if exact time not needed. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Observer latitude in decimal degrees (-90 to 90). While planetary longitudes are geocentric (same worldwide), this is needed for house calculations if extending functionality. For basic ephemeris, use 0 as default. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Decimal hours from UTC (e.g. -5 for EST, 5.5 for IST, 9 for JST, 5.75 for NPT) OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the chart date. | |
| longitude | Yes | Observer longitude in decimal degrees (-180 to 180). Used for precise local time conversion. For basic planetary positions, this has minimal impact but ensures accuracy. |
Output Schema
| Name | Required | Description |
|---|---|---|
| planets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the returned fields and an accuracy claim ('Verified against NASA JPL Horizons'), giving useful context, but says nothing about rate limits, precision caveats, or how the coordinate/timezone inputs affect output accuracy.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core verb+resource and body list, and no repetition of the name. Slightly diluted by marketing phrasing ('Perfect for...', 'Verified against NASA JPL Horizons'), but still tight and well ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full parameter coverage, and read-only annotations, the description only needs to frame scope and inputs, which it does. The remaining gap is the lack of sibling routing, but nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and each field already carries rich prose (timezone formats, node conventions, compact shape). The description adds no parameter-level detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (calculate) and resource (tropical zodiac positions) and enumerates the exact 14 bodies covered, which is a concrete scope statement. Combined with 'for any date, time, and location', it clearly separates this arbitrary-date ephemeris tool from siblings like post_astrology_planets_monthly, post_astrology_lilith, and post_astrology_asteroids.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists use-cases ('transit tracking, ephemeris tables, astrology apps, planetary position widgets') which implies context, but never names a condition that selects this tool over the many overlapping siblings (planets_monthly, transits, transit_aspects). No when-not-use or explicit alternative routing is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_planets_monthlyMonthly Ephemeris - Daily tropical planetary positions for a monthARead-onlyInspect
Get daily tropical ecliptic positions for all 14 Western bodies (the 10 classical planets Sun through Pluto, the lunar nodes, Chiron, and Black Moon Lilith) for an entire month. Returns longitude, zodiac sign, degree within sign, and retrograde status for each body on each day, calculated at noon UTC. Omit year and month to get the month in progress, so a published ephemeris page stays current without a redeploy. Essential for ephemeris tables, transit tracking, retrograde calendars, and planetary movement charts. Monthly ephemeris API, tropical position table, daily planet transit positions, ecliptic longitude calculator. Verified against NASA JPL Horizons.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | No | Year for the monthly ephemeris (1551 to 2649). Defaults to the current year (UTC). | |
| month | No | Month number (1-12) for the ephemeris. Defaults to the current month (UTC). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
Output Schema
| Name | Required | Description |
|---|---|---|
| days | Yes | |
| year | Yes | |
| month | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds genuinely useful behavior: calculation is at noon UTC, the year/month omission yields the current month, and the data is verified against NASA JPL Horizons. It does not mention rate limits or output shape, but the output schema covers the latter.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core sentences are front-loaded and information-dense, but the closing 'Monthly ephemeris API, tropical position table, daily planet transit positions, ecliptic longitude calculator' is keyword stuffing that restates the same concept four ways and dilutes the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not explain return values, and it does cover the bodies, the time basis, and the default-date behavior. All parameters are optional and their defaults are documented, so an agent has enough to call it correctly; only the lang and compact options go unmentioned in prose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the schema already documents ranges, defaults, and the lang enum. The description adds only the motivation for the year/month default ('so a published ephemeris page stays current without a redeploy') and says nothing about lang or compact, so it does not meaningfully exceed the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get daily tropical ecliptic positions for all 14 Western bodies ... for an entire month') and enumerates exactly which bodies are covered, so scope is unambiguous. It differentiates itself from single-day siblings through the explicit monthly scope, though it never names the closest alternatives (e.g. post_astrology_planets, post_astrology_transits_monthly) to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers use cases ('ephemeris tables, transit tracking, retrograde calendars, planetary movement charts') and one concrete operational hint ('Omit year and month to get the month in progress'), which implies when the tool fits. However, it gives no guidance on when to prefer this over the daily/single-planet or transit-monthly siblings, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_profectionsAnnual profections calculator - lord of the year and yearly time lord by ageARead-onlyInspect
Calculate the annual profection and lord of the year for any birth chart and target date using the Hellenistic time lord technique. Each completed year of life advances the rising sign by one whole sign house, activating a new profected house, profected sign, and ruling planet that sets the tone of the year. Returns the age, profected house and sign, the lord of the year with its natal sign and house placement, and a plain language interpretation for traditional and Hellenistic astrology apps.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| targetDate | Yes | Date whose profection year you want, in YYYY-MM-DD format. The completed whole years from the birth date to this date select the profected house and sign. Must fall on or after the birth date. | |
| houseSystem | No | House system used only to report where the lord of the year sits in the natal chart. The profected house and sign always use whole sign profection from the rising sign. Placidus (default), Whole Sign, Equal, or Koch. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| age | Yes | |
| summary | Yes | |
| lordOfYear | Yes | |
| targetDate | Yes | |
| birthDetails | Yes | |
| profectedSign | Yes | |
| interpretation | Yes | |
| profectedHouse | Yes | |
| lordNatalPosition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds real value beyond that by spelling out what the calculation produces (age, profected house/sign, lord of the year with natal sign and house, plain-language interpretation) and the technique that drives it, though it says nothing about auth, rate limits, or edge cases (e.g. targetDate before birth, which the schema handles).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action and output, with no filler. It is slightly longer than strictly necessary given the schema and output schema carry the detail, but every sentence conveys real information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, annotations covering the read-only profile, and full parameter documentation in the schema, the description only needs to establish purpose, mechanism, and output gist — all of which it does. An agent has everything needed to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all ten parameters in detail. The description adds only conceptual framing (birth chart + target date) and no parameter-specific syntax or format detail beyond what the schema provides, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Calculate the annual profection and lord of the year for any birth chart and target date') and names the distinctive Hellenistic time-lord technique, which cleanly separates it from siblings like progressions, solar return, or transits. The one-line mechanism (each completed year advances the rising sign by one whole-sign house) makes the tool's scope unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the technique well but never states when to choose this tool over alternatives such as post_astrology_progressions, post_astrology_solar_return, or post_astrology_planetary_returns, and gives no exclusions or prerequisites. Usage is only implied by the technique's definition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_progressionsSecondary progressions calculator - progressed chart, progressed Sun and MoonBRead-onlyInspect
Generate the secondary progressed chart for any date using the day-for-a-year key. Each day of ephemeris motion after birth stands in for one year of life. Returns every progressed body with its sign, degree, whole-sign house, motion, and retrograde state, plus the progressed Ascendant and Midheaven via the Naibod arc. The progressed Sun and progressed Moon are the headline timing markers for inner growth and emotional chapters. Secondary progressions API, progressed chart calculator, progressed Sun and Moon, progressed Ascendant and Midheaven.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| targetDate | Yes | Date to progress the chart to, in YYYY-MM-DD format. Usually today or a forecast date. The day-for-a-year key turns the elapsed years since birth into the same number of ephemeris days after the birth moment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| planets | Yes | |
| summary | Yes | |
| ascendant | Yes | |
| midheaven | Yes | |
| targetDate | Yes | |
| birthDetails | Yes | |
| elapsedYears | Yes | |
| progressedDate | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish the safe read-only profile. The description adds the calculation method and the returned contents (bodies with sign, degree, whole-sign house, motion, retrograde state, plus Ascendant/Midheaven via the Naibod arc), which is useful, but it says nothing about limits, accuracy caveats, or behavior when the birth time is unknown.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening is well front-loaded and technically informative, but the trailing sentence ('Secondary progressions API, progressed chart calculator, progressed Sun and Moon, progressed Ascendant and Midheaven') is pure keyword stuffing that repeats earlier content and dilutes the definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 need not enumerate return fields, yet it usefully summarizes them, and annotations cover safety. For a 9-parameter tool it is largely complete; only the missing routing guidance against sibling techniques keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already explains every parameter, including the day-for-a-year semantics of targetDate. The description restates that mechanism at a high level but adds no format, default, or edge-case detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (generate) and resource (secondary progressed chart) and explains the defining technique, the day-for-a-year key, which implicitly separates it from solar arc and profections. However, it never names a sibling tool, so the differentiation is inferential 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what progressions are and that the progressed Sun/Moon are timing markers, but gives no when-to-use guidance, no conditions for choosing this over transits, profections, or solar arc, and no prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_relocation_chartGenerate relocation chart - Relocated birth chart calculator with shifted houses and anglesARead-onlyInspect
Calculate a relocation chart (relocated birth chart) for a new place on Earth. The birth moment stays the same, so every planet keeps its natal sign and degree, while the Ascendant, Midheaven, Vertex, and all twelve house cusps are recomputed for the new latitude and longitude. Returns the relocated houses and angles, the planets that change house, the angular planets activated at the new place, and the distance and compass direction from the birthplace. Built for relocation astrology readings, astrocartography style move planning, and travel charts. Verified against NASA JPL Horizons.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. The birth moment is unchanged by relocation, so this still defines the planetary positions of the chart. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Combined with the timezone it fixes the exact birth instant, which the relocated angles and houses are recomputed for. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | Yes | Birth timezone: decimal hours from UTC (e.g. -5 for EST, 5.5 for IST) OR IANA name (e.g. "America/New_York"). Resolved to the offset in force at the birth date and time. This is the birthplace timezone, not the new location timezone. | |
| houseSystem | No | House system for dividing the relocated chart into 12 houses. Placidus (default) is time-sensitive and most popular in Western astrology. Whole Sign assigns one sign per house. Equal divides into 30 degree segments from the Ascendant. Koch emphasizes higher latitudes. Quadrant systems fall back to Whole Sign above the polar circle. | placidus |
| birthLatitude | Yes | Birthplace latitude in decimal degrees (-90 to 90). Used for the original natal angles and houses that the relocated chart is compared against. | |
| birthLongitude | Yes | Birthplace longitude in decimal degrees (-180 to 180). Positive East, negative West. | |
| relocationLatitude | Yes | New location latitude in decimal degrees (-90 to 90). The relocated Ascendant and house cusps are most sensitive to north-south movement. | |
| relocationLongitude | Yes | New location longitude in decimal degrees (-180 to 180). The relocated Midheaven shifts roughly one degree per degree of longitude moved. |
Output Schema
| Name | Required | Description |
|---|---|---|
| houses | Yes | |
| vertex | Yes | |
| changes | Yes | |
| planets | Yes | |
| ascendant | Yes | |
| midheaven | Yes | |
| relocation | Yes | |
| houseSystem | Yes | |
| birthDetails | Yes | |
| interpretation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as readOnlyHint=true and destructiveHint=false, so no contradiction exists. The description adds useful behavioral nuances beyond annotations: the birth moment stays unchanged, planets keep natal signs and degrees, only angles and house cusps are recomputed, and results are 'Verified against NASA JPL Horizons.' This gives the agent confidence about the computation's scope and reliability.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense, with every sentence earning its place: the core behavior, the computation details, the returned contents, and the target use cases. It is front-loaded with the main action and avoids redundant restatement of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with complete schema documentation and an output schema present, the description covers everything an agent needs to select and invoke it correctly: what it computes, what it returns, how it behaves relative to natal positions, and for which use cases it is intended. No critical gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has detailed descriptions, examples, formats, and constraints. The tool description adds a helpful conceptual framing (birth moment fixed, angles recomputed) but does not substantially enrich individual parameter meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a precise verb and resource: 'Calculate a relocation chart (relocated birth chart)' for a new place on Earth, with an exact definition of what is recomputed and what stays fixed. It clearly distinguishes the tool from siblings like natal charts, astrocartography, and local space by emphasizing that planetary positions remain natal while only angles and house cusps shift.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'Built for relocation astrology readings, astrocartography style move planning, and travel charts.' It does not explicitly name alternative sibling tools or state when not to use it, but the use cases are specific enough to guide an agent's selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_solar_arcSolar arc directions calculator - directed chart at one degree per yearARead-onlyInspect
Calculate a solar arc directed chart for any birth moment and target date. The solar arc is the secondary-progressed Sun longitude minus the natal Sun longitude, about one degree for each year of life, and every natal point including the Ascendant and Midheaven is advanced forward by that same arc. Returns the solar arc, each directed point with its natal and directed longitude, zodiac sign, degree, and a plain language interpretation, for predictive astrology apps timing major life events. Built on accurate tropical chart positions, no astronomy expertise needed.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Determines planetary positions for the specific calendar day. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. Determines the Ascendant (rising sign) and house cusps. Use 12:00:00 if unknown. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Birth location latitude in decimal degrees (-90 to 90). Positive = North, negative = South. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | Yes | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time. | |
| longitude | Yes | Birth location longitude in decimal degrees (-180 to 180). Positive = East, negative = West. | |
| targetDate | Yes | Date to direct the chart to, in YYYY-MM-DD format. Every natal point is advanced by the solar arc accumulated from birth to this date, about one degree for each year of life. |
Output Schema
| Name | Required | Description |
|---|---|---|
| summary | Yes | |
| directed | Yes | |
| solarArc | Yes | |
| targetDate | Yes | |
| birthDetails | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful non-obvious detail: the exact arc computation, that every natal point including Ascendant and Midheaven is advanced, and what the response contains. It omits any note on rate limits, precision limits, or timezone edge cases, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and the arc definition before the return payload, which is the right ordering. It is somewhat padded with promotional clauses ('Built on accurate tropical chart positions, no astronomy expertise needed') that do not help invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the required-parameter set is fully covered by the schema. The description supplies the conceptual model needed to call the tool correctly; only the missing sibling differentiation keeps it from being fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema, including targetDate's semantics. The description reinforces the targetDate concept ('about one degree for each year of life') but adds no syntax or format meaning beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Calculate a solar arc directed chart') and defines the mechanism precisely: secondary-progressed Sun minus natal Sun, applied to every natal point. This clearly separates it from sibling predictive techniques such as post_astrology_progressions, post_astrology_profections, and post_astrology_transits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Offers a target use case ('predictive astrology apps timing major life events') but never states when to choose this over the closely related progression/profection/transit siblings, and gives no exclusions or prerequisites. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_solar_returnSolar Return Chart - Annual birthday forecast with relocated chartARead-onlyInspect
Generate a solar return chart for any year, the foundational technique for annual astrological forecasting. The chart is cast for the exact moment the transiting Sun returns to its natal ecliptic longitude (your astrological birthday). Returns full tropical zodiac chart with planetary positions, house cusps, aspects, Ascendant, and Midheaven. Location-sensitive: relocating your solar return chart to a different city changes the houses and Ascendant. Solar return chart API, annual horoscope forecast, birthday chart calculator, yearly astrology prediction, relocated solar return.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | Yes | Latitude of the solar return location in decimal degrees (-90 to 90). Use current residence or travel location at time of birthday. Solar return charts are location-sensitive. | |
| timezone | Yes | Decimal hours from UTC OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the birthDate. Output datetime is adjusted to this timezone. | |
| birthDate | Yes | Original birth date in YYYY-MM-DD format. Used to determine natal Sun longitude for the solar return calculation. | |
| birthTime | Yes | Original birth time in 24-hour HH:MM:SS format. Determines exact natal Sun position for annual return timing. | |
| longitude | Yes | Longitude of the solar return location in decimal degrees (-180 to 180). Affects house cusps and Ascendant of the return chart. | |
| returnYear | Yes | Year for which to cast the solar return chart. The chart is erected for the exact moment the transiting Sun conjuncts the natal Sun longitude in this year. | |
| houseSystem | No | House system for the solar return chart. Placidus (default) is most common in Western astrology. Whole Sign, Equal, and Koch also supported. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| chart | Yes | |
| location | Yes | |
| birthDate | Yes | |
| interpretation | Yes | |
| solarReturnDate | Yes | |
| solarReturnYear | Yes | |
| natalSunPosition | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds useful behavioral context (location sensitivity, the moment of casting) but, with an output schema present, its listing of returned fields is largely redundant and it omits rate limits or precision caveats.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core content is front-loaded and readable, but the closing string of SEO keywords ('Solar return chart API, annual horoscope forecast, birthday chart calculator, yearly astrology prediction, relocated solar return') is filler that adds no invocation value and dilutes the entry.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be spelled out, and the description nonetheless covers inputs, casting basis, and location sensitivity. It is nearly complete for an agent to call correctly, missing only explicit alternative-tool routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema. The description's only added semantics is reinforcing that location inputs change houses/Ascendant, which the schema also states. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (solar return chart) and precisely defines the technique: the chart cast for the moment the transiting Sun returns to its natal ecliptic longitude. This clearly distinguishes it from natal_chart, lunar_return, and planetary_returns siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys the applicable scope ('for any year') and a key usage nuance ('Location-sensitive: relocating... changes the houses and Ascendant'), but never names when to choose this over siblings like post_astrology_lunar_return or post_astrology_planetary_returns, nor any prerequisites. Usage is implied rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_synastryCalculate synastry - Relationship compatibility analysis APICRead-onlyInspect
Calculate complete synastry (relationship compatibility) between two natal charts using Western tropical astrology. Analyzes inter-chart aspects between all planets to determine romantic, friendship, and karmic compatibility. Returns compatibility score (0-100), detailed inter-aspects with strength ratings, harmonious vs challenging aspect counts, and relationship dynamics analysis. Perfect for dating apps, matrimonial sites, relationship counseling tools, and astrology compatibility features. Based on professional astrological techniques.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| person1 | Yes | ||
| person2 | Yes | ||
| houseSystem | No | House system for both natal charts. Placidus (default), Whole Sign, Equal, or Koch. | placidus |
Output Schema
| Name | Required | Description |
|---|---|---|
| person1 | Yes | |
| person2 | Yes | |
| summary | Yes | |
| analysis | Yes | |
| interAspects | Yes | |
| compatibilityScore | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it returns a compatibility score and inter-aspect details, but since an output schema exists, this return-value summary is mostly redundant and it does not disclose auth, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first three sentences are informative and front-loaded with the core calculation and return contents. However, the final two sentences ('Perfect for dating apps...' and 'Based on professional astrological techniques.') are promotional filler that does not help an agent select or invoke the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex, with nested objects, five top-level parameters, and an output schema. The description covers the computation and output at a high level, but it omits usage guidance relative to siblings and adds no parameter semantics, so it is only minimally complete for correct selection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, and the description mentions no parameters at all. It does not explain the required person1/person2 objects, the optional lang/compact controls, or the houseSystem/nodeType choices beyond what the schema already provides, leaving a compensation gap for the uncovered parameter surface.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Calculate complete synastry (relationship compatibility) between two natal charts using Western tropical astrology.' It is clear what the tool computes, but it does not distinguish itself from sibling tools like post_astrology_compatibility_score or post_astrology_composite_chart, which likely overlap in relationship-compatibility scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives marketing-oriented use cases ('Perfect for dating apps, matrimonial sites...') but no operational guidance about when an agent should call this tool versus sibling compatibility or chart tools. There are no exclusions, prerequisites, or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_transit_aspectsTransit Aspects - Detailed transit-to-natal aspect analysis with interpretationsARead-onlyInspect
Calculate all transit-to-natal aspects with detailed interpretations, strength ratings, and timing guidance. Compares current (or future) planetary positions against your natal chart to identify active transits. Returns aspect type, orb, applying/separating status, narrative interpretation, impact rating, and practical guidance for each transit. Like /astrology/transits with a natalChart, returns summary, timing, impact, guidance, and keywords for each aspect. Adds planet, aspect-type, and minStrength filtering plus summary.strongest and summary.byType rollups. Transit aspects API, transit-to-natal analysis, predictive astrology, personalized transit forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| planets | No | Filter to specific transiting planets. Omit to include all planets. Useful for focusing on slow-moving outer planet transits (Saturn, Jupiter, Pluto). | |
| natalChart | Yes | Natal chart birth details (date, time, location, timezone). Used to calculate natal planetary positions that transits are compared against. | |
| aspectTypes | No | Filter to specific aspect types (conjunction, opposition, trine, square, sextile, etc.). Omit to include all aspect types. | |
| houseSystem | No | House system used to divide the natal chart into 12 houses. Every house number in the response is read against these natal cusps, for the natal bodies and the transiting bodies alike. Placidus (default) is time sensitive and the most widely used in Western astrology. Whole Sign assigns one sign per house. Equal divides into 30 degree segments from the Ascendant. Koch emphasizes higher latitudes. Quadrant systems fall back to Whole Sign above the polar circle. | placidus |
| minStrength | No | Minimum aspect strength threshold (0-100). Higher values return only tighter, more potent aspects. Useful for filtering out wide-orb aspects. | |
| transitDate | No | Transit date in YYYY-MM-DD format. Defaults to current date if omitted. Use future dates for predictive transit analysis. | |
| transitTime | No | Transit time in HH:MM:SS format, read on the clock of the natal chart timezone at the transit date (an IANA zone takes the offset in force on that date, daylight saving included). Defaults to 12:00:00 (noon) if omitted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| houses | Yes | |
| aspects | Yes | |
| summary | Yes | |
| ascendant | Yes | |
| houseSystem | Yes | |
| transitDate | Yes | |
| natalPlanets | Yes | |
| transitPlanets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a safe, read-only operation, so the bar is lower; the description still adds real context by enumerating the per-aspect outputs (aspect type, orb, applying/separating status, narrative interpretation, impact rating, practical guidance) and the summary rollups. It does not mention auth, rate limits, or cost despite being a POST compute-heavy endpoint, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The first three sentences are information-dense and front-loaded, but the closing string "Transit aspects API, transit-to-natal analysis, predictive astrology, personalized transit forecast" is keyword stuffing that adds no selection signal. The middle sentence partly duplicates the return-value sentence immediately before it (summary, timing, impact, guidance listed twice).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 100% schema coverage, an output schema, and read-only annotations, the description needs only to establish purpose and the distinguishing feature set, which it does. The remaining gap is routing: nothing tells the agent why to choose this over post_astrology_transits or post_astrology_transits_monthly, which is a real risk given how many near-identical siblings exist.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all nine parameters in depth, establishing a baseline of 3. The description only restates that planet, aspect-type, and minStrength filtering exist; it adds no format or syntax detail beyond what the schema provides, so it neither compensates nor detracts.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ("Calculate all transit-to-natal aspects") and then scopes it precisely: it explains that it compares current or future planetary positions against a natal chart, and that it adds planet/aspect-type/minStrength filtering plus summary.strongest and byType rollups on top of the base transits behavior. That contrast is enough to separate it from post_astrology_transits and post_astrology_aspects without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied through the "Like /astrology/transits with a natalChart... Adds filtering" framing and the parenthetical "(or future)" positions. There is no explicit when-to-use or when-not-to-use statement picking between this tool, post_astrology_transits, and post_astrology_transits_monthly, so the agent must infer the choice from feature differences.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_transitsCalculate planetary transits - Current transits with natal chart comparisonARead-onlyInspect
Calculate current or future planetary transits (positions of all bodies now). Optionally compare transits to natal chart to find transit-to-natal aspects. Returns all 14 celestial bodies (the 10 classical planets, the lunar nodes, Chiron, and Black Moon Lilith) with signs, degrees, and speeds. When natal chart provided, includes transit aspects (transiting Sun conjunct natal Mars, etc.) with orbs and applying/separating status. Perfect for daily transit forecasts, aspect alerts, and personalized transit reports.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Transit date in YYYY-MM-DD format (defaults to current date) | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | No | Transit time in HH:MM:SS format (defaults to current time) | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | No | Transit timezone: decimal hours from UTC OR IANA name (e.g. "America/New_York"). IANA resolved to the DST-correct offset for the transit date. Defaults to 0 (UTC). | |
| natalChart | No | Optional natal chart data to compare transits against |
Output Schema
| Name | Required | Description |
|---|---|---|
| summary | No | |
| timezone | Yes | |
| transitDate | Yes | |
| transitTime | Yes | |
| transitAspects | No | |
| transitPlanets | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered by structured data. The description adds conditional behavior ('when natal chart provided, includes transit aspects with orbs and applying/separating status') and the body set returned, but since an output schema exists these return details are partly redundant and no auth/rate-limit context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core verb+resource, then output contents, then the conditional natal-chart behavior, then use cases. Mostly earns its place, though the enumeration of the 14 celestial bodies is slightly verbose given the output schema already lists them.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given read-only annotations plus a full output schema and 100% schema coverage, the description is complete enough to invoke correctly: it clarifies scope (all bodies), the optional natal comparison, and the aspect output. Only the sibling differentiation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (date, time, timezone, lang, nodeType, compact, natalChart all documented in-schema), so the baseline is 3. The description adds no further parameter meaning, wording, or format details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Calculate current or future planetary transits') and names the optional natal-chart comparison, so the agent knows exactly what the tool produces. However, it does not distinguish itself from close siblings like post_astrology_transit_aspects (aspect-only) or post_astrology_transits_monthly (date-range variant), which is the main ambiguity it leaves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It offers scenario hints ('Perfect for daily transit forecasts, aspect alerts, and personalized transit reports'), which imply when the tool is useful, but gives no explicit when-to-use vs alternatives guidance and no exclusions against the many transit/aspect siblings. Usage is implied rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_astrology_transits_monthlyMonthly Transits - Tropical sign ingresses for an entire monthARead-onlyInspect
Get every tropical sign change for a given month, for all 14 Western bodies: the Sun through Pluto, both lunar nodes, Chiron and Black Moon Lilith. Returns the starting sign of each body on the first of the month and then each ingress with its exact date and time in your timezone. Omit year and month to get the month in progress, so a published transit calendar stays current without a redeploy. Essential for transit calendars, monthly forecast copy, retrograde and ingress tracking, and newsletter automation. Monthly transit API, planetary ingress calendar, sign change dates, tropical transit table. Verified against NASA JPL Horizons, with the four cardinal ingresses cross-checked against published equinox and solstice times.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | No | Year for the monthly transit table (1551 to 2649). Defaults to the current year (UTC). | |
| month | No | Month number (1-12). Defaults to the current month (UTC). | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| nodeType | No | Lunar node convention. "mean" is the smoothed average node, which always moves retrograde; "true" is the osculating node, which tracks the real perturbed node, oscillates up to about 1.5 degrees either side of the mean on a 173-day cycle, and can briefly turn direct. Neither is more correct and they almost always fall in the same sign. Applies to the North and South Node. True is the osculating node and the default, because it is what most Western chart software reports; mean is the smoothed node preferred by several evolutionary schools, so pass "mean" to match one. Nothing else in the chart changes, and the two agree on the sign except when the node sits within about 1.8 degrees of a cusp. Defaults to "true". | true |
| timezone | No | Timezone: an IANA name (e.g. "America/New_York", "Europe/London", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Ingress dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC). |
Output Schema
| Name | Required | Description |
|---|---|---|
| year | Yes | |
| month | Yes | |
| timezone | Yes | |
| transitEvents | Yes | |
| startingPositions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish a safe read (readOnlyHint=true, destructiveHint=false), and the description adds real behavior beyond that: timezone offset is resolved once at window start and applied to every returned time, omission of year/month yields the live month, and results are verified against NASA JPL Horizons with cardinal ingresses cross-checked. It does not cover response size, pagination, or failure modes, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is front-loaded and efficient, but the trailing line 'Monthly transit API, planetary ingress calendar, sign change dates, tropical transit table' is keyword padding that conveys no operational meaning, and the JPL verification sentence is trust marketing rather than call guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-required-parameter tool with an output schema already present, the description covers everything an agent needs: scope of bodies, ingress payload, current-month default behavior, timezone handling, and data provenance. Return values are explained even though the output schema would have sufficed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, including an unusually detailed nodeType explanation and the compact shape, so the schema already carries parameter semantics. The description only restates a few of these (timezone, omitted year/month), adding little beyond structured data; the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource: 'Get every tropical sign change for a given month, for all 14 Western bodies,' and enumerates the bodies plus the exact payload (starting sign on the first, then each ingress with date/time). This implicitly separates it from positions-oriented siblings like planets_monthly and aspects_monthly, but it never names or contrasts an alternative tool, so sibling routing is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete use cases ('transit calendars, monthly forecast copy, retrograde and ingress tracking, and newsletter automation') and a useful operational condition: omit year and month to get the month in progress so a published calendar stays current. It stops short of saying when NOT to use it or which sibling to pick instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
26 tool updates
- Changed
post_astrology_arabic_lots2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_aspect_patterns2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_aspects2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_aspects_monthly1 field changed- changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_asteroids2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_astrocartography2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_compatibility_score3 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "person1": { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - }, - "person2": { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } - } -]New value: +[ + { + "person1": { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + }, + "person2": { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } + } +] - changed
Input schema / properties / person1 / properties / timezone / examplePrevious value: --5New value: +"America/New_York" - changed
Input schema / properties / person2 / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_composite_chart3 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "person1": { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - }, - "person2": { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } - } -]New value: +[ + { + "person1": { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + }, + "person2": { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } + } +] - changed
Input schema / properties / person1 / properties / timezone / examplePrevious value: --5New value: +"America/New_York" - changed
Input schema / properties / person2 / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_ecliptic_crossings1 field changed- changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_fixed_stars2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_houses2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_lilith2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_local_space2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_lunar_return2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "birthDate": "1990-07-15", - "birthTime": "14:30:00", - "latitude": 40.7128, - "longitude": -74.006, - "returnDate": "2026-02-12", - "timezone": -5 - } -]New value: +[ + { + "birthDate": "1990-07-15", + "birthTime": "14:30:00", + "latitude": 40.7128, + "longitude": -74.006, + "returnDate": "2026-02-12", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_natal_chart2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_parallels_monthly1 field changed- changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_planetary_returns2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "approximateDate": "2026-08-15", - "birthDate": "1990-07-15", - "birthTime": "14:30:00", - "latitude": 40.7128, - "longitude": -74.006, - "planet": "Jupiter", - "timezone": -5 - } -]New value: +[ + { + "approximateDate": "2026-08-15", + "birthDate": "1990-07-15", + "birthTime": "14:30:00", + "latitude": 40.7128, + "longitude": -74.006, + "planet": "Jupiter", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_planets2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "2025-12-18", - "latitude": 40.7128, - "longitude": -74.006, - "time": "12:00:00", - "timezone": -5 - } -]New value: +[ + { + "date": "2025-12-18", + "latitude": 40.7128, + "longitude": -74.006, + "time": "12:00:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_profections2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "targetDate": "2025-08-04", - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "targetDate": "2025-08-04", + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_progressions2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "targetDate": "2025-07-15", - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "targetDate": "2025-07-15", + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_solar_arc2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "targetDate": "2025-07-15", - "time": "14:30:00", - "timezone": -5 - } -]New value: +[ + { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "targetDate": "2025-07-15", + "time": "14:30:00", + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_solar_return2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "birthDate": "1990-07-15", - "birthTime": "14:30:00", - "latitude": 40.7128, - "longitude": -74.006, - "returnYear": 2026, - "timezone": -5 - } -]New value: +[ + { + "birthDate": "1990-07-15", + "birthTime": "14:30:00", + "latitude": 40.7128, + "longitude": -74.006, + "returnYear": 2026, + "timezone": "America/New_York" + } +] - changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_synastry3 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "person1": { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - }, - "person2": { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } - } -]New value: +[ + { + "person1": { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + }, + "person2": { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } + } +] - changed
Input schema / properties / person1 / properties / timezone / examplePrevious value: --5New value: +"America/New_York" - changed
Input schema / properties / person2 / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_transit_aspects2 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "natalChart": { - "date": "1990-07-15", - "latitude": 40.7128, - "longitude": -74.006, - "time": "14:30:00", - "timezone": -5 - } - } -]New value: +[ + { + "natalChart": { + "date": "1990-07-15", + "latitude": 40.7128, + "longitude": -74.006, + "time": "14:30:00", + "timezone": "America/New_York" + } + } +] - changed
Input schema / properties / natalChart / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_transits1 field changed- changed
Input schema / properties / natalChart / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
- Changed
post_astrology_transits_monthly1 field changed- changed
Input schema / properties / timezone / examplePrevious value: --5New value: +"America/New_York"
1 tool update
- Changed
post_astrology_transit_aspects1 field changed- changed
Input schema / properties / transitTime / descriptionPrevious value: -"Transit time in HH:MM:SS format. Defaults to 12:00:00 (noon) if omitted."New value: +"Transit time in HH:MM:SS format, read on the clock of the natal chart timezone at the transit date (an IANA zone takes the offset in force on that date, daylight saving included). Defaults to 12:00:00 (noon) if omitted."
7 tool updates
- Changed
get_astrology_moon_phase_calendar_year_month3 fields changed- changed
Input schema / properties / year / descriptionPrevious value: -"Calendar year (1900-2100)."New value: +"Calendar year, 1551 to 2649." - changed
Input schema / properties / year / maximumPrevious value: -2100New value: +2649 - changed
Input schema / properties / year / minimumPrevious value: -1900New value: +1551
- Changed
post_astrology_aspects_monthly3 fields changed- changed
Input schema / properties / year / descriptionPrevious value: -"Year for the aspect calendar (1900-2100). Defaults to the current year (UTC)."New value: +"Year for the aspect calendar (1551 to 2649). Defaults to the current year (UTC)." - changed
Input schema / properties / year / maximumPrevious value: -2100New value: +2649 - changed
Input schema / properties / year / minimumPrevious value: -1900New value: +1551
- Changed
post_astrology_ecliptic_crossings3 fields changed- changed
Input schema / properties / year / descriptionPrevious value: -"Year to scan for node passages (1900-2100)."New value: +"Year to scan for node passages (1551 to 2649)." - changed
Input schema / properties / year / maximumPrevious value: -2100New value: +2649 - changed
Input schema / properties / year / minimumPrevious value: -1900New value: +1551
- Changed
post_astrology_parallels_monthly3 fields changed- changed
Input schema / properties / year / descriptionPrevious value: -"Year for the declination calendar (1900-2100). Defaults to the current year (UTC)."New value: +"Year for the declination calendar (1551 to 2649). Defaults to the current year (UTC)." - changed
Input schema / properties / year / maximumPrevious value: -2100New value: +2649 - changed
Input schema / properties / year / minimumPrevious value: -1900New value: +1551
- Changed
post_astrology_planets_monthly3 fields changed- changed
Input schema / properties / year / descriptionPrevious value: -"Year for the monthly ephemeris (1900-2100). Defaults to the current year (UTC)."New value: +"Year for the monthly ephemeris (1551 to 2649). Defaults to the current year (UTC)." - changed
Input schema / properties / year / maximumPrevious value: -2100New value: +2649 - changed
Input schema / properties / year / minimumPrevious value: -1900New value: +1551
- Changed
post_astrology_transits1 field changed- changed
Input schema / properties / natalChart / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected. Calculations that read planetary positions support 1550-01-01 to 2650-01-25; outside that span they answer 400 with code date_out_of_range."New value: +"Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected. Calculations that read planetary positions support 1550-01-02 to 2650-01-22; outside that span they answer 400 with code date_out_of_range, and a calculation that reads a window around the date (a sunrise search, a run of days) may answer the same 400 for a date within a few days of either end."
- Changed
post_astrology_transits_monthly3 fields changed- changed
Input schema / properties / year / descriptionPrevious value: -"Year for the monthly transit table (1900-2100). Defaults to the current year (UTC)."New value: +"Year for the monthly transit table (1551 to 2649). Defaults to the current year (UTC)." - changed
Input schema / properties / year / maximumPrevious value: -2100New value: +2649 - changed
Input schema / properties / year / minimumPrevious value: -1900New value: +1551
2 tool updates
- Changed
post_astrology_planetary_returns1 field changed- changed
Input schema / properties / approximateDate / descriptionPrevious value: -"Approximate date near the expected planetary return (YYYY-MM-DD). Provide a date within the expected return window. The algorithm searches from this starting point."New value: +"Approximate date near the expected planetary return (YYYY-MM-DD). The return nearest this date is returned, so a date off by months still lands on a genuine return; during a retrograde loop the planet crosses its natal degree up to three times and the crossing nearest the date is the one returned."
- Changed
post_astrology_transits1 field changed- changed
Input schema / properties / natalChart / properties / date / descriptionPrevious value: -"Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected."New value: +"Date in YYYY-MM-DD format. A single-digit month or day is accepted and zero-padded (2026-3-5 becomes 2026-03-05). Impossible calendar dates are rejected. Calculations that read planetary positions support 1550-01-01 to 2650-01-25; outside that span they answer 400 with code date_out_of_range."
1 tool update
- Changed
post_astrology_fixed_stars3 fields changed- added
Input schema / properties / orb / defaultAdded value: +1 - added
Input schema / properties / orb / maximumAdded value: +3 - added
Input schema / properties / orb / minimumAdded value: +0
19 tool updates
- Changed
post_astrology_arabic_lots1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_aspect_patterns1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_aspects1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone offset from UTC in decimal hours (NOT minutes format). Examples: New York EST = -5, India IST = 5.5 (NOT 5:30), Tokyo JST = 9. IMPORTANT: Use decimal format (5.5, not 5:30)."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_aspects_monthly1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone offset from UTC in hours. Event dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC)."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Event dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC)."
- Changed
post_astrology_asteroids1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_astrocartography1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_compatibility_score2 fields changed- changed
Input schema / properties / person1 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time." - changed
Input schema / properties / person2 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_composite_chart2 fields changed- changed
Input schema / properties / person1 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time." - changed
Input schema / properties / person2 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_ecliptic_crossings1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone offset from UTC in hours. Crossing dates and times are reported in this zone. Defaults to 0 (UTC)."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Crossing dates and times are reported in this zone. Defaults to 0 (UTC)."
- Changed
post_astrology_fixed_stars1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_lilith1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_natal_chart1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_parallels_monthly1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone offset from UTC in hours. Event dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC)."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Event dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC)."
- Changed
post_astrology_profections1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_progressions1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_solar_arc1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_synastry2 fields changed- changed
Input schema / properties / person1 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time." - changed
Input schema / properties / person2 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_transit_aspects1 field changed- changed
Input schema / properties / natalChart / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved to the offset in force at the given date and time."
- Changed
post_astrology_transits_monthly1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone offset from UTC in hours. Ingress dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC)."New value: +"Timezone: an IANA name (e.g. \"America/New_York\", \"Europe/London\", or `cities[0].timezone` from /location/search) or decimal hours from UTC (e.g. -5 for EST, 5.5 for IST). An IANA name is resolved once, at the start of the window, and that offset applies to every time in the response. Ingress dates and times are reported in this zone, which is what makes a published calendar read correctly for its audience. Defaults to 0 (UTC)."
1 tool update
- Changed
post_astrology_fixed_stars4 fields changed- removed
Input schema / properties / orb / defaultRemoved value: -1 - removed
Input schema / properties / orb / maximumRemoved value: -3 - removed
Input schema / properties / orb / minimumRemoved value: -0 - changed
Input schema / properties / orb / typePrevious value: -[ - "number", - "null" -]New value: +"number"
37 tool updates
- Changed
get_astrology_horoscope_sign_daily1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "activeTransits": { + "items": { + "type": "string" + }, + "type": "array" + }, + "advice": { + "type": "string" + }, + "career": { + "type": "string" + }, + "column": { + "type": "string" + }, + "compatibleSigns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "date": { + "type": "string" + }, + "energyRating": { + "maximum": 10, + "minimum": 1, + "type": "number" + }, + "events": { + "items": { + "properties": { + "aspect": { + "type": "string" + }, + "at": { + "type": "string" + }, + "bodies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + }, + "through": { + "type": "string" + }, + "type": { + "enum": [ + "aspect", + "sign-ingress", + "retrograde-station", + "lunar-phase", + "eclipse", + "solar-season" + ], + "type": "string" + } + }, + "required": [ + "type", + "at", + "bodies", + "house" + ], + "type": "object" + }, + "type": "array" + }, + "finance": { + "type": "string" + }, + "health": { + "type": "string" + }, + "love": { + "type": "string" + }, + "luckyColor": { + "type": "string" + }, + "luckyNumber": { + "type": "number" + }, + "moonPhase": { + "type": "string" + }, + "moonSign": { + "type": "string" + }, + "overview": { + "type": "string" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "date", + "overview", + "love", + "career", + "health", + "finance", + "advice", + "column", + "events", + "luckyNumber", + "luckyColor", + "compatibleSigns", + "activeTransits", + "moonSign", + "moonPhase", + "energyRating" + ], + "type": "object" +}
- Changed
get_astrology_horoscope_sign_monthly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "advice": { + "type": "string" + }, + "career": { + "type": "string" + }, + "column": { + "type": "string" + }, + "compatibleSigns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "events": { + "items": { + "properties": { + "aspect": { + "type": "string" + }, + "at": { + "type": "string" + }, + "bodies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + }, + "through": { + "type": "string" + }, + "type": { + "enum": [ + "aspect", + "sign-ingress", + "retrograde-station", + "lunar-phase", + "eclipse", + "solar-season" + ], + "type": "string" + } + }, + "required": [ + "type", + "at", + "bodies", + "house" + ], + "type": "object" + }, + "type": "array" + }, + "finance": { + "type": "string" + }, + "health": { + "type": "string" + }, + "keyDates": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "event": { + "type": "string" + } + }, + "required": [ + "date", + "event" + ], + "type": "object" + }, + "type": "array" + }, + "love": { + "type": "string" + }, + "luckyColor": { + "type": "string" + }, + "luckyNumbers": { + "items": { + "type": "number" + }, + "type": "array" + }, + "month": { + "type": "string" + }, + "overview": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "weekByWeek": { + "items": { + "properties": { + "advice": { + "type": "string" + }, + "focus": { + "type": "string" + }, + "week": { + "type": "number" + } + }, + "required": [ + "week", + "focus", + "advice" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "sign", + "month", + "overview", + "love", + "career", + "health", + "finance", + "advice", + "column", + "events", + "weekByWeek", + "keyDates", + "luckyNumbers", + "luckyColor", + "compatibleSigns" + ], + "type": "object" +}
- Changed
get_astrology_horoscope_sign_weekly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "advice": { + "type": "string" + }, + "career": { + "type": "string" + }, + "column": { + "type": "string" + }, + "compatibleSigns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "events": { + "items": { + "properties": { + "aspect": { + "type": "string" + }, + "at": { + "type": "string" + }, + "bodies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + }, + "through": { + "type": "string" + }, + "type": { + "enum": [ + "aspect", + "sign-ingress", + "retrograde-station", + "lunar-phase", + "eclipse", + "solar-season" + ], + "type": "string" + } + }, + "required": [ + "type", + "at", + "bodies", + "house" + ], + "type": "object" + }, + "type": "array" + }, + "finance": { + "type": "string" + }, + "health": { + "type": "string" + }, + "love": { + "type": "string" + }, + "luckyDays": { + "items": { + "type": "string" + }, + "type": "array" + }, + "luckyNumbers": { + "items": { + "type": "number" + }, + "type": "array" + }, + "overview": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "week": { + "type": "string" + } + }, + "required": [ + "sign", + "week", + "overview", + "love", + "career", + "health", + "finance", + "advice", + "column", + "events", + "luckyDays", + "luckyNumbers", + "compatibleSigns" + ], + "type": "object" +}
- Changed
get_astrology_horoscope_sign_yearly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "advice": { + "type": "string" + }, + "bestPeriods": { + "properties": { + "career": { + "properties": { + "count": { + "type": "integer" + }, + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "count" + ], + "type": "object" + }, + "finance": { + "properties": { + "count": { + "type": "integer" + }, + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "count" + ], + "type": "object" + }, + "health": { + "properties": { + "count": { + "type": "integer" + }, + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "count" + ], + "type": "object" + }, + "love": { + "properties": { + "count": { + "type": "integer" + }, + "from": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "count" + ], + "type": "object" + } + }, + "type": "object" + }, + "career": { + "type": "string" + }, + "column": { + "type": "string" + }, + "compatibleSigns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "eclipses": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "kind": { + "type": "string" + }, + "theme": { + "type": "string" + } + }, + "required": [ + "date", + "kind", + "house", + "theme" + ], + "type": "object" + }, + "type": "array" + }, + "events": { + "items": { + "properties": { + "aspect": { + "type": "string" + }, + "at": { + "type": "string" + }, + "bodies": { + "items": { + "type": "string" + }, + "type": "array" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + }, + "through": { + "type": "string" + }, + "type": { + "enum": [ + "aspect", + "sign-ingress", + "retrograde-station", + "lunar-phase", + "eclipse", + "solar-season" + ], + "type": "string" + } + }, + "required": [ + "type", + "at", + "bodies", + "house" + ], + "type": "object" + }, + "type": "array" + }, + "finance": { + "type": "string" + }, + "health": { + "type": "string" + }, + "keyPeriods": { + "items": { + "properties": { + "body": { + "type": "string" + }, + "focus": { + "type": "string" + }, + "from": { + "type": "string" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "to": { + "type": "string" + } + }, + "required": [ + "from", + "to", + "body", + "house", + "focus" + ], + "type": "object" + }, + "type": "array" + }, + "love": { + "type": "string" + }, + "luckyColor": { + "type": "string" + }, + "luckyNumbers": { + "items": { + "type": "number" + }, + "type": "array" + }, + "overview": { + "type": "string" + }, + "retrogrades": { + "items": { + "properties": { + "body": { + "type": "string" + }, + "date": { + "type": "string" + }, + "direction": { + "type": "string" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "theme": { + "type": "string" + } + }, + "required": [ + "date", + "body", + "direction", + "house", + "theme" + ], + "type": "object" + }, + "type": "array" + }, + "sign": { + "type": "string" + }, + "themes": { + "items": { + "properties": { + "body": { + "type": "string" + }, + "from": { + "type": "string" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + }, + "theme": { + "type": "string" + }, + "to": { + "type": "string" + } + }, + "required": [ + "body", + "sign", + "house", + "theme", + "from", + "to" + ], + "type": "object" + }, + "type": "array" + }, + "year": { + "type": "integer" + } + }, + "required": [ + "sign", + "year", + "overview", + "love", + "career", + "health", + "finance", + "advice", + "column", + "events", + "themes", + "eclipses", + "retrogrades", + "keyPeriods", + "bestPeriods", + "luckyNumbers", + "luckyColor", + "compatibleSigns" + ], + "type": "object" +}
- Changed
get_astrology_moon_phase_calendar_year_month1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "calendar": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "illumination": { + "type": "number" + }, + "phase": { + "type": "string" + } + }, + "required": [ + "date", + "phase", + "illumination" + ], + "type": "object" + }, + "type": "array" + }, + "month": { + "type": "number" + }, + "monthName": { + "type": "string" + }, + "year": { + "type": "number" + } + }, + "required": [ + "year", + "month", + "monthName", + "calendar" + ], + "type": "object" +}
- Changed
get_astrology_moon_phase_current1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "age": { + "type": "number" + }, + "date": { + "type": "string" + }, + "degree": { + "type": "number" + }, + "distance": { + "type": "number" + }, + "illumination": { + "type": "number" + }, + "meaning": { + "properties": { + "description": { + "type": "string" + }, + "energy": { + "enum": [ + "waxing", + "waning", + "new", + "full" + ], + "type": "string" + }, + "illumination": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "symbol": { + "type": "string" + } + }, + "required": [ + "name", + "symbol", + "description", + "keywords", + "energy", + "illumination" + ], + "type": "object" + }, + "phase": { + "type": "string" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "date", + "phase", + "illumination", + "age", + "sign", + "degree", + "distance" + ], + "type": "object" +}
- Changed
get_astrology_moon_phase_upcoming1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "phases": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "phase": { + "type": "string" + } + }, + "required": [ + "date", + "phase" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "phases" + ], + "type": "object" +}
- Changed
get_astrology_planet_meanings_id1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "category": { + "type": "string" + }, + "description": { + "properties": { + "long": { + "type": "string" + }, + "short": { + "type": "string" + } + }, + "required": [ + "short", + "long" + ], + "type": "object" + }, + "detriment": { + "type": "string" + }, + "exaltation": { + "type": "string" + }, + "exultation": { + "type": "string" + }, + "fall": { + "type": "string" + }, + "id": { + "type": "string" + }, + "keywords": { + "properties": { + "negative": { + "items": { + "type": "string" + }, + "type": "array" + }, + "positive": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "positive", + "negative" + ], + "type": "object" + }, + "name": { + "type": "string" + }, + "orbit": { + "type": "string" + }, + "retrograde": { + "type": "boolean" + }, + "rulership": { + "type": "string" + }, + "symbol": { + "type": "string" + }, + "tagline": { + "type": "string" + }, + "temperature": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "symbol", + "tagline", + "temperature", + "orbit", + "keywords", + "description" + ], + "type": "object" +}
- Changed
get_astrology_signs_id1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "challenges": { + "type": "string" + }, + "compatibleSigns": { + "items": { + "type": "string" + }, + "type": "array" + }, + "dates": { + "properties": { + "end": { + "type": "string" + }, + "start": { + "type": "string" + } + }, + "required": [ + "start", + "end" + ], + "type": "object" + }, + "description": { + "properties": { + "long": { + "type": "string" + }, + "short": { + "type": "string" + } + }, + "required": [ + "short", + "long" + ], + "type": "object" + }, + "element": { + "enum": [ + "fire", + "earth", + "air", + "water" + ], + "type": "string" + }, + "elementLocalized": { + "type": "string" + }, + "famous": { + "items": { + "type": "string" + }, + "type": "array" + }, + "gifts": { + "type": "string" + }, + "id": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "modality": { + "enum": [ + "cardinal", + "fixed", + "mutable" + ], + "type": "string" + }, + "modalityLocalized": { + "type": "string" + }, + "motto": { + "type": "string" + }, + "name": { + "type": "string" + }, + "rulingPlanet": { + "type": "string" + }, + "rulingPlanetLocalized": { + "type": "string" + }, + "strengths": { + "items": { + "type": "string" + }, + "type": "array" + }, + "symbol": { + "type": "string" + }, + "symbolName": { + "type": "string" + }, + "weapon": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "symbolName", + "element", + "modality", + "rulingPlanet", + "dates", + "keywords", + "description", + "compatibleSigns" + ], + "type": "object" +}
- Changed
post_astrology_arabic_lots1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "lots": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "formula": { + "type": "string" + }, + "id": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "longitude", + "sign", + "degree", + "formula", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "sect": { + "enum": [ + "day", + "night" + ], + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "birthDetails", + "sect", + "lots", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_aspect_patterns1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "options": { + "properties": { + "include": { + "items": { + "enum": [ + "chiron", + "northNode" + ], + "type": "string" + }, + "type": "array" + }, + "strictOrbs": { + "type": "boolean" + } + }, + "required": [ + "strictOrbs", + "include" + ], + "type": "object" + }, + "patterns": { + "items": { + "properties": { + "apex": { + "type": "string" + }, + "dissociate": { + "type": "boolean" + }, + "element": { + "enum": [ + "fire", + "earth", + "air", + "water" + ], + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "interpretationKey": { + "type": "string" + }, + "interpretationVars": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "kind": { + "enum": [ + "GRAND_TRINE", + "KITE", + "T_SQUARE", + "GRAND_CROSS", + "YOD", + "MYSTIC_RECTANGLE", + "STELLIUM" + ], + "type": "string" + }, + "modality": { + "enum": [ + "cardinal", + "fixed", + "mutable" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "planets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tightness": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "kind", + "name", + "planets", + "tightness", + "interpretation", + "interpretationKey", + "interpretationVars" + ], + "type": "object" + }, + "type": "array" + }, + "total": { + "type": "number" + } + }, + "required": [ + "patterns", + "total", + "options" + ], + "type": "object" +}
- Changed
post_astrology_aspects1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "aspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "meaning": { + "properties": { + "description": { + "properties": { + "long": { + "type": "string" + }, + "short": { + "type": "string" + } + }, + "required": [ + "short", + "long" + ], + "type": "object" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "nature": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "keywords", + "nature" + ], + "type": "object" + }, + "orb": { + "type": "number" + }, + "planet1": { + "type": "string" + }, + "planet1Localized": { + "type": "string" + }, + "planet2": { + "type": "string" + }, + "planet2Localized": { + "type": "string" + }, + "strength": { + "type": "number" + }, + "type": { + "type": "string" + }, + "typeLocalized": { + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "aspectsFound": { + "type": "number" + }, + "date": { + "type": "string" + }, + "patterns": { + "items": { + "properties": { + "apex": { + "type": "string" + }, + "dissociate": { + "type": "boolean" + }, + "element": { + "enum": [ + "fire", + "earth", + "air", + "water" + ], + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "interpretationKey": { + "type": "string" + }, + "interpretationVars": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "kind": { + "enum": [ + "GRAND_TRINE", + "KITE", + "T_SQUARE", + "GRAND_CROSS", + "YOD", + "MYSTIC_RECTANGLE", + "STELLIUM" + ], + "type": "string" + }, + "modality": { + "enum": [ + "cardinal", + "fixed", + "mutable" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "planets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tightness": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "kind", + "name", + "planets", + "tightness", + "interpretation", + "interpretationKey", + "interpretationVars" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "properties": { + "byType": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + "challenging": { + "type": "number" + }, + "harmonious": { + "type": "number" + }, + "neutral": { + "type": "number" + }, + "totalAspects": { + "type": "number" + } + }, + "required": [ + "totalAspects", + "harmonious", + "challenging", + "neutral", + "byType" + ], + "type": "object" + }, + "time": { + "type": "string" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "date", + "time", + "timezone", + "aspectsFound", + "aspects", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_aspects_monthly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "events": { + "items": { + "properties": { + "aspect": { + "type": "string" + }, + "aspectLocalized": { + "type": "string" + }, + "date": { + "type": "string" + }, + "datetime": { + "type": "string" + }, + "nature": { + "type": "string" + }, + "natureLocalized": { + "type": "string" + }, + "orb": { + "type": "number" + }, + "planet1": { + "type": "string" + }, + "planet1Localized": { + "type": "string" + }, + "planet1Longitude": { + "type": "number" + }, + "planet2": { + "type": "string" + }, + "planet2Localized": { + "type": "string" + }, + "planet2Longitude": { + "type": "number" + }, + "separation": { + "type": "number" + }, + "time": { + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "aspect", + "nature", + "date", + "time", + "datetime", + "orb", + "separation", + "planet1Longitude", + "planet2Longitude" + ], + "type": "object" + }, + "type": "array" + }, + "month": { + "type": "number" + }, + "timezone": { + "type": "number" + }, + "year": { + "type": "number" + } + }, + "required": [ + "year", + "month", + "timezone", + "events" + ], + "type": "object" +}
- Changed
post_astrology_asteroids1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "asteroids": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "interpretation": { + "type": "string" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "houseSystem": { + "enum": [ + "placidus", + "whole-sign", + "equal", + "koch" + ], + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "birthDetails", + "houseSystem", + "asteroids", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_astrocartography1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "lines": { + "items": { + "properties": { + "ascendant": { + "properties": { + "circumpolarBeyond": { + "type": [ + "number", + "null" + ] + }, + "interpretation": { + "type": "string" + }, + "points": { + "items": { + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "points", + "circumpolarBeyond", + "interpretation" + ], + "type": "object" + }, + "declination": { + "type": "number" + }, + "descendant": { + "properties": { + "circumpolarBeyond": { + "type": [ + "number", + "null" + ] + }, + "interpretation": { + "type": "string" + }, + "points": { + "items": { + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "points", + "circumpolarBeyond", + "interpretation" + ], + "type": "object" + }, + "ic": { + "properties": { + "interpretation": { + "type": "string" + }, + "longitude": { + "type": "number" + } + }, + "required": [ + "longitude", + "interpretation" + ], + "type": "object" + }, + "mc": { + "properties": { + "interpretation": { + "type": "string" + }, + "longitude": { + "type": "number" + } + }, + "required": [ + "longitude", + "interpretation" + ], + "type": "object" + }, + "planet": { + "type": "string" + }, + "planetLocalized": { + "type": "string" + }, + "rightAscension": { + "type": "number" + }, + "symbol": { + "type": "string" + } + }, + "required": [ + "planet", + "rightAscension", + "declination", + "mc", + "ic", + "ascendant", + "descendant" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "birthDetails", + "lines", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_compatibility_score1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "archetype": { + "properties": { + "description": { + "type": "string" + }, + "label": { + "type": "string" + } + }, + "required": [ + "label", + "description" + ], + "type": "object" + }, + "aspectBreakdown": { + "properties": { + "challenging": { + "type": "number" + }, + "harmonious": { + "type": "number" + }, + "neutral": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "harmonious", + "challenging", + "neutral" + ], + "type": "object" + }, + "categories": { + "properties": { + "emotional": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "intellectual": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "physical": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "romantic": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "spiritual": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "romantic", + "emotional", + "intellectual", + "physical", + "spiritual" + ], + "type": "object" + }, + "challenges": { + "items": { + "type": "string" + }, + "type": "array" + }, + "elementBalance": { + "properties": { + "description": { + "type": "string" + }, + "person1": { + "properties": { + "air": { + "type": "number" + }, + "earth": { + "type": "number" + }, + "fire": { + "type": "number" + }, + "water": { + "type": "number" + } + }, + "required": [ + "fire", + "earth", + "air", + "water" + ], + "type": "object" + }, + "person2": { + "properties": { + "air": { + "type": "number" + }, + "earth": { + "type": "number" + }, + "fire": { + "type": "number" + }, + "water": { + "type": "number" + } + }, + "required": [ + "fire", + "earth", + "air", + "water" + ], + "type": "object" + }, + "sharedElement": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "person1", + "person2", + "sharedElement", + "description" + ], + "type": "object" + }, + "interpretation": { + "type": "string" + }, + "keyAspects": { + "items": { + "properties": { + "description": { + "type": "string" + }, + "interpretation": { + "enum": [ + "harmonious", + "challenging", + "neutral" + ], + "type": "string" + }, + "orb": { + "type": "number" + }, + "planet1": { + "type": "string" + }, + "planet2": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "orb", + "interpretation", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "overallScore": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "persons": { + "properties": { + "person1": { + "properties": { + "mars": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "moon": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "sun": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "venus": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + } + }, + "required": [ + "sun", + "moon", + "venus", + "mars" + ], + "type": "object" + }, + "person2": { + "properties": { + "mars": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "moon": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "sun": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "venus": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + } + }, + "required": [ + "sun", + "moon", + "venus", + "mars" + ], + "type": "object" + } + }, + "required": [ + "person1", + "person2" + ], + "type": "object" + }, + "signCompatibility": { + "properties": { + "mars": { + "properties": { + "description": { + "type": "string" + }, + "person1Sign": { + "type": "string" + }, + "person2Sign": { + "type": "string" + } + }, + "required": [ + "person1Sign", + "person2Sign", + "description" + ], + "type": "object" + }, + "moon": { + "properties": { + "description": { + "type": "string" + }, + "person1Sign": { + "type": "string" + }, + "person2Sign": { + "type": "string" + } + }, + "required": [ + "person1Sign", + "person2Sign", + "description" + ], + "type": "object" + }, + "sun": { + "properties": { + "description": { + "type": "string" + }, + "person1Sign": { + "type": "string" + }, + "person2Sign": { + "type": "string" + } + }, + "required": [ + "person1Sign", + "person2Sign", + "description" + ], + "type": "object" + }, + "venus": { + "properties": { + "description": { + "type": "string" + }, + "person1Sign": { + "type": "string" + }, + "person2Sign": { + "type": "string" + } + }, + "required": [ + "person1Sign", + "person2Sign", + "description" + ], + "type": "object" + } + }, + "required": [ + "sun", + "moon", + "venus", + "mars" + ], + "type": "object" + }, + "strengths": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "overallScore", + "categories", + "persons", + "signCompatibility", + "elementBalance", + "archetype", + "strengths", + "challenges", + "summary", + "interpretation", + "aspectBreakdown", + "keyAspects" + ], + "type": "object" +}
- Changed
post_astrology_composite_chart1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "aspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "enum": [ + "harmonious", + "challenging", + "neutral" + ], + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "orb": { + "type": "number" + }, + "planet1": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet2": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "strength": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "CONJUNCTION", + "OPPOSITION", + "TRINE", + "SQUARE", + "SEXTILE", + "SEMI_SEXTILE", + "QUINCUNX", + "SEMI_SQUARE", + "SESQUIQUADRATE" + ], + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "compositeAscendant": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "compositeHouses": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "number": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "number", + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "type": "array" + }, + "compositeMidheaven": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "compositePlanets": { + "items": { + "properties": { + "compositeInterpretation": { + "properties": { + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "relationshipMeaning": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "relationshipMeaning", + "keywords" + ], + "type": "object" + }, + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "sign": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "interpretation": { + "properties": { + "challenges": { + "items": { + "type": "string" + }, + "type": "array" + }, + "strengths": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "strengths", + "challenges" + ], + "type": "object" + }, + "person1": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "person2": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + } + }, + "required": [ + "person1", + "person2", + "compositePlanets", + "compositeHouses", + "compositeAscendant", + "compositeMidheaven", + "aspects", + "interpretation" + ], + "type": "object" +}
- Changed
post_astrology_ecliptic_crossings1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "events": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "datetime": { + "type": "string" + }, + "direction": { + "enum": [ + "ascending", + "descending" + ], + "type": "string" + }, + "longitude": { + "type": "number" + }, + "planet": { + "type": "string" + }, + "planetLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + }, + "time": { + "type": "string" + } + }, + "required": [ + "planet", + "direction", + "date", + "time", + "datetime", + "longitude", + "sign" + ], + "type": "object" + }, + "type": "array" + }, + "timezone": { + "type": "number" + }, + "year": { + "type": "number" + } + }, + "required": [ + "year", + "timezone", + "events" + ], + "type": "object" +}
- Changed
post_astrology_fixed_stars1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "conjunctions": { + "items": { + "properties": { + "interpretation": { + "type": "string" + }, + "orb": { + "type": "number" + }, + "point": { + "type": "string" + }, + "pointLocalized": { + "type": "string" + }, + "star": { + "type": "string" + } + }, + "required": [ + "star", + "point", + "orb", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "orb": { + "type": "number" + }, + "stars": { + "items": { + "properties": { + "conjunctions": { + "items": { + "properties": { + "orb": { + "type": "number" + }, + "point": { + "type": "string" + }, + "pointLocalized": { + "type": "string" + }, + "pointLongitude": { + "type": "number" + } + }, + "required": [ + "point", + "pointLongitude", + "orb" + ], + "type": "object" + }, + "type": "array" + }, + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "id": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "magnitude": { + "type": "number" + }, + "name": { + "type": "string" + }, + "nature": { + "type": "string" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "longitude", + "sign", + "degree", + "magnitude", + "nature", + "keywords", + "conjunctions" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "birthDetails", + "orb", + "stars", + "conjunctions", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_houses1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ascendant": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "comparison": { + "additionalProperties": { + "properties": { + "houses": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "number": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "houses" + ], + "type": "object" + }, + "type": "object" + }, + "date": { + "type": "string" + }, + "houseSystem": { + "type": "string" + }, + "houses": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "number": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "midheaven": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "time": { + "type": "string" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone", + "houseSystem", + "ascendant", + "midheaven", + "houses" + ], + "type": "object" +}
- Changed
post_astrology_lilith1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "houseSystem": { + "enum": [ + "placidus", + "whole-sign", + "equal", + "koch" + ], + "type": "string" + }, + "lilith": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "interpretation": { + "type": "string" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "note": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "speed": { + "type": "number" + }, + "variant": { + "enum": [ + "mean", + "true" + ], + "type": "string" + }, + "variantLocalized": { + "type": "string" + } + }, + "required": [ + "variant", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde", + "interpretation", + "note" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "birthDetails", + "houseSystem", + "lilith", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_local_space1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDetails": { + "properties": { + "date": { + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "time": { + "type": "string" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "bodies": { + "items": { + "properties": { + "aboveHorizon": { + "type": "boolean" + }, + "altitude": { + "type": "number" + }, + "azimuth": { + "type": "number" + }, + "compassDirection": { + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "line": { + "properties": { + "points": { + "items": { + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "points" + ], + "type": "object" + }, + "planet": { + "type": "string" + }, + "planetLocalized": { + "type": "string" + }, + "symbol": { + "type": "string" + } + }, + "required": [ + "planet", + "azimuth", + "altitude", + "compassDirection", + "aboveHorizon", + "line", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "birthDetails", + "bodies", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_lunar_return1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDate": { + "type": "string" + }, + "chart": { + "properties": { + "aspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "enum": [ + "harmonious", + "challenging", + "neutral" + ], + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "orb": { + "type": "number" + }, + "planet1": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet2": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "strength": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "CONJUNCTION", + "OPPOSITION", + "TRINE", + "SQUARE", + "SEXTILE", + "SEMI_SEXTILE", + "QUINCUNX", + "SEMI_SQUARE", + "SESQUIQUADRATE" + ], + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "houseSystem": { + "enum": [ + "placidus", + "whole-sign", + "equal", + "koch" + ], + "type": "string" + }, + "houses": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "number": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + }, + "partOfFortune": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sect": { + "enum": [ + "day", + "night" + ], + "type": "string" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house", + "sect" + ], + "type": "object" + }, + "planets": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "sign": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "vertex": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house" + ], + "type": "object" + } + }, + "required": [ + "birthDetails", + "planets", + "houses", + "houseSystem", + "aspects", + "partOfFortune", + "vertex" + ], + "type": "object" + }, + "interpretation": { + "properties": { + "keyThemes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "purpose": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "purpose", + "keyThemes" + ], + "type": "object" + }, + "location": { + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "lunarReturnDate": { + "type": "string" + }, + "natalMoonPosition": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "longitude", + "sign", + "degree" + ], + "type": "object" + } + }, + "required": [ + "birthDate", + "lunarReturnDate", + "location", + "chart", + "natalMoonPosition", + "interpretation" + ], + "type": "object" +}
- Changed
post_astrology_natal_chart1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ascendant": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "aspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "aspectInterpretation": { + "properties": { + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "keywords" + ], + "type": "object" + }, + "interpretation": { + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "orb": { + "type": "number" + }, + "planet1": { + "type": "string" + }, + "planet1Localized": { + "type": "string" + }, + "planet2": { + "type": "string" + }, + "planet2Localized": { + "type": "string" + }, + "strength": { + "type": "number" + }, + "type": { + "type": "string" + }, + "typeLocalized": { + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation", + "aspectInterpretation" + ], + "type": "object" + }, + "type": "array" + }, + "aspectsInterpretation": { + "properties": { + "challenging": { + "type": "number" + }, + "dominant": { + "type": "string" + }, + "harmonious": { + "type": "number" + }, + "neutral": { + "type": "number" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "dominant", + "harmonious", + "challenging", + "neutral" + ], + "type": "object" + }, + "birthDetails": { + "properties": { + "date": { + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "time": { + "type": "string" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "houseSystem": { + "type": "string" + }, + "houses": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "number": { + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + }, + "midheaven": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "partOfFortune": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sect": { + "enum": [ + "day", + "night" + ], + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house", + "sect" + ], + "type": "object" + }, + "patterns": { + "items": { + "properties": { + "apex": { + "type": "string" + }, + "dissociate": { + "type": "boolean" + }, + "element": { + "enum": [ + "fire", + "earth", + "air", + "water" + ], + "type": "string" + }, + "interpretation": { + "type": "string" + }, + "interpretationKey": { + "type": "string" + }, + "interpretationVars": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "kind": { + "enum": [ + "GRAND_TRINE", + "KITE", + "T_SQUARE", + "GRAND_CROSS", + "YOD", + "MYSTIC_RECTANGLE", + "STELLIUM" + ], + "type": "string" + }, + "modality": { + "enum": [ + "cardinal", + "fixed", + "mutable" + ], + "type": "string" + }, + "name": { + "type": "string" + }, + "planets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "tightness": { + "maximum": 100, + "minimum": 0, + "type": "number" + } + }, + "required": [ + "kind", + "name", + "planets", + "tightness", + "interpretation", + "interpretationKey", + "interpretationVars" + ], + "type": "object" + }, + "type": "array" + }, + "planets": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "dignity": { + "enum": [ + "domicile", + "exaltation", + "detriment", + "fall", + "peregrine" + ], + "type": "string" + }, + "house": { + "type": "number" + }, + "interpretation": { + "properties": { + "detailed": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "detailed", + "keywords" + ], + "type": "object" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "properties": { + "dominantElement": { + "type": "string" + }, + "dominantElementLocalized": { + "type": "string" + }, + "dominantModality": { + "type": "string" + }, + "dominantModalityLocalized": { + "type": "string" + }, + "elementDistribution": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + "modalityDistribution": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + "retrogradePlanets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "retrogradePlanetsLocalized": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "dominantElement", + "dominantModality", + "retrogradePlanets", + "elementDistribution", + "modalityDistribution" + ], + "type": "object" + }, + "vertex": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house" + ], + "type": "object" + } + }, + "required": [ + "birthDetails", + "planets", + "houses", + "houseSystem", + "aspects", + "aspectsInterpretation", + "ascendant", + "midheaven", + "partOfFortune", + "vertex", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_parallels_monthly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "events": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "datetime": { + "type": "string" + }, + "declination1": { + "type": "number" + }, + "declination2": { + "type": "number" + }, + "orb": { + "type": "number" + }, + "planet1": { + "type": "string" + }, + "planet1Localized": { + "type": "string" + }, + "planet2": { + "type": "string" + }, + "planet2Localized": { + "type": "string" + }, + "time": { + "type": "string" + }, + "type": { + "enum": [ + "parallel", + "contraparallel" + ], + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "date", + "time", + "datetime", + "orb", + "declination1", + "declination2" + ], + "type": "object" + }, + "type": "array" + }, + "month": { + "type": "number" + }, + "orb": { + "type": "number" + }, + "timezone": { + "type": "number" + }, + "year": { + "type": "number" + } + }, + "required": [ + "year", + "month", + "timezone", + "orb", + "events" + ], + "type": "object" +}
- Changed
post_astrology_planetary_returns1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "approximateCycle": { + "type": "string" + }, + "birthDate": { + "type": "string" + }, + "chart": { + "properties": { + "aspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "enum": [ + "harmonious", + "challenging", + "neutral" + ], + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "orb": { + "type": "number" + }, + "planet1": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet2": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "strength": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "CONJUNCTION", + "OPPOSITION", + "TRINE", + "SQUARE", + "SEXTILE", + "SEMI_SEXTILE", + "QUINCUNX", + "SEMI_SQUARE", + "SESQUIQUADRATE" + ], + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "houseSystem": { + "enum": [ + "placidus", + "whole-sign", + "equal", + "koch" + ], + "type": "string" + }, + "houses": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "number": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + }, + "partOfFortune": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sect": { + "enum": [ + "day", + "night" + ], + "type": "string" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house", + "sect" + ], + "type": "object" + }, + "planets": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "sign": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "vertex": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house" + ], + "type": "object" + } + }, + "required": [ + "birthDetails", + "planets", + "houses", + "houseSystem", + "aspects", + "partOfFortune", + "vertex" + ], + "type": "object" + }, + "interpretation": { + "properties": { + "keyThemes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "keyThemes" + ], + "type": "object" + }, + "location": { + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "natalPlanetPosition": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "planet": { + "type": "string" + }, + "returnDate": { + "type": "string" + } + }, + "required": [ + "birthDate", + "planet", + "returnDate", + "approximateCycle", + "location", + "chart", + "natalPlanetPosition", + "interpretation" + ], + "type": "object" +}
- Changed
post_astrology_planets1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "planets": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "description": { + "type": "string" + }, + "interpretation": { + "properties": { + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "planetMeaning": { + "type": "string" + }, + "signExpression": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "planetMeaning", + "signExpression", + "keywords" + ], + "type": "object" + }, + "isRetrograde": { + "type": "boolean" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "name": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "speed": { + "type": "number" + }, + "symbol": { + "type": "string" + }, + "tagline": { + "type": "string" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "planets" + ], + "type": "object" +}
- Changed
post_astrology_planets_monthly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "days": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "positions": { + "items": { + "properties": { + "degreeInSign": { + "type": "number" + }, + "isRetrograde": { + "type": "boolean" + }, + "longitude": { + "type": "number" + }, + "planet": { + "type": "string" + }, + "planetLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "planet", + "longitude", + "sign", + "degreeInSign", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "date", + "positions" + ], + "type": "object" + }, + "type": "array" + }, + "month": { + "type": "number" + }, + "year": { + "type": "number" + } + }, + "required": [ + "year", + "month", + "days" + ], + "type": "object" +}
- Changed
post_astrology_profections1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "age": { + "minimum": 0, + "type": "integer" + }, + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "interpretation": { + "type": "string" + }, + "lordNatalPosition": { + "properties": { + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "house" + ], + "type": "object" + }, + "lordOfYear": { + "type": "string" + }, + "profectedHouse": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "profectedSign": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "targetDate": { + "format": "date", + "type": "string" + } + }, + "required": [ + "birthDetails", + "targetDate", + "age", + "profectedHouse", + "profectedSign", + "lordOfYear", + "lordNatalPosition", + "interpretation", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_progressions1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ascendant": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "elapsedYears": { + "type": "number" + }, + "midheaven": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "planets": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "interpretation": { + "type": "string" + }, + "isRetrograde": { + "type": "boolean" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "progressedDate": { + "type": "string" + }, + "summary": { + "type": "string" + }, + "targetDate": { + "type": "string" + } + }, + "required": [ + "birthDetails", + "targetDate", + "progressedDate", + "elapsedYears", + "planets", + "ascendant", + "midheaven", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_relocation_chart1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ascendant": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "birthDetails": { + "properties": { + "date": { + "type": "string" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "time": { + "type": "string" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "changes": { + "properties": { + "angularPlanets": { + "items": { + "type": "string" + }, + "type": "array" + }, + "angularPlanetsLocalized": { + "items": { + "type": "string" + }, + "type": "array" + }, + "ascendantSignChanged": { + "type": "boolean" + }, + "direction": { + "type": "string" + }, + "distanceKm": { + "type": "number" + }, + "planetsChangedHouse": { + "items": { + "properties": { + "natalHouse": { + "type": "number" + }, + "planet": { + "type": "string" + }, + "planetLocalized": { + "type": "string" + }, + "relocatedHouse": { + "type": "number" + } + }, + "required": [ + "planet", + "natalHouse", + "relocatedHouse" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "ascendantSignChanged", + "planetsChangedHouse", + "angularPlanets", + "distanceKm", + "direction" + ], + "type": "object" + }, + "houseSystem": { + "type": "string" + }, + "houses": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "number": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + }, + "interpretation": { + "properties": { + "summary": { + "type": "string" + } + }, + "required": [ + "summary" + ], + "type": "object" + }, + "midheaven": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "planets": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "interpretation": { + "properties": { + "detailed": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "detailed", + "keywords" + ], + "type": "object" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "relocation": { + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude" + ], + "type": "object" + }, + "vertex": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house" + ], + "type": "object" + } + }, + "required": [ + "birthDetails", + "relocation", + "planets", + "houses", + "houseSystem", + "ascendant", + "midheaven", + "vertex", + "changes", + "interpretation" + ], + "type": "object" +}
- Changed
post_astrology_solar_arc1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "directed": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "directedLongitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "natalLongitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "name", + "natalLongitude", + "directedLongitude", + "sign", + "degree", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "solarArc": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "summary": { + "type": "string" + }, + "targetDate": { + "format": "date", + "type": "string" + } + }, + "required": [ + "birthDetails", + "targetDate", + "solarArc", + "summary", + "directed" + ], + "type": "object" +}
- Changed
post_astrology_solar_return1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "birthDate": { + "type": "string" + }, + "chart": { + "properties": { + "aspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "enum": [ + "harmonious", + "challenging", + "neutral" + ], + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "orb": { + "type": "number" + }, + "planet1": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet2": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "strength": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "type": { + "enum": [ + "CONJUNCTION", + "OPPOSITION", + "TRINE", + "SQUARE", + "SEXTILE", + "SEMI_SEXTILE", + "QUINCUNX", + "SEMI_SQUARE", + "SESQUIQUADRATE" + ], + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "birthDetails": { + "properties": { + "date": { + "format": "date", + "type": "string" + }, + "latitude": { + "maximum": 90, + "minimum": -90, + "type": "number" + }, + "longitude": { + "maximum": 180, + "minimum": -180, + "type": "number" + }, + "time": { + "format": "time", + "type": "string" + }, + "timezone": { + "maximum": 14, + "minimum": -12, + "type": "number" + } + }, + "required": [ + "date", + "time", + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "houseSystem": { + "enum": [ + "placidus", + "whole-sign", + "equal", + "koch" + ], + "type": "string" + }, + "houses": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "number": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + }, + "partOfFortune": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sect": { + "enum": [ + "day", + "night" + ], + "type": "string" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house", + "sect" + ], + "type": "object" + }, + "planets": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "sign": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "vertex": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude", + "house" + ], + "type": "object" + } + }, + "required": [ + "birthDetails", + "planets", + "houses", + "houseSystem", + "aspects", + "partOfFortune", + "vertex" + ], + "type": "object" + }, + "interpretation": { + "properties": { + "keyThemes": { + "items": { + "type": "string" + }, + "type": "array" + }, + "purpose": { + "type": "string" + }, + "summary": { + "type": "string" + } + }, + "required": [ + "summary", + "purpose", + "keyThemes" + ], + "type": "object" + }, + "location": { + "properties": { + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "timezone": { + "type": "number" + } + }, + "required": [ + "latitude", + "longitude", + "timezone" + ], + "type": "object" + }, + "natalSunPosition": { + "properties": { + "degree": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "sign": { + "type": "string" + } + }, + "required": [ + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "solarReturnDate": { + "type": "string" + }, + "solarReturnYear": { + "type": "number" + } + }, + "required": [ + "birthDate", + "solarReturnDate", + "solarReturnYear", + "location", + "chart", + "natalSunPosition", + "interpretation" + ], + "type": "object" +}
- Changed
post_astrology_synastry1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "analysis": { + "properties": { + "challenges": { + "items": { + "type": "string" + }, + "type": "array" + }, + "overall": { + "type": "string" + }, + "strengths": { + "items": { + "type": "string" + }, + "type": "array" + } + }, + "required": [ + "overall", + "strengths", + "challenges" + ], + "type": "object" + }, + "compatibilityScore": { + "type": "number" + }, + "interAspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "type": "string" + }, + "meaning": { + "properties": { + "description": { + "properties": { + "long": { + "type": "string" + }, + "short": { + "type": "string" + } + }, + "required": [ + "short", + "long" + ], + "type": "object" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "name": { + "type": "string" + }, + "nature": { + "type": "string" + }, + "relationshipContext": { + "type": "string" + } + }, + "required": [ + "name", + "description", + "keywords", + "nature", + "relationshipContext" + ], + "type": "object" + }, + "orb": { + "type": "number" + }, + "planet1": { + "type": "string" + }, + "planet1Localized": { + "type": "string" + }, + "planet2": { + "type": "string" + }, + "planet2Localized": { + "type": "string" + }, + "strength": { + "type": "number" + }, + "type": { + "type": "string" + }, + "typeLocalized": { + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "strength", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "person1": { + "properties": { + "ascendant": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "moonSign": { + "type": "string" + }, + "moonSignLocalized": { + "type": "string" + }, + "name": { + "type": "string" + }, + "planets": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "house": { + "type": "number" + }, + "houseInOtherChart": { + "type": "number" + }, + "isRetrograde": { + "type": "boolean" + }, + "longitude": { + "type": "number" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "name", + "longitude", + "sign", + "degree", + "house", + "houseInOtherChart", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "sunSign": { + "type": "string" + }, + "sunSignLocalized": { + "type": "string" + } + }, + "required": [ + "ascendant", + "sunSign", + "moonSign", + "planets" + ], + "type": "object" + }, + "person2": { + "properties": { + "ascendant": { + "properties": { + "degree": { + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree" + ], + "type": "object" + }, + "moonSign": { + "type": "string" + }, + "moonSignLocalized": { + "type": "string" + }, + "name": { + "type": "string" + }, + "planets": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "house": { + "type": "number" + }, + "houseInOtherChart": { + "type": "number" + }, + "isRetrograde": { + "type": "boolean" + }, + "longitude": { + "type": "number" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "name", + "longitude", + "sign", + "degree", + "house", + "houseInOtherChart", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "sunSign": { + "type": "string" + }, + "sunSignLocalized": { + "type": "string" + } + }, + "required": [ + "ascendant", + "sunSign", + "moonSign", + "planets" + ], + "type": "object" + }, + "summary": { + "properties": { + "byType": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + "challenging": { + "type": "number" + }, + "harmonious": { + "type": "number" + }, + "neutral": { + "type": "number" + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "harmonious", + "challenging", + "neutral", + "byType" + ], + "type": "object" + } + }, + "required": [ + "person1", + "person2", + "compatibilityScore", + "interAspects", + "summary", + "analysis" + ], + "type": "object" +}
- Changed
post_astrology_transit_aspects1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "ascendant": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "sign", + "degree", + "longitude" + ], + "type": "object" + }, + "aspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "enum": [ + "harmonious", + "challenging", + "neutral" + ], + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "orb": { + "type": "number" + }, + "planet1": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet1Localized": { + "type": "string" + }, + "planet2": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet2Localized": { + "type": "string" + }, + "strength": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "transitInterpretation": { + "properties": { + "guidance": { + "type": "string" + }, + "impact": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + }, + "timing": { + "type": "string" + } + }, + "required": [ + "summary", + "timing", + "impact", + "guidance", + "keywords" + ], + "type": "object" + }, + "type": { + "enum": [ + "CONJUNCTION", + "OPPOSITION", + "TRINE", + "SQUARE", + "SEXTILE", + "SEMI_SEXTILE", + "QUINCUNX", + "SEMI_SQUARE", + "SESQUIQUADRATE" + ], + "type": "string" + }, + "typeLocalized": { + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation", + "transitInterpretation" + ], + "type": "object" + }, + "type": "array" + }, + "houseSystem": { + "enum": [ + "placidus", + "whole-sign", + "equal", + "koch" + ], + "type": "string" + }, + "houses": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "number": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "number", + "longitude", + "sign", + "degree" + ], + "type": "object" + }, + "type": "array" + }, + "natalPlanets": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "summary": { + "properties": { + "byType": { + "additionalProperties": { + "type": "number" + }, + "type": "object" + }, + "challenging": { + "type": "number" + }, + "harmonious": { + "type": "number" + }, + "neutral": { + "type": "number" + }, + "strongest": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "enum": [ + "harmonious", + "challenging", + "neutral" + ], + "type": "string" + }, + "isApplying": { + "type": "boolean" + }, + "orb": { + "type": "number" + }, + "planet1": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet1Localized": { + "type": "string" + }, + "planet2": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "planet2Localized": { + "type": "string" + }, + "strength": { + "maximum": 100, + "minimum": 0, + "type": "number" + }, + "transitInterpretation": { + "properties": { + "guidance": { + "type": "string" + }, + "impact": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + }, + "timing": { + "type": "string" + } + }, + "required": [ + "summary", + "timing", + "impact", + "guidance", + "keywords" + ], + "type": "object" + }, + "type": { + "enum": [ + "CONJUNCTION", + "OPPOSITION", + "TRINE", + "SQUARE", + "SEXTILE", + "SEMI_SEXTILE", + "QUINCUNX", + "SEMI_SQUARE", + "SESQUIQUADRATE" + ], + "type": "string" + }, + "typeLocalized": { + "type": "string" + } + }, + "required": [ + "planet1", + "planet2", + "type", + "angle", + "orb", + "isApplying", + "strength", + "interpretation", + "transitInterpretation" + ], + "type": [ + "object", + "null" + ] + }, + "total": { + "type": "number" + } + }, + "required": [ + "total", + "harmonious", + "challenging", + "neutral", + "strongest", + "byType" + ], + "type": "object" + }, + "transitDate": { + "type": "string" + }, + "transitPlanets": { + "items": { + "properties": { + "degree": { + "maximum": 30, + "minimum": 0, + "type": "number" + }, + "house": { + "maximum": 12, + "minimum": 1, + "type": "integer" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "maximum": 360, + "minimum": 0, + "type": "number" + }, + "name": { + "enum": [ + "Sun", + "Moon", + "Mercury", + "Venus", + "Mars", + "Jupiter", + "Saturn", + "Uranus", + "Neptune", + "Pluto", + "North Node", + "South Node", + "Chiron", + "Black Moon Lilith" + ], + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "house", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "transitDate", + "houseSystem", + "houses", + "ascendant", + "transitPlanets", + "natalPlanets", + "aspects", + "summary" + ], + "type": "object" +}
- Changed
post_astrology_transits1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "summary": { + "properties": { + "challenging": { + "type": "number" + }, + "harmonious": { + "type": "number" + }, + "neutral": { + "type": "number" + }, + "totalAspects": { + "type": "number" + } + }, + "required": [ + "totalAspects", + "harmonious", + "challenging", + "neutral" + ], + "type": "object" + }, + "timezone": { + "type": "number" + }, + "transitAspects": { + "items": { + "properties": { + "angle": { + "type": "number" + }, + "interpretation": { + "properties": { + "guidance": { + "type": "string" + }, + "impact": { + "type": "string" + }, + "keywords": { + "items": { + "type": "string" + }, + "type": "array" + }, + "summary": { + "type": "string" + }, + "timing": { + "type": "string" + } + }, + "required": [ + "summary", + "timing", + "impact", + "guidance", + "keywords" + ], + "type": "object" + }, + "isApplying": { + "type": "boolean" + }, + "natalPlanet": { + "type": "string" + }, + "natalPlanetLocalized": { + "type": "string" + }, + "nature": { + "type": "string" + }, + "orb": { + "type": "number" + }, + "strength": { + "type": "number" + }, + "transitPlanet": { + "type": "string" + }, + "transitPlanetLocalized": { + "type": "string" + }, + "type": { + "type": "string" + }, + "typeLocalized": { + "type": "string" + } + }, + "required": [ + "transitPlanet", + "natalPlanet", + "type", + "angle", + "orb", + "isApplying", + "strength", + "nature", + "interpretation" + ], + "type": "object" + }, + "type": "array" + }, + "transitDate": { + "type": "string" + }, + "transitPlanets": { + "items": { + "properties": { + "degree": { + "type": "number" + }, + "isRetrograde": { + "type": "boolean" + }, + "latitude": { + "type": "number" + }, + "longitude": { + "type": "number" + }, + "name": { + "type": "string" + }, + "nameLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + }, + "speed": { + "type": "number" + } + }, + "required": [ + "name", + "longitude", + "latitude", + "sign", + "degree", + "speed", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "transitTime": { + "type": "string" + } + }, + "required": [ + "transitDate", + "transitTime", + "timezone", + "transitPlanets" + ], + "type": "object" +}
- Changed
post_astrology_transits_monthly1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "properties": { + "month": { + "type": "number" + }, + "startingPositions": { + "items": { + "properties": { + "longitude": { + "type": "number" + }, + "planet": { + "type": "string" + }, + "planetLocalized": { + "type": "string" + }, + "sign": { + "type": "string" + }, + "signLocalized": { + "type": "string" + } + }, + "required": [ + "planet", + "sign", + "longitude" + ], + "type": "object" + }, + "type": "array" + }, + "timezone": { + "type": "number" + }, + "transitEvents": { + "items": { + "properties": { + "date": { + "type": "string" + }, + "datetime": { + "type": "string" + }, + "fromSign": { + "type": "string" + }, + "fromSignLocalized": { + "type": "string" + }, + "isRetrograde": { + "type": "boolean" + }, + "planet": { + "type": "string" + }, + "planetLocalized": { + "type": "string" + }, + "time": { + "type": "string" + }, + "toSign": { + "type": "string" + }, + "toSignLocalized": { + "type": "string" + } + }, + "required": [ + "planet", + "fromSign", + "toSign", + "date", + "time", + "datetime", + "isRetrograde" + ], + "type": "object" + }, + "type": "array" + }, + "year": { + "type": "number" + } + }, + "required": [ + "year", + "month", + "timezone", + "startingPositions", + "transitEvents" + ], + "type": "object" +}
3 tool updates
- Changed
get_astrology_horoscope_sign_yearly1 field changed- changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
get_astrology_moon_phase_calendar_year_month2 fields changed- changed
Input schema / properties / month / typePrevious value: -"number"New value: +"integer" - changed
Input schema / properties / year / typePrevious value: -"number"New value: +"integer"
- Changed
get_astrology_moon_phase_upcoming1 field changed- changed
Input schema / properties / count / typePrevious value: -"number"New value: +"integer"
1 tool update
- Changed
get_astrology_horoscope_sign_yearly2 fields changed- added
Input schema / properties / year / maximumAdded value: +2100 - added
Input schema / properties / year / minimumAdded value: +1900
16 tool updates
- Changed
post_astrology_arabic_lots1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_aspect_patterns1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_asteroids1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_astrocartography1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_compatibility_score2 fields changed- changed
Input schema / properties / person1 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly." - changed
Input schema / properties / person2 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_composite_chart2 fields changed- changed
Input schema / properties / person1 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly." - changed
Input schema / properties / person2 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_fixed_stars1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_lilith1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_local_space1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Decimal hours from UTC (e.g. -5 for EST, 5.5 for IST, 9 for JST) OR IANA name (e.g. \"America/New_York\"). IANA resolved to the DST-correct offset for the birth date."New value: +"Decimal hours from UTC (e.g. -5 for EST, 5.5 for IST, 9 for JST) OR IANA name (e.g. \"America/New_York\"). IANA resolved to the offset in force at the birth date and time."
- Changed
post_astrology_natal_chart1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_profections1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_progressions1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_relocation_chart1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Birth timezone: decimal hours from UTC (e.g. -5 for EST, 5.5 for IST) OR IANA name (e.g. \"America/New_York\"). Resolved to the DST-correct offset for the birth date. This is the birthplace timezone, not the new location timezone."New value: +"Birth timezone: decimal hours from UTC (e.g. -5 for EST, 5.5 for IST) OR IANA name (e.g. \"America/New_York\"). Resolved to the offset in force at the birth date and time. This is the birthplace timezone, not the new location timezone."
- Changed
post_astrology_solar_arc1 field changed- changed
Input schema / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_synastry2 fields changed- changed
Input schema / properties / person1 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly." - changed
Input schema / properties / person2 / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
- Changed
post_astrology_transit_aspects1 field changed- changed
Input schema / properties / natalChart / properties / timezone / descriptionPrevious value: -"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the DST-correct offset for the given date, so you can pass `cities[0].timezone` from /location/search directly."New value: +"Timezone: IANA name (e.g. \"America/New_York\", \"Europe/London\") OR decimal hours from UTC (e.g. -5 for EST, 1 for CET). IANA strings are resolved to the offset in force at the given date and time, so you can pass `cities[0].timezone` from /location/search directly."
1 tool update
- Changed
post_astrology_houses1 field changed- changed
Input schema / properties / time / descriptionPrevious value: -"Birth time in 24-hour HH:MM:SS format. Time is ESSENTIAL for accurate house cusps - even minutes matter. The Ascendant (1st house cusp) changes roughly every 4 minutes. Without accurate time, house placements will be incorrect."New value: +"Birth time in 24-hour HH:MM:SS format. Time is ESSENTIAL for accurate house cusps, and even minutes matter. The Ascendant (1st house cusp) changes roughly every 4 minutes. Without accurate time, house placements will be incorrect."
1 tool update
- Added
get_astrology_horoscope_sign_yearly
Related MCP Connectors
Real astrology for AI agents: cosmic weather, synastry, timing, astrocartography, and divination.
Astrology transit forecasts, timelines and significant-date feeds for AI agents.
Vedic and Western astrology for AI agents: charts, dasha, matchmaking, panchanga, numerology, tarot.
Sub-arcsecond astrology on NASA JPL DE440: natal, transits, Human Design, Vedic, BaZi.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceHigh-precision astrology tools for LLM agents, including natal charts, transits, progressions, synastry, and more, backed by Swiss Ephemeris.1MIT
- AlicenseAqualityAmaintenanceVedic and Western astrology for AI agents: 103 read-only tools for natal charts, dasha, kundali matching with Rajju and Vedha vetoes, panchanga, numerology and tarot, backed by Swiss Ephemeris and verified against NASA JPL Horizons.103MIT
- FlicenseNot gradedqualityCmaintenanceMulti-tradition astrology engine that computes real birth charts, transits, and synastry for AI agents via MCP tools.10-
- AlicenseAqualityBmaintenanceEnables AI agents to compute deterministic astrological data with Swiss Ephemeris, including natal charts, transits, synastry, and birth-place resolution, so they never invent planetary positions.430 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.