Skip to main content
Glama

Chinese Astrology MCP Server by RoxyAPI

Server Details

BaZi four pillars, Chinese zodiac, lunisolar calendar and almanac days for AI agents.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Available Tools

16 tools
get_chinese_astrology_calendar_day_dateGet the almanac for a day - Tong Shu API with day officers and mansionsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesGregorian date in YYYY-MM-DD format, evaluated at the reference meridian. Years 1900 to 2100.
langNoResponse 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
compactNoSet 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

A4.5/5.0
Behavior5/5

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 substantive behavioral context beyond that: 'The year and month pillars here are attributed by whole days' explains the solar-term boundary rule, and 'the response says exactly what it rules on rather than reducing the day to a single score' sets expectations about output granularity. No contradiction with annotations.

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

Conciseness5/5

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

Three information-dense sentences with no filler. The core purpose is front-loaded, followed by the most non-obvious behavioral rule (whole-day solar-term attribution), and closed with concrete use cases. Every sentence earns its place.

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

Completeness5/5

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

For a complex almanac tool with no output schema, the description names the key return components and gives a decision-relevant behavioral rule about pillar attribution. Combined with 100% schema coverage, an agent has enough to select and invoke the tool correctly without missing critical context.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents date format and range, lang enum/fallback, and compact shape. The description's note about whole-day pillar attribution adds interpretive context but not parameter-level semantic details beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

The description opens with 'Return the full almanac reading of one day' — a specific verb and resource — then enumerates the returned components: lunisolar date, pillars with Na Yin, day officer, lunar mansion, clash animal, and favoured/opposed activities. This clearly differentiates it from sibling tools like the monthly or solar-terms endpoints, and explicitly notes it does not reduce the day to a single score.

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

Usage Guidelines4/5

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

The description provides clear context: 'Built for date pickers, daily calendar widgets, and wedding or opening date tools.' It implies this is the per-day almanac tool, but it does not explicitly say when not to use it or name alternatives such as the monthly or solar-terms endpoints, so it misses the full 5.

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

get_chinese_astrology_calendar_monthlyGet a month of almanac days - Chinese calendar month view APIA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse 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
yearNoGregorian year, 1900 to 2100. Defaults to the current UTC year when omitted, together with month.
monthNoGregorian month, 1 to 12. Defaults to the current UTC month when omitted, together with year.
compactNoSet 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

A4.3/5.0
Behavior4/5

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 visible behavioral context: it returns all days of the month, includes solar terms, and defaults to the current month when year and month are omitted. It also clarifies that this is a batch operation rather than 31 separate calls. No contradiction with annotations exists.

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

Conciseness4/5

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

The description is concise and front-loads the core action and output fields in the first sentence. The second sentence adds useful differentiation from a single-day call, and the third states default behavior. The final sentence about use cases is somewhat redundant with the second sentence but does not significantly bloat the description.

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

Completeness4/5

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

Even though there is no output schema, the description enumerates the main return fields (lunisolar date, three pillars, day officer, lunar mansion, clash animal, solar terms) and explains default behavior. It gives an agent enough information to know what will be returned and when to call the tool. It does not describe output wrapping or error cases, but for a read-only month-list endpoint this is a minor gap.

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

Parameters4/5

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 adds meaning beyond the schema by explaining that omitting both year and month yields the month in progress, which reinforces the default behavior noted in the schema. It does not duplicate parameter details, and the parameter meanings are otherwise clear from the schema itself.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Return every day of one Gregorian month of the Chinese almanac' and enumerates the exact data fields returned. The phrase 'rather than thirty one' distinguishes it from a single-day calendar tool, and the sibling name get_chinese_astrology_calendar_day_date reinforces that contrast. This is unambiguous and differentiated.

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

Usage Guidelines4/5

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

The description clearly states this is the 'month view a calendar widget renders in one call rather than thirty one' and says it is 'built for calendar UIs, almanac pages, and planning tools that show a whole month at a glance.' This gives the agent a clear context for choosing it over a single-day tool. However, it does not explicitly name an alternative sibling or state when not to use it, so it falls short of the top score.

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

get_chinese_astrology_calendar_solar_terms_yearList the 24 solar terms - Jie Qi calendar API with exact instantsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse 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
yearYesSolar 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.
compactNoSet 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

A4.4/5.0
Behavior5/5

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

Beyond readOnly/destructive annotations, it discloses the key behavioral traits: exact astronomical instant at 15-degree longitude steps, the solar year opening at Li Chun with the last two terms in the following January, and dual UTC/UTC+8 returns. This is precisely the kind of non-obvious behavior an agent needs.

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

Conciseness5/5

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

Three sentences, front-loaded with the core function and then adding the critical timezone and boundary quirks. No filler or redundant restatement.

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

Completeness4/5

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

For a tool with no output schema, the description does a good job of covering the return concept (all 24 instants, UTC and UTC+8) and the main boundary edge case. It stops short of specifying exact field names or value formats, which would make it fully self-sufficient, but the invocation-relevant context is present.

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

Parameters3/5

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

The input schema already documents all three parameters with descriptions at 100% coverage, so the description need not re-explain lang or compact. It reinforces the solar-year meaning of `year`, but that information is already present in the schema, so no substantial parameter semantics are added.

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

Purpose5/5

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

Description opens with a specific verb and object: 'Return all 24 solar terms of a year as astronomical instants rather than dates.' This clearly distinguishes it from the day-date and monthly sibling tools, and the solar-year/Li Chun detail defines its scope unambiguously.

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

Usage Guidelines4/5

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

The description provides concrete use contexts (calendar apps, festival scheduling, BaZi boundary placement) and makes the solar-year vs Gregorian-year scope explicit, so an agent can infer when this tool applies. It does not explicitly name sibling alternatives or state when not to use them, so it stops short of full routing guidance.

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

get_chinese_astrology_elementsList the five elements - Wu Xing API with generating and controlling cyclesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse 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
limitNoMaximum items to return per page. Range: 1-5, default 5.
offsetNoNumber of items to skip for pagination. Default 0.
compactNoSet 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

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds meaningful behavioral details beyond that: both cycles are returned as ordered rings and also attached to each phase, so a caller can render them directly without deriving. This explains the data shape in a non-obvious way.

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

Conciseness4/5

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

Three sentences with no filler: the first states what is returned, the second explains the cycle packaging, and the third gives the canonical-vocabulary context. Each sentence earns its place, though the title already conveys a similar top-line scope.

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

Completeness4/5

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

For a read-only list of five fixed phases with no required parameters, the description plus fully documented schema is sufficient. It explains the data contents, the cycle structure, and the canonical role. A response example or explicit return container would be nicebut is not necessary for such a constrained tool.

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

Parameters3/5

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

Input schema coverage is 100%, with clear descriptions for lang, limit, offset, and compact, including enums, defaults, ranges, and fallback behavior. The description adds no parameter-specific semantics, so it does not need to compensate; baseline 3 is appropriate.

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

Purpose5/5

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

Description states a clear action ('Return') and specific resource ('the five phases of Wu Xing') with exact attributes: Chinese character, season, direction, Heavenly Stems and Earthly Branches, and both cycles. It distinguishes itself from sibling zodiac/calendar/BaZi tools by positioning itself as the canonical five-phase vocabulary source.

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

Usage Guidelines4/5

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

The description gives clear usage context: 'This is the one place the five phase vocabulary is defined' and names consumers such as BaZi charts, Na Yin, zodiac element variants, and feng shui stars. It does not explicitly state when not to use the tool or name alternatives, but no sibling element tool exists, so the context is strong.

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

get_chinese_astrology_zodiac_animalsList the 12 Chinese zodiac animals - Sheng Xiao sign catalogueA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse 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
limitNoMaximum items to return per page. Range: 1-12, default 12.
offsetNoNumber of items to skip for pagination. Default 0.
compactNoSet 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

A4.2/5.0
Behavior4/5

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 valuable behavioral context beyond that: it specifies cycle ordering from Rat to Pig, lists exactly what each entry contains, and notes the intended use case. It does not mention pagination behavior or language fallback, but those are documented in the parameter schema.

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

Conciseness5/5

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

The description is two sentences long with no filler. The first sentence states the action and ordering; the second enumerates return fields, which is necessary since there is no output schema. The final phrase about the intended use earns its place by clarifying scope. The structure is front-loaded and tightly packed.

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

Completeness4/5

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

Given there is no output schema, the description compensates by listing the return fields. It covers the core behavior, ordering, and use case. It does not explicitly describe pagination or the effect of offset/limit on the 'whole set' promise, but those details are in the param schema. A mention of the single-id sibling would improve completeness, but the tool name provides a hint.

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

Parameters3/5

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

Schema description coverage is 100%, so each of the four parameters (lang, limit, offset, compact) already has a clear description. The tool description adds no parameter-specific meaning, which is acceptable because the baseline of 3 applies when the schema carries the full burden. No compensation needed.

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

Purpose5/5

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

The description starts with a specific verb and resource: 'Retrieve all twelve Chinese zodiac animals in cycle order, from Rat through Pig.' It enumerates the exact fields returned (machine id, Chinese character, pinyin, Earthly Branch, Five Element, yin/yang, traits), which uniquely positions it against siblings like get_chinese_astrology_zodiac_animals_id. The title reinforces the 12-animal catalogue, making the tool's purpose unmistakable.

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

Usage Guidelines4/5

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

The description clearly states the intended scenario: 'Built for sign pickers, zodiac cards and compatibility widgets that need the whole set in one call.' This gives context for when to choose it over a single-animal lookup. It does not explicitly name an alternative tool or state when-not-to-use, but the 'whole set in one call' phrasing provides a functional boundary.

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

get_chinese_astrology_zodiac_animals_idGet one Chinese zodiac animal - Full sign profile with compatibility partnersA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAnimal 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.
langNoResponse 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
compactNoSet 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

A4.2/5.0
Behavior4/5

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 goes further by disclosing the full set of returned data categories, including branch relationships and element variants, and does not contradict 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.

Conciseness5/5

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

Two dense, front-loaded sentences with no filler. The first sentence delivers the core action and return contents; the second states the intended use cases. Every clause earns its place and nothing repeats the structured schema information.

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

Completeness4/5

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

Even without an output schema, the description enumerates essentially all semantic return categories, which is enough for an agent to understand what it will receive. Minor gaps remain around exact response field names or edge-case behavior, but those are not required for selection or correct invocation given the fully documented parameters.

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

Parameters3/5

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

Schema description coverage is 100%, and every parameter (id, lang, compact) already has a detailed description, enum, default, or example in the schema. The tool description adds no parameter-level meaning beyond what the schema provides, so it meets the baseline.

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

Purpose5/5

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

The description opens with a specific verb and resource, 'Retrieve the complete profile of one Chinese zodiac animal,' then enumerates exactly what the profile contains. The singular 'one' distinguishes it from the plural-list sibling get_chinese_astrology_zodiac_animals and the dedicated compatibility endpoint.

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

Usage Guidelines4/5

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

It states the intended contexts ('Built for sign detail pages and compatibility features') and the singular scope, which makes the main alternative clear implicitly. However, it never explicitly warns against using it for pair compatibility or the full zodiac list, so the guidance 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.

get_chinese_astrology_zodiac_compatibility_sign1_sign2Chinese zodiac compatibility - Trine, six harmony, clash and harm analysisA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse 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
sign1YesFirst animal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig.
sign2YesSecond 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.
compactNoSet 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

A4.2/5.0
Behavior4/5

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

The annotations already establish readOnlyHint=true and destructiveHint=false, and the description stays consistent with those. It adds useful behavioral detail beyond the annotations: the six relations are mutually exclusive by construction, exactly one applies to any pair, a phase is returned only where branches combine, and the output includes a composed reading with strengths, frictions, and advice.

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

Conciseness5/5

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

The description is four focused sentences with no filler. It front-loads the purpose and method, then packs return semantics, exclusivity, and use cases into the remaining sentences, with every sentence earning its place.

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

Completeness4/5

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

For a read-only tool with four flat parameters, a fully documented schema, and no output schema, the description gives enough return-shaped context: relation, score, phase conditionally, and a composed reading. A precise JSON response shape is not specified, but the absence is minor given the clarity of the described outputs.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is appropriately 3. The description does not add much parameter-level meaning beyond identifying the input as two Chinese zodiac animals, but it does not need to because sign1, sign2, lang, and compact are all well-documented in the schema.

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

Purpose5/5

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

The description names a specific action (score and explain), a specific resource (the relationship between two Chinese zodiac animals), and a distinct method (classical branch relations rather than a lookup table of opinions). It lists the concrete outputs and clarifies that exactly one of six mutually exclusive relations applies, making the tool easy to tell apart from sibling compatibility tools.

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

Usage Guidelines4/5

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

The description gives clear intended contexts: matchmaking features, relationship reports, and compatibility widgets. It also contrasts itself with lookup-table-based opinion tools, but it does not explicitly say when not to use it or name an alternative such as bazi compatibility, so some exclusion guidance is left implicit.

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

get_chinese_astrology_zodiac_id_dailyDaily Chinese zodiac reading - Day pillar forecast by animal signA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesAnimal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig.
dateNoReading 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.
langNoResponse 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
compactNoSet 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.
timezoneNoSelects 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").

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the readOnlyHint and destructiveHint annotations, the description reveals meaningful behavior: content is derived from the actual sexagenary day pillar, uses six classical relations, is fixed for a date, and rolls over at midnight UTC. It also lists what the response contains. This is substantial value beyond annotation data.

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

Conciseness5/5

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

The description is dense but well organized: what it does, how it is computed, what it returns, and temporal behavior. Every sentence contributes information, and the key purpose is front-loaded.

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

Completeness4/5

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

With no output schema, the description sufficiently enumerates the returned fields and key behavior such as date rollover and timezone handling. Slight gaps remain in describing exact output shape and edge cases, but the schema covers the inputs and the description is otherwise complete for invocation.

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

Parameters4/5

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

All parameters are already well described in the schema, so the baseline is 3. The description adds useful context by explaining that content is date-fixed and rolls over at midnight and that UTC is the default, reinforcing the date/timezone semantics beyond the schema.

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

Purpose5/5

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

States a specific verb and resource: get one Chinese zodiac animal's daily reading. It also distinguishes the tool's mechanism from stock-text rotations and names the exact returned content, making it clearly different from sibling tools.

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

Usage Guidelines4/5

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

Clearly frames the tool as a daily, single-sign, sexagenary-based forecast and notes the day/timestamp rollover behavior. It does not explicitly name alternatives or exclusions relative to sibling bazi or calendar tools, but the scope is evident from the description.

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

post_chinese_astrology_bazi_annual_forecastCalculate BaZi annual forecast - Liu Nian yearly pillar APIA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesBirth 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.
langNoResponse 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
timeYesBirth 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.
yearYesGregorian 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.
compactNoSet 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.
latitudeNoBirth 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.
timezoneYesIANA 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 DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.
hourClockNoWhich 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.clock
longitudeNoBirth 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".
dayBoundaryNoWhich 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.split-zi
yearBoundaryNoWhich 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.li-chun

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile with readOnlyHint=true and destructiveHint=false. The description adds substantial behavioral context by listing exactly what is computed and returned: annual pillar, Ten God relations, hidden stem reading, branch relationships, ben ming nian, and pillar combinations. This gives an agent a much richer sense of the operation than the annotations alone.

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

Conciseness5/5

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

The description is two sentences with no filler. The first sentence front-loads the core action and the complete output scope; the second states the intended use cases and the key distinction from zodiac-only tools. The density is justified by the domain's complexity.

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

Completeness4/5

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

Given 11 parameters and no output schema, the description carries important semantic weight by explaining what the annual forecast contains and when it is useful, while the schema covers parameter mechanics. It could be more complete by describing the response shape, but the combination of description plus schema is sufficient for an agent to select and call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all 11 parameters with formats, enums, defaults, examples, and boundary rules. The description itself adds no per-parameter detail, only general context about reading a year against a natal chart, 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.

Purpose5/5

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

The description opens with a specific verb and resource: 'Read one Gregorian year against a natal BaZi chart.' It then enumerates the concrete returns, making the tool's function unmistakable, and closes by distinguishing it from a read 'against an animal sign,' which separates it from the zodiac sibling tools.

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

Usage Guidelines4/5

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

The description gives clear intended contexts: 'Built for yearly horoscope features, timing tools, and agents that need a year read against a specific chart.' It also provides a meaningful exclusion by contrasting with animal-sign readings. It does not name alternative sibling tools such as the luck-pillars endpoint, so the guidance is clear but not fully explicit.

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

post_chinese_astrology_bazi_chartGenerate BaZi chart - Four Pillars of Destiny calculator APIA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesBirth 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.
langNoResponse 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
timeYesBirth 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.
compactNoSet 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.
latitudeNoBirth 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.
timezoneYesIANA 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 DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.
hourClockNoWhich 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.clock
longitudeNoBirth 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".
dayBoundaryNoWhich 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.split-zi
yearBoundaryNoWhich 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.li-chun

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, and the description's 'Calculate' framing is fully consistent with them — no contradiction. Beyond the annotations, it discloses meaningful behavior: the day/year/hour boundary conventions are selectable, and 'the applied conventions come back on every response, so a chart is self-describing,' which gives agents a reproducibility guarantee. Error semantics (400s, DST resolution, hour ambiguity) are covered in the schema, and the convention-echo disclosure is genuine added context.

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

Conciseness5/5

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

Three sentences, each earning its place: what it computes and returns, the selectable-convention behavior, and the intended use cases. The long first sentence is justified because there is no output schema, so the return-value enumeration is the agent's primary window into what the tool produces; there is no fluff or repetition of schema content.

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

Completeness5/5

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

For a 10-parameter tool with no output schema, the description is remarkably complete: it enumerates every category of returned data, explains the self-describing convention behavior, and states the intended use cases. The 100%-covered schema supplies validation, defaults, and error semantics. Nothing an agent needs to decide whether to call it and what to expect is missing.

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

Parameters4/5

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 all ten parameters in depth, including validation constraints and 400 cases. The tool description adds value by synthesizing the three convention parameters (dayBoundary, yearBoundary, hourClock) into one guarantee — selectable conventions that come back on every response — helping an agent understand how those parameters interrelate and affect reproducibility.

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

Purpose5/5

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

Opens with a specific action and resource: 'Calculate a complete BaZi chart, the Four Pillars of Destiny, from a birth moment.' It then enumerates the full return set — four pillars, every Heavenly Stem and Earthly Branch, hidden stems, Ten God relations, Na Yin sounds, five-element balance, and combinations/clashes — which clearly distinguishes it from the narrower sibling endpoints like bazi_day_master, bazi_luck_pillars, and bazi_annual_forecast without needing their schemas.

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

Usage Guidelines4/5

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

The closing sentence gives a clear target scenario: 'Built for astrology apps, matchmaking services, and agents that need a Four Pillars reading they can reproduce.' That is strong contextual guidance for when this endpoint is the right choice. However, it never explicitly names sibling alternatives or states when-not-to-use this tool, so an agent must infer the boundary against the other bazi endpoints.

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

post_chinese_astrology_bazi_compatibilityCalculate BaZi compatibility - Four Pillars matchmaking APIA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse 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
compactNoSet 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.
personAYesBirth moment of the first person. Each subject carries its own school switches, so two charts built under different conventions can still be compared.
personBYesBirth moment of the second person.

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark it read-only, and the description adds substantial behavior: it returns both resolved charts, the Day Master five-phase relationship, the full interaction list with named positions, and a tallied score. It even explains that the interaction list is returned in full so a caller can recompute its own weighting, which is genuinely useful transparency.

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

Conciseness5/5

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

Every sentence earns its place: purpose, output contents, scoring transparency, and intended use. The description is dense but not bloated, and the primary action is front-loaded.

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

Completeness4/5

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

There is no output schema, so the description reasonably compensates by describing the returned charts, interactions, and score. It doesn't specify exact response fields, score ranges, or error behavior, but for this complexity level it gives an agent enough behavioral understanding to call the endpoint and interpret results.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema carries the parameter documentation. The description adds high-level context about what the two charts represent but doesn't add per-parameter meaning beyond the schema, matching the baseline.

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

Purpose5/5

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

The description states the specific verb 'Compare two BaZi charts pillar by pillar' and names the resource (two BaZi charts). It distinguishes this from single-chart and zodiac sibling tools by emphasizing a 'two-chart reading', matchmaking, and cross-chart interactions.

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

Usage Guidelines4/5

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

It explicitly says this is 'Built for matchmaking products, relationship features, and agents that need a defensible two-chart reading', which gives clear use-context. It doesn't name an alternative tool or explicitly say when not to use it, but the two-person matchmaking framing functionally separates it from the single-chart BaZi siblings.

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

post_chinese_astrology_bazi_day_masterCalculate Day Master strength - BaZi favorable element APIA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesBirth 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.
langNoResponse 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
timeYesBirth 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.
compactNoSet 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.
latitudeNoBirth 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.
timezoneYesIANA 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 DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.
hourClockNoWhich 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.clock
longitudeNoBirth 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".
dayBoundaryNoWhich 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.split-zi
yearBoundaryNoWhich 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.li-chun

TDQS

A4.3/5.0
Behavior4/5

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

With readOnlyHint=true and destructiveHint=false in the annotations, the description properly adds behavioral depth: it explains the classical three-factor method, the auditable score with per-factor contributions, and the full set of returned metrics. It enriches what annotations alone convey without 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.

Conciseness5/5

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

Three sentences with each one earning its place: the first states the core purpose, the second explains the methodology, and the third enumerates both the outputs and the intended use. Information is front-loaded and dense without being verbose.

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

Completeness5/5

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

Because there is no output schema, the description properly carries the burden of explaining return values, listing the verdict, auditable score, factor contributions, seasonal state, root count, headcount, and favorable/unfavorable lists. Combined with the fully self-documenting input schema, the agent has enough to invoke the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline applies: the schema already documents all 10 parameters in detail, including formats, defaults, enums, and conditional requirements. The description adds high-level context about the method but does not add per-parameter meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('Assess') and resource ('Day Master strength'), with a clear definition of what is being measured: how well the Day Master is supported by the rest of a BaZi chart and which elements help it. This clearly distinguishes it from sibling tools like bazi_chart, bazi_luck_pillars, and bazi_annual_forecast.

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

Usage Guidelines4/5

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

The description names the intended audience and use cases ('chart readers, remedy features, and agents that need the usable half of a Four Pillars reading'), which gives clear context for when to choose this tool. It does not explicitly list exclusions or alternatives, so it falls just short of a 5.

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

post_chinese_astrology_bazi_luck_pillarsCalculate luck pillars - BaZi Da Yun ten-year cycle APIA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesBirth 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.
langNoResponse 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
timeYesBirth 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.
countNoHow 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.
genderYesSubject 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.
compactNoSet 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.
latitudeNoBirth 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.
timezoneYesIANA 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 DST-correct offset for the birth date, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state on that date. Invalid timezones return 400 with a validation error.
hourClockNoWhich 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.clock
longitudeNoBirth 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".
annualYearsNoHow many consecutive years the annual overlay covers, 1 to 20. Ignored unless annualFromYear is present.
dayBoundaryNoWhich 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.split-zi
yearBoundaryNoWhich 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.li-chun
annualFromYearNoFirst 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.

TDQS

A4.2/5.0
Behavior4/5

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 valuable behavioral context beyond that: the direction rule for forward/backward sequence, the inclusion of a day count behind the start age, and the optional annual overlay. No contradictions 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.

Conciseness5/5

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

Three sentences with no fluff: the first states purpose and outputs, the second captures the critical direction rule, and the third gives use cases. It is front-loaded and every sentence earns its place without repeating schema information.

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

Completeness4/5

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

With no output schema, the description appropriately summarizes the return values at a semantic level. The 100% schema coverage handles parameter documentation, including boundary rules such as solar terms, day boundary, and timezone handling. It is complete enough for an agent to select and invoke the tool correctly, though concrete output field names are not given.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents all 14 parameters including defaults, formats, enums, and conditional requirements. The description mentions output semantics but adds no parameter-level meaning beyond what the schema already provides, matching the baseline of 3.

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

Purpose5/5

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

The description uses a specific verb ('Calculate') and a specific resource ('da yun luck pillars, the ten-year periods a BaZi chart walks through after birth'). It enumerates exactly what the endpoint returns (direction, start age, ten-year pillars, Ten God relation, annual overlay), which makes its purpose unmistakable and clearly distinguishes it from siblings like bazi_chart or bazi_day_master.

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

Usage Guidelines4/5

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

The description gives clear context for when to use the tool: 'Built for astrology apps, life-timing features, and agents that need a reproducible forecast spine.' It does not explicitly name alternatives or state when not to use it, so it falls short of a full 5, but the intended use case is clear enough for an agent to route correctly.

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

post_chinese_astrology_calendar_auspicious_daysFind auspicious days - Chinese date selection API for weddings and openingsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoResponse 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
compactNoSet 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.
endDateYesLast date of the range to search, inclusive. The range may not exceed 93 days.
activityYesActivity 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.
startDateYesFirst date of the range to search, inclusive.
avoidAnimalNoZodiac 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.

TDQS

A4.5/5.0
Behavior5/5

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 meaningful behavioral detail: result ranking, filtering against a protected zodiac animal, the 93-day limit, and that each candidate day includes officer, pillars, lunar date, and clash animal so reasoning is visible. This goes well beyond 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.

Conciseness5/5

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

The description is three sentences with no filler. It front-loads the core search behavior, explains the ranking and filtering logic, describes the response content, justifies the range cap, and closes with the intended audience. Every sentence contributes useful decision-making information.

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

Completeness5/5

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

With no output schema, the description properly compensates by explaining what each candidate day contains: 'its officer, its pillars, its lunar date and the animal it clashes with.' It also covers ordering, filtering, range limits, and representative use cases, which is enough for an agent to call the tool correctly and interpret results.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents every parameter. The description adds reinforcing context such as 'chosen activity' and 'zodiac animal to protect', and it echoes the 93-day range cap, but it does not provide new parameter-level format or syntax details beyond what the schema already offers.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Search a date range for the days a chosen activity is favoured on.' It further distinguishes itself from calendar sibling tools by mentioning ranking by the jian chu day officer, filtering by zodiac animal, and returning pillars and lunar dates. The title reinforces the purpose as date selection for weddings, openings, moving, and travel.

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

Usage Guidelines4/5

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

The description gives clear use context: 'Built for wedding planners, business opening tools, and moving and travel date pickers.' It also explains why the 93-day cap exists ('date selection is done inside a planning window rather than across a lifetime'). However, it does not explicitly state when not to use it or name alternative sibling tools.

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

post_chinese_astrology_calendar_lunar_dateConvert lunar and Gregorian dates - Chinese lunisolar calendar APIA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoGregorian date to convert to the lunisolar calendar. Send this OR the lunar fields, never both.
langNoResponse 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
compactNoSet 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.
lunarDayNoDay of the lunar month, 1 to 30. Requires lunarYear and lunarMonth.
lunarYearNoLunisolar year to convert back to a Gregorian date. Requires lunarMonth and lunarDay.
lunarMonthNoLunar month, 1 to 12. Requires lunarYear and lunarDay.
isLeapMonthNoSet true to address the leap repetition of lunarMonth rather than the first pass. Requesting a leap month a year does not have returns 400.

TDQS

A4.5/5.0
Behavior5/5

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

With readOnlyHint=true and destructiveHint=false already declared, the description adds substantial non-obvious behavioral context: UTC+8 reference meridian, winter-solstice month-11 rule, leap-month placement rules, timezone invariance, and exactly what the response reports. This goes well beyond 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.

Conciseness5/5

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

The description is four sentences with no filler. It front-loads the core conversion purpose, then efficiently adds computational rules, response contents, and use cases in descending order of importance.

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

Completeness5/5

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

The description covers the tool's purpose, timezone behavior, leap-month behavior, response contents, and suitable applications. Since there is no output schema, the response-content summary is valuable, and the input schema plus annotations complete the picture for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all seven parameters including mutual exclusivity, ranges, defaults, and dependencies. The description adds high-level conversion semantics but does not need to repeat parameter-specific details; the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb (Convert), resource (Chinese lunisolar calendar), and both conversion directions (Gregorian to lunar and lunar back to Gregorian), which makes the tool's purpose unmistakable. It also distinguishes itself from sibling calendar tools by emphasizing that both conversions happen in one endpoint.

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

Usage Guidelines4/5

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

The description gives concrete use cases—festival calendars, lunar-date birthdays, and apps that must handle leap months—so an agent can recognize when to choose this tool. It does not explicitly name alternative sibling endpoints or say when not to use it, leaving room for inference.

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

post_chinese_astrology_zodiac_signFind the Chinese zodiac animal for a birth date - Sheng Xiao calculatorA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesBirth 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.
langNoResponse 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
compactNoSet 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.
yearBoundaryNoWhich 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.lunar-new-year

TDQS

A4.4/5.0
Behavior4/5

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

With readOnlyHint=true and destructiveHint=false in the annotations, the safety profile is already covered, so the bar for additional credit is lower. The description adds genuine behavioral context beyond that: the two schools genuinely disagree on the year boundary, the choice is a request parameter, and the resolved convention is echoed back so the answer is self-describing. It also discloses the enriched result shape (animal, pillar, element), which matters because no output schema exists.

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

Conciseness5/5

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

Three sentences, each earning its place: the first states the core resolution and enriched output with a concrete example, the second flags the genuine ambiguity and how it is handled, and the third names use cases. The core action is front-loaded before any nuance, with zero filler.

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

Completeness4/5

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

With no output schema, the description correctly shoulders the burden of conveying return values — it names the zodiac animal, sexagenary pillar, Five Element phase, and the echoed convention. It also covers the one genuinely surprising behavior (January/February boundary disagreement), and the readOnly annotation covers safety. It does not explicitly distinguish itself from the get_chinese_astrology_zodiac_animals list tools, which a cautious agent might conflate with it.

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

Parameters4/5

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

Schema coverage is 100% and the individual parameter descriptions are already rich, so the baseline is 3. The tool description adds value above that by explaining why yearBoundary exists (school disagreement) and framing the date as 'a property of the year', plus the schema documents compact's lossless columnar tradeoff. The Metal Horse example also clarifies the output semantics that the parameters feed into, tying parameters to behavior.

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

Purpose5/5

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

The description uses a specific verb and resource: 'Resolve a birth date to its Chinese zodiac animal, the sexagenary year pillar behind it, and the Five Element phase of that year.' The concrete example (1990 → Metal Horse rather than Horse) makes the enriched scope unmistakable, and the focus on birth-date resolution with enriched output separates it from the sibling animal-list and BaZi routes.

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

Usage Guidelines4/5

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

The description explicitly names intended use cases: 'Built for sign lookups, onboarding forms and birthday features.' The yearBoundary parameter documentation goes further, telling agents this route answers the folk question and that 'the BaZi routes default to li-chun instead, because a chart and a folk sign are answering different questions' — an explicit when-not that routes agents away from the BaZi siblings. It stops short of naming the alternative list-lookup tools directly.

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. Dates show when Glama detected each change.

  1. 16 tool updates
    • First observedget_chinese_astrology_calendar_day_date
    • First observedget_chinese_astrology_calendar_monthly
    • First observedget_chinese_astrology_calendar_solar_terms_year
    • First observedget_chinese_astrology_elements
    • First observedget_chinese_astrology_zodiac_animals
    • First observedget_chinese_astrology_zodiac_animals_id
    • First observedget_chinese_astrology_zodiac_compatibility_sign1_sign2
    • First observedget_chinese_astrology_zodiac_id_daily
    • First observedpost_chinese_astrology_bazi_annual_forecast
    • First observedpost_chinese_astrology_bazi_chart
    • First observedpost_chinese_astrology_bazi_compatibility
    • First observedpost_chinese_astrology_bazi_day_master
    • First observedpost_chinese_astrology_bazi_luck_pillars
    • First observedpost_chinese_astrology_calendar_auspicious_days
    • First observedpost_chinese_astrology_calendar_lunar_date
    • First observedpost_chinese_astrology_zodiac_sign

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to calculate deterministic Bazi (Four Pillars) charts with True Solar Time and Earthly Branch interactions, avoiding LLM hallucination of calendrical math.
    6
    161
    140
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to perform Chinese metaphysics calculations including BaZi charts, Tong Shu indicators, solar terms, and more, using a verified engine with 740+ tests.
    8
    8
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides Chinese holiday information, lunar calendar conversion, traditional festivals, 24 solar terms, and BaZi (Eight Characters) calculations for AI assistants to accurately handle Chinese calendar queries and date conversions.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides accurate Chinese Bazi (八字) fortune-telling calculations including birth chart analysis, destiny forecasting, and Chinese calendar information. Addresses inaccuracies in existing AI fortune-telling tools by delivering precise Bazi data for personality analysis and metaphysical insights.
    286
    ISC
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.4/5.0
Disambiguation5/5

Every tool targets a distinct resource or action: calendar day/month/solar terms/auspicious days/lunar conversion, zodiac list/profile/compatibility/daily/sign, and BaZi chart/forecast/compatibility/day-master/luck pillars. Even the closest pairs, such as zodiac daily versus calendar day or annual forecast versus luck pillars, are clearly separated by their descriptions and inputs.

Naming Consistency4/5

All names follow the snake_case `[get|post]_chinese_astrology_<domain>_<resource>` structure, which is predictable and consistent. Minor deviations like `zodiac_animals_id` versus `zodiac_id_daily`, and the use of HTTP-method prefixes as tool verbs, keep it from being a perfect uniform verb_noun system.

Tool Count4/5

At 16 tools, the count is slightly above the typical 3–15 sweet spot, but the server covers three broad subdomains: almanac/calendar, zodiac, and BaZi. Each tool has a clear place, and there are no redundant entries, so the size is reasonable rather than bloated.

Completeness5/5

The tool surface covers the core workflows for each subdomain: full day and month almanac views, solar terms, lunar conversion, auspicious-day search, zodiac profiles and compatibility, sign resolution, and a complete BaZi chart/life-timing/compatibility suite. For a read-and-compute astrology API, there are no obvious dead ends or missing core operations.

Resources