{"name":"com.roxyapi/chinese-astrology","slug":"roxyapi-chinese-astrology","title":"Chinese Astrology MCP Server by RoxyAPI","description":"BaZi four pillars, Chinese zodiac, lunisolar calendar and almanac days for AI agents.","url":"https://mcp.market/server/roxyapi-chinese-astrology","rating":null,"grade":"C","score":67,"certified":false,"status":"active","category":"productivity","tags":["productivity"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":8,"ok":8,"last_checked_at":"2026-09-21T08:20:47.116Z","last_ok_at":"2026-09-21T08:20:47.116Z","latency_ms":35},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://roxyapi.com/products/chinese-astrology-api","version":"1.0.0","remotes":[{"type":"streamable-http","url":"https://roxyapi.com/mcp/chinese-astrology","headers":[{"description":"RoxyAPI key from roxyapi.com/account","isRequired":true,"isSecret":true,"name":"X-API-Key"}]}],"packages":[],"tools":[{"name":"get_chinese_astrology_calendar_day_date","description":"Return the full almanac reading of one day: its lunisolar date, the year, month and day pillars with their Na Yin, the day officer from the twelve jian chu sequence, the lunar mansion on duty, the zodiac animal the day clashes with, and the activities the officer favours or opposes. The day officer is the layer a printed almanac reaches its verdict from first, and the response says exactly what it rules on rather than reducing the day to a single score. The year and month pillars here are attributed by whole days, which is what an almanac prints: the day a solar term falls on belongs to the new period for its whole length, however late in the day the term arrives. Built for date pickers, daily calendar widgets, and wedding or opening date tools.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"date":{"type":"string","description":"Gregorian date in YYYY-MM-DD format, evaluated at the reference meridian. Years 1900 to 2100.","format":"date","example":"1990-06-15"},"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"compact":{"type":"boolean","description":"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.","default":false}},"required":["date"],"examples":[{"date":"1990-06-15"}]}},{"name":"get_chinese_astrology_calendar_monthly","description":"Return every day of one Gregorian month of the Chinese almanac with its lunisolar date, its three pillars, its day officer, its lunar mansion and its clash animal, plus the solar terms that fall inside the month. This is the month view a calendar widget renders in one call rather than thirty one. Omit the year and month to get the month in progress. Built for calendar UIs, almanac pages, and planning tools that show a whole month at a glance.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"year":{"type":"integer","description":"Gregorian year, 1900 to 2100. Defaults to the current UTC year when omitted, together with month.","minimum":1900,"maximum":2100,"example":1990},"month":{"type":"integer","description":"Gregorian month, 1 to 12. Defaults to the current UTC month when omitted, together with year.","minimum":1,"maximum":12,"example":6},"compact":{"type":"boolean","description":"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.","default":false}},"examples":[{}]}},{"name":"get_chinese_astrology_calendar_solar_terms_year","description":"Return all 24 solar terms of a year as astronomical instants rather than dates, each computed from the moment the sun reaches its exact apparent longitude at 15 degree steps. The year is the SOLAR year, which opens at Li Chun in early February, so Minor Cold and Major Cold, the last two terms, are dated in the January of the following Gregorian year. Every instant is returned twice, once in UTC and once at the UTC+8 reference meridian the Chinese calendar is defined on. Built for calendar apps, festival scheduling, and any BaZi feature that has to place a birth on the correct side of a term boundary.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"year":{"type":"integer","description":"Solar year, 1900 to 2100. The year opens at Li Chun rather than on 1 January, so its last two terms fall in the following January.","minimum":1900,"maximum":2100,"example":2026},"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"compact":{"type":"boolean","description":"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.","default":false}},"required":["year"],"examples":[{"year":2026}]}},{"name":"get_chinese_astrology_elements","description":"Return the five phases of Wu Xing with the Chinese character, the season and direction each governs, the Heavenly Stems and Earthly Branches that carry it, and both of the cycles that connect them. The generating cycle and the controlling cycle are returned as ordered rings as well as on each phase, so a caller can render either without deriving it. This is the one place the five phase vocabulary is defined: BaZi charts, Na Yin, zodiac element variants and every feng shui star reuse these identifiers rather than restating them.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"limit":{"type":"integer","description":"Maximum items to return per page. Range: 1-5, default 5.","minimum":1,"maximum":5,"default":5,"example":5},"offset":{"type":"integer","description":"Number of items to skip for pagination. Default 0.","example":0},"compact":{"type":"boolean","description":"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.","default":false}},"examples":[{}]}},{"name":"get_chinese_astrology_zodiac_animals","description":"Retrieve all twelve Chinese zodiac animals in cycle order, from Rat through Pig. Each entry returns the machine id, the Chinese character and tone-marked pinyin for the animal, its Earthly Branch, the fixed Five Element phase and yin or yang polarity of that branch, and a set of trait keywords. Built for sign pickers, zodiac cards and compatibility widgets that need the whole set in one call.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"limit":{"type":"integer","description":"Maximum items to return per page. Range: 1-12, default 12.","minimum":1,"maximum":12,"default":12,"example":12},"offset":{"type":"integer","description":"Number of items to skip for pagination. Default 0.","example":0},"compact":{"type":"boolean","description":"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.","default":false}},"examples":[{}]}},{"name":"get_chinese_astrology_zodiac_animals_id","description":"Retrieve the complete profile of one Chinese zodiac animal: character summary, strengths, weaknesses, trait keywords, the double-hour its Earthly Branch governs, and its five element variants with the Gregorian years that carry each one. Also returns the four classical branch relationships, the three-harmony trine it belongs to, its six-harmony secret friend, its clashing opposite and its harming partner. Built for sign detail pages and compatibility features.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Animal id, case-insensitive and punctuation-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig. The sheep and the ram are the same animal as the goat and resolve to goat.","enum":["rat","ox","tiger","rabbit","dragon","snake","horse","goat","monkey","rooster","dog","pig"],"example":"rat"},"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"compact":{"type":"boolean","description":"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.","default":false}},"required":["id"],"examples":[{"id":"rat"}]}},{"name":"get_chinese_astrology_zodiac_compatibility_sign1_sign2","description":"Score and explain the relationship between two Chinese zodiac animals from the classical branch relations rather than from a lookup table of opinions. Returns which of the six relations the pair stands in, a score out of 100, the phase the two branches combine into where they combine at all, and a composed reading with strengths, frictions and advice. The six relations are mutually exclusive by construction, so exactly one applies to any pair. Built for matchmaking features, relationship reports and compatibility widgets.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"sign1":{"type":"string","description":"First animal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig.","enum":["rat","ox","tiger","rabbit","dragon","snake","horse","goat","monkey","rooster","dog","pig"],"example":"rat"},"sign2":{"type":"string","description":"Second animal id, case-insensitive. The relation is symmetric, so swapping the two returns the same relationship and the same score, with the reading written from the first sign point of view.","enum":["rat","ox","tiger","rabbit","dragon","snake","horse","goat","monkey","rooster","dog","pig"],"example":"dragon"},"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"compact":{"type":"boolean","description":"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.","default":false}},"required":["sign1","sign2"],"examples":[{"sign1":"rat","sign2":"dragon"}]}},{"name":"get_chinese_astrology_zodiac_id_daily","description":"Get the daily reading for one Chinese zodiac animal, built from the sexagenary day pillar rather than from a rotation of stock text. The day carries its own Earthly Branch, that branch stands in exactly one of six classical relations to the requested sign, and the reading is that relation applied to the sign temperament. Returns the day pillar, the relation, an energy rating, overview, love and career guidance, advice, and the sexagenary year in force with its Ben Ming Nian flag. Content is fixed for a given date and rolls over at midnight, by default UTC.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"id":{"type":"string","description":"Animal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig.","enum":["rat","ox","tiger","rabbit","dragon","snake","horse","goat","monkey","rooster","dog","pig"],"example":"rat"},"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"date":{"type":"string","description":"Reading date in YYYY-MM-DD format. Past and future dates are both supported, for editorial scheduling and backfill. Defaults to the current day in the timezone parameter.","format":"date","example":"2026-04-03"},"timezone":{"type":"string","description":"Selects which day counts as current when date is omitted. Defaults to UTC, so the reading rolls over at 00:00 UTC 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\").","example":"America/New_York"},"compact":{"type":"boolean","description":"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.","default":false}},"required":["id"],"examples":[{"id":"rat"}]}},{"name":"post_chinese_astrology_bazi_annual_forecast","description":"Read one Gregorian year against a natal BaZi chart. Returns the annual pillar for that year, the Ten God relation its stem holds to the natal Day Master, the same reading for the hidden stem of its branch, how the annual branch stands to the natal year branch including the ben ming nian return of the birth animal, and every combination, clash, harm and punishment the annual pillar forms with each of the four natal pillars. Built for yearly horoscope features, timing tools, and agents that need a year read against a specific chart rather than against an animal sign.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"date":{"type":"string","format":"date","example":"1990-06-15","description":"Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary."},"time":{"type":"string","format":"time","example":"14:30:00","description":"Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":116.4,"description":"Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is \"local-mean\" or \"solar\", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is \"clock\"."},"dayBoundary":{"type":"string","enum":["split-zi","midnight","early-zi"],"default":"split-zi","example":"split-zi","description":"Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. \"midnight\" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. \"early-zi\" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. \"split-zi\" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth."},"yearBoundary":{"type":"string","enum":["li-chun","lunar-new-year"],"default":"li-chun","example":"li-chun","description":"Which instant starts the sexagenary YEAR. \"li-chun\" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. \"lunar-new-year\" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun."},"hourClock":{"type":"string","enum":["clock","local-mean","solar"],"default":"clock","example":"clock","description":"Which clock the HOUR branch is read from. \"clock\" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. \"local-mean\" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. \"solar\" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need \"longitude\" in the request and return 400 without it."},"year":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"Gregorian year to read against the natal chart. The annual pillar for that year is resolved under the same year boundary the request selected, so a li-chun reading and a lunar-new-year reading of the same calendar year can differ."},"compact":{"type":"boolean","description":"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.","default":false}},"required":["date","time","timezone","year"],"examples":[{"date":"1990-06-15","time":"14:30:00","timezone":"America/New_York","year":2026}]}},{"name":"post_chinese_astrology_bazi_chart","description":"Calculate a complete BaZi chart, the Four Pillars of Destiny, from a birth moment. Returns the year, month, day and hour pillars with every Heavenly Stem and Earthly Branch, the stems hidden inside each branch, the Ten God relation each one holds to the Day Master, the Na Yin sound element of each pair, the five-element balance across the chart, and the combinations and clashes running between the pillars. The day boundary, year boundary and hour clock are all selectable and the applied conventions come back on every response, so a chart is self-describing. Built for astrology apps, matchmaking services, and agents that need a Four Pillars reading they can reproduce.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"date":{"type":"string","format":"date","example":"1990-06-15","description":"Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary."},"time":{"type":"string","format":"time","example":"14:30:00","description":"Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":116.4,"description":"Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is \"local-mean\" or \"solar\", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is \"clock\"."},"dayBoundary":{"type":"string","enum":["split-zi","midnight","early-zi"],"default":"split-zi","example":"split-zi","description":"Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. \"midnight\" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. \"early-zi\" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. \"split-zi\" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth."},"yearBoundary":{"type":"string","enum":["li-chun","lunar-new-year"],"default":"li-chun","example":"li-chun","description":"Which instant starts the sexagenary YEAR. \"li-chun\" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. \"lunar-new-year\" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun."},"hourClock":{"type":"string","enum":["clock","local-mean","solar"],"default":"clock","example":"clock","description":"Which clock the HOUR branch is read from. \"clock\" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. \"local-mean\" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. \"solar\" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need \"longitude\" in the request and return 400 without it."},"compact":{"type":"boolean","description":"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.","default":false}},"required":["date","time","timezone"],"examples":[{"date":"1990-06-15","time":"14:30:00","timezone":"America/New_York"}]}},{"name":"post_chinese_astrology_bazi_compatibility","description":"Compare two BaZi charts pillar by pillar, the Chinese astrology reading of how two people match. Returns both resolved charts, how the two Day Masters stand to each other on the five-phase cycle, and every combination, clash, harm and punishment that crosses between them, each naming the two positions it joins. A tallied score summarises the balance and the interaction list behind it is returned in full, so a caller that disagrees with the weighting can recompute its own. Built for matchmaking products, relationship features, and agents that need a defensible two-chart reading.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"personA":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-06-15","description":"Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary."},"time":{"type":"string","format":"time","example":"14:30:00","description":"Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":116.4,"description":"Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is \"local-mean\" or \"solar\", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is \"clock\"."},"dayBoundary":{"type":"string","enum":["split-zi","midnight","early-zi"],"default":"split-zi","example":"split-zi","description":"Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. \"midnight\" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. \"early-zi\" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. \"split-zi\" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth."},"yearBoundary":{"type":"string","enum":["li-chun","lunar-new-year"],"default":"li-chun","example":"li-chun","description":"Which instant starts the sexagenary YEAR. \"li-chun\" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. \"lunar-new-year\" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun."},"hourClock":{"type":"string","enum":["clock","local-mean","solar"],"default":"clock","example":"clock","description":"Which clock the HOUR branch is read from. \"clock\" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. \"local-mean\" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. \"solar\" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need \"longitude\" in the request and return 400 without it."}},"required":["date","time","timezone"],"description":"Birth moment of the first person. Each subject carries its own school switches, so two charts built under different conventions can still be compared."},"personB":{"type":"object","properties":{"date":{"type":"string","format":"date","example":"1990-06-15","description":"Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary."},"time":{"type":"string","format":"time","example":"14:30:00","description":"Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":116.4,"description":"Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is \"local-mean\" or \"solar\", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is \"clock\"."},"dayBoundary":{"type":"string","enum":["split-zi","midnight","early-zi"],"default":"split-zi","example":"split-zi","description":"Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. \"midnight\" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. \"early-zi\" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. \"split-zi\" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth."},"yearBoundary":{"type":"string","enum":["li-chun","lunar-new-year"],"default":"li-chun","example":"li-chun","description":"Which instant starts the sexagenary YEAR. \"li-chun\" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. \"lunar-new-year\" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun."},"hourClock":{"type":"string","enum":["clock","local-mean","solar"],"default":"clock","example":"clock","description":"Which clock the HOUR branch is read from. \"clock\" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. \"local-mean\" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. \"solar\" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need \"longitude\" in the request and return 400 without it."}},"required":["date","time","timezone"],"description":"Birth moment of the second person."},"compact":{"type":"boolean","description":"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.","default":false}},"required":["personA","personB"],"examples":[{"personA":{"date":"1990-06-15","time":"14:30:00","timezone":"America/New_York"},"personB":{"date":"1990-06-15","time":"14:30:00","timezone":"America/New_York"}}]}},{"name":"post_chinese_astrology_bazi_day_master","description":"Assess how well the Day Master is supported by the rest of a BaZi chart, and which of the five elements help it. Uses the classical three-factor method: whether the birth month season backs the Day Master element, whether any branch stores a root for it, and whether the other stems help or spend it. Returns the verdict, an auditable score with each factor contribution, the seasonal state, the root count, the element headcount, and the favorable and unfavorable element lists that follow from the verdict. Built for chart readers, remedy features, and agents that need the usable half of a Four Pillars reading.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"date":{"type":"string","format":"date","example":"1990-06-15","description":"Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary."},"time":{"type":"string","format":"time","example":"14:30:00","description":"Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":116.4,"description":"Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is \"local-mean\" or \"solar\", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is \"clock\"."},"dayBoundary":{"type":"string","enum":["split-zi","midnight","early-zi"],"default":"split-zi","example":"split-zi","description":"Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. \"midnight\" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. \"early-zi\" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. \"split-zi\" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth."},"yearBoundary":{"type":"string","enum":["li-chun","lunar-new-year"],"default":"li-chun","example":"li-chun","description":"Which instant starts the sexagenary YEAR. \"li-chun\" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. \"lunar-new-year\" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun."},"hourClock":{"type":"string","enum":["clock","local-mean","solar"],"default":"clock","example":"clock","description":"Which clock the HOUR branch is read from. \"clock\" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. \"local-mean\" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. \"solar\" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need \"longitude\" in the request and return 400 without it."},"compact":{"type":"boolean","description":"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.","default":false}},"required":["date","time","timezone"],"examples":[{"date":"1990-06-15","time":"14:30:00","timezone":"America/New_York"}]}},{"name":"post_chinese_astrology_bazi_luck_pillars","description":"Calculate the da yun luck pillars, the ten-year periods a BaZi chart walks through after birth. Returns the direction the sequence runs, the age it begins at with the day count behind that age, each ten-year pillar with the Ten God relation its stem holds to the natal Day Master, and an optional year-by-year annual overlay. Direction follows the classical rule: a male born in a yang-stem year and a female born in a yin-stem year run forward through the sexagenary cycle, the other two combinations run backward. Built for astrology apps, life-timing features, and agents that need a reproducible forecast spine.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"date":{"type":"string","format":"date","example":"1990-06-15","description":"Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary."},"time":{"type":"string","format":"time","example":"14:30:00","description":"Birth time in 24-hour HH:MM:SS format. Sets the hour pillar, which is one of the four and carries the whole picture of later life and offspring. Each Earthly Branch covers two hours, so a birth within a few minutes of an odd hour can land in either. All four pillars are read in the local clock of the birth, and the day boundary is applied in that same clock; only the lunisolar calendar date itself is a world constant, fixed at UTC plus 8 so one instant has one Chinese date everywhere."},"timezone":{"anyOf":[{"type":"number","minimum":-14,"maximum":14},{"type":"string"}],"description":"IANA name (e.g. \"America/New_York\", \"Europe/London\", \"UTC\"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. \"-05:00\", \"+01:00\"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.","example":"America/New_York"},"latitude":{"type":"number","minimum":-90,"maximum":90,"default":0,"example":0,"description":"Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0."},"longitude":{"type":"number","minimum":-180,"maximum":180,"example":116.4,"description":"Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is \"local-mean\" or \"solar\", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is \"clock\"."},"dayBoundary":{"type":"string","enum":["split-zi","midnight","early-zi"],"default":"split-zi","example":"split-zi","description":"Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. \"midnight\" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. \"early-zi\" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. \"split-zi\" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth."},"yearBoundary":{"type":"string","enum":["li-chun","lunar-new-year"],"default":"li-chun","example":"li-chun","description":"Which instant starts the sexagenary YEAR. \"li-chun\" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. \"lunar-new-year\" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun."},"hourClock":{"type":"string","enum":["clock","local-mean","solar"],"default":"clock","example":"clock","description":"Which clock the HOUR branch is read from. \"clock\" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. \"local-mean\" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. \"solar\" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need \"longitude\" in the request and return 400 without it."},"gender":{"type":"string","enum":["male","female"],"example":"male","description":"Subject sex, used only to pick the luck-pillar direction: a male born in a yang-stem year and a female born in a yin-stem year run forward through the sexagenary cycle, and the other two combinations run backward. It affects nothing else in the response."},"count":{"type":"integer","minimum":1,"maximum":12,"default":8,"example":8,"description":"How many ten-year luck pillars to return, 1 to 12. Eight covers eighty years from the start age, which reaches past a normal lifetime for most start ages."},"annualFromYear":{"type":"integer","minimum":1900,"maximum":2100,"example":2026,"description":"First Gregorian year of the annual pillar overlay. Omit it to leave annualPillars out of the response entirely. The annual pillar is the year the chart is currently walking through, read against the ten-year luck pillar underneath it."},"annualYears":{"type":"integer","minimum":1,"maximum":20,"default":10,"example":10,"description":"How many consecutive years the annual overlay covers, 1 to 20. Ignored unless annualFromYear is present."},"compact":{"type":"boolean","description":"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.","default":false}},"required":["date","time","timezone","gender"],"examples":[{"date":"1990-06-15","time":"14:30:00","timezone":"America/New_York","gender":"male"}]}},{"name":"post_chinese_astrology_calendar_auspicious_days","description":"Search a date range for the days a chosen activity is favoured on, ranked by the jian chu day officer and filtered against a zodiac animal to protect. Every candidate day comes back with its officer, its pillars, its lunar date and the animal it clashes with, so a caller can show the reasoning rather than a bare verdict. The range is capped at 93 days, which is a quarter, because date selection is done inside a planning window rather than across a lifetime. Built for wedding planners, business opening tools, and moving and travel date pickers.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"activity":{"type":"string","enum":["wedding","travel","moving-house","opening-business","signing-contracts","construction","groundbreaking","burial","medical-treatment","praying"],"example":"wedding","description":"Activity to choose a date for. One of wedding, travel, moving-house, opening-business, signing-contracts, construction, groundbreaking, burial, medical-treatment, praying. Matching folds case and punctuation, so moving-house and MOVING_HOUSE both resolve."},"startDate":{"type":"string","format":"date","example":"2026-03-01","description":"First date of the range to search, inclusive."},"endDate":{"type":"string","format":"date","example":"2026-04-30","description":"Last date of the range to search, inclusive. The range may not exceed 93 days."},"avoidAnimal":{"type":"string","enum":["rat","ox","tiger","rabbit","dragon","snake","horse","goat","monkey","rooster","dog","pig"],"example":"rat","description":"Zodiac animal to protect. Days that clash with this animal are dropped from the results, which is how a date is chosen around the people attending rather than in the abstract. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig."},"compact":{"type":"boolean","description":"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.","default":false}},"required":["activity","startDate","endDate"],"examples":[{"activity":"wedding","startDate":"2026-03-01","endDate":"2026-04-30"}]}},{"name":"post_chinese_astrology_calendar_lunar_date","description":"Convert a Gregorian date to the Chinese lunisolar calendar or convert a lunar date back, in one endpoint. The calendar is computed at the UTC+8 reference meridian with the month containing the winter solstice fixed as month 11 and the leap month placed as the first month of the cycle carrying no major solar term, so a lunar date is the same worldwide rather than shifting with the caller timezone. The response reports the length of the lunar month, whether the date sits in a leap month, and which month the year doubles if any. Built for festival calendars, birthday features that follow the lunar date, and any app that has to survive a leap month without shifting every date after it.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"date":{"type":"string","format":"date","example":"1990-06-15","description":"Gregorian date to convert to the lunisolar calendar. Send this OR the lunar fields, never both."},"lunarYear":{"type":"integer","minimum":1900,"maximum":2100,"example":1990,"description":"Lunisolar year to convert back to a Gregorian date. Requires lunarMonth and lunarDay."},"lunarMonth":{"type":"integer","minimum":1,"maximum":12,"example":5,"description":"Lunar month, 1 to 12. Requires lunarYear and lunarDay."},"lunarDay":{"type":"integer","minimum":1,"maximum":30,"example":23,"description":"Day of the lunar month, 1 to 30. Requires lunarYear and lunarMonth."},"isLeapMonth":{"type":"boolean","default":false,"example":false,"description":"Set true to address the leap repetition of lunarMonth rather than the first pass. Requesting a leap month a year does not have returns 400."},"compact":{"type":"boolean","description":"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.","default":false}},"examples":[{}]}},{"name":"post_chinese_astrology_zodiac_sign","description":"Resolve a birth date to its Chinese zodiac animal, the sexagenary year pillar behind it, and the Five Element phase of that year, so a 1990 birth returns Horse as a Metal Horse rather than merely a Horse. The year boundary is a request parameter because the two schools genuinely disagree for dates in January and early February, and the resolved convention is echoed back so the answer is self-describing. Built for sign lookups, onboarding forms and birthday features.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"lang":{"type":"string","description":"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.","enum":["en","tr","de","es","hi","pt","fr","ru","zh-Hans","zh-Hant"],"default":"en","example":"en"},"date":{"type":"string","format":"date","example":"1990-06-15","description":"Birth date in YYYY-MM-DD format. Only the date is needed: the zodiac animal is a property of the year, so no time, timezone or place changes the answer."},"yearBoundary":{"type":"string","enum":["lunar-new-year","li-chun"],"default":"lunar-new-year","example":"lunar-new-year","description":"Which instant starts the zodiac year. lunar-new-year is the folk rule and the default on this route, because it is the rule people mean when they say what animal they are: the sign turns on Chinese New Year, between late January and late February. li-chun is the classical rule every Four Pillars text uses, turning the year at the solar term Beginning of Spring around 4 February. The two agree for roughly eleven months of every year and disagree for the weeks between them, so a 14 February 2026 birth is a Snake under lunar-new-year and a Horse under li-chun. The BaZi routes default to li-chun instead, because a chart and a folk sign are answering different questions."},"compact":{"type":"boolean","description":"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.","default":false}},"required":["date"],"examples":[{"date":"1990-06-15"}]}}],"scan":{"score":67,"grade":"C","scanned_at":"2026-09-21T05:11:45.143Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-21T05:11:45.138Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1210ms"]},"poisoning":{"score":15,"max":15,"notes":["16 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":4,"max":10,"notes":["verified namespace with website, no repo"]}},"findings":[{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://roxyapi.com/mcp/chinese-astrology","reachable":true,"authRequired":false,"latencyMs":1210,"serverInfo":{"name":"roxy-chinese-astrology","version":"2.0.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://roxyapi.com/apple-touch-icon.png","source":"site","width":180,"height":180},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}