Chinese Astrology MCP Server by RoxyAPI
Server Details
BaZi four pillars, Chinese zodiac, lunisolar calendar and almanac days for AI agents.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Available Tools
16 toolsget_chinese_astrology_calendar_day_dateGet the almanac for a day - Tong Shu API with day officers and mansionsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Gregorian date in YYYY-MM-DD format, evaluated at the reference meridian. Years 1900 to 2100. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 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.
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.
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.
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.
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.
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 APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | No | Gregorian year, 1900 to 2100. Defaults to the current UTC year when omitted, together with month. | |
| month | No | Gregorian month, 1 to 12. Defaults to the current UTC month when omitted, together with year. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 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.
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.
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.
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.
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.
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 instantsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| year | Yes | Solar year, 1900 to 2100. The year opens at Li Chun rather than on 1 January, so its last two terms fall in the following January. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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 cyclesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| limit | No | Maximum items to return per page. Range: 1-5, default 5. | |
| offset | No | Number of items to skip for pagination. Default 0. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 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.
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.
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.
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.
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.
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 catalogueARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| limit | No | Maximum items to return per page. Range: 1-12, default 12. | |
| offset | No | Number of items to skip for pagination. Default 0. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 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.
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.
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.
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.
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.
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 partnersARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Animal id, case-insensitive and punctuation-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig. The sheep and the ram are the same animal as the goat and resolve to goat. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare 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.
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.
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.
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.
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.
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 analysisARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| sign1 | Yes | First animal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig. | |
| sign2 | Yes | Second animal id, case-insensitive. The relation is symmetric, so swapping the two returns the same relationship and the same score, with the reading written from the first sign point of view. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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 signARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Animal id, case-insensitive. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig. | |
| date | No | Reading date in YYYY-MM-DD format. Past and future dates are both supported, for editorial scheduling and backfill. Defaults to the current day in the timezone parameter. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| timezone | No | Selects which day counts as current when date is omitted. Defaults to UTC, so the reading rolls over at 00:00 UTC each day. Pass the timezone of the end user to roll over on their local clock instead. Ignored when date is set. Accepts an IANA name (e.g. "America/New_York"), decimal hours (e.g. 5.5 for IST), or a fixed UTC offset (e.g. "-05:00"). |
TDQS
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.
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.
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.
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.
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.
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 APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. 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. | |
| year | Yes | Gregorian year to read against the natal chart. The annual pillar for that year is resolved under the same year boundary the request selected, so a li-chun reading and a lunar-new-year reading of the same calendar year can differ. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | No | Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0. | |
| timezone | Yes | IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the 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. | |
| hourClock | No | Which clock the HOUR branch is read from. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it. | clock |
| longitude | No | Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock". | |
| dayBoundary | No | Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth. | split-zi |
| yearBoundary | No | Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun. | li-chun |
TDQS
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.
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.
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.
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.
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.
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 APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. 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. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | No | Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0. | |
| timezone | Yes | IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the 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. | |
| hourClock | No | Which clock the HOUR branch is read from. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it. | clock |
| longitude | No | Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock". | |
| dayBoundary | No | Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth. | split-zi |
| yearBoundary | No | Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun. | li-chun |
TDQS
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.
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.
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.
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.
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.
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 APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| personA | Yes | Birth moment of the first person. Each subject carries its own school switches, so two charts built under different conventions can still be compared. | |
| personB | Yes | Birth moment of the second person. |
TDQS
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.
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.
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.
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.
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.
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 APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. 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. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | No | Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0. | |
| timezone | Yes | IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the 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. | |
| hourClock | No | Which clock the HOUR branch is read from. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it. | clock |
| longitude | No | Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock". | |
| dayBoundary | No | Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth. | split-zi |
| yearBoundary | No | Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun. | li-chun |
TDQS
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.
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.
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.
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.
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.
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 APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Sets the year, month and day pillars. The year pillar turns at Beginning of Spring rather than on 1 January, and the month pillar turns at each of the twelve minor solar terms rather than at a calendar month boundary. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| time | Yes | Birth time in 24-hour HH:MM:SS format. 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. | |
| count | No | How many ten-year luck pillars to return, 1 to 12. Eight covers eighty years from the start age, which reaches past a normal lifetime for most start ages. | |
| gender | Yes | Subject sex, used only to pick the luck-pillar direction: a male born in a yang-stem year and a female born in a yin-stem year run forward through the sexagenary cycle, and the other two combinations run backward. It affects nothing else in the response. | |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| latitude | No | Birth latitude in decimal degrees. Accepted for consistency with the other birth-data endpoints and does not affect any part of a BaZi chart. Defaults to 0. | |
| timezone | Yes | IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the 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. | |
| hourClock | No | Which clock the HOUR branch is read from. "clock" is civil time exactly as a birth certificate records it, which is what most calculators use and the default here. "local-mean" shifts to the mean sun over the birth longitude, a correction of up to 59 minutes at the edge of a wide time zone. "solar" adds the equation of time on top of that, up to a further 16 minutes. Both non-civil options need "longitude" in the request and return 400 without it. | clock |
| longitude | No | Birth longitude in decimal degrees. Positive is East, negative is West. Required when hourClock is "local-mean" or "solar", which shift the hour branch to the sun over the birth place; omitting it in either case returns 400. Ignored when hourClock is "clock". | |
| annualYears | No | How many consecutive years the annual overlay covers, 1 to 20. Ignored unless annualFromYear is present. | |
| dayBoundary | No | Which instant starts the sexagenary DAY, which only matters for a birth between 23:00 and 23:59. "midnight" is the classical position of the Ming compendium San Ming Tong Hui: the day turns at 00:00 and 23:00 to 23:59 is the late zi hour of the day that is ending, so the hour stem is taken from that day. "early-zi" turns the whole day at 23:00, the practice in Hong Kong, Taiwan and much of South East Asia. "split-zi" is the compromise most software implements and the default here: the day still turns at 00:00, but the hour stem is taken from the next day. The three give three different answers for a late-evening birth and identical answers for every other birth. | split-zi |
| yearBoundary | No | Which instant starts the sexagenary YEAR. "li-chun" is Beginning of Spring, around 4 February, and is the classical rule every BaZi text uses, so it is the default on this endpoint. "lunar-new-year" is the folk rule people mean when they say which animal they are, and it falls between late January and late February. The two disagree for any birth in the weeks between them: 14 February 2026 is a Wood Snake year under lunar-new-year and a Fire Horse year under li-chun. | li-chun |
| annualFromYear | No | First Gregorian year of the annual pillar overlay. Omit it to leave annualPillars out of the response entirely. The annual pillar is the year the chart is currently walking through, read against the ten-year luck pillar underneath it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds 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.
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.
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.
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.
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.
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 openingsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| endDate | Yes | Last date of the range to search, inclusive. The range may not exceed 93 days. | |
| activity | Yes | Activity to choose a date for. One of wedding, travel, moving-house, opening-business, signing-contracts, construction, groundbreaking, burial, medical-treatment, praying. Matching folds case and punctuation, so moving-house and MOVING_HOUSE both resolve. | |
| startDate | Yes | First date of the range to search, inclusive. | |
| avoidAnimal | No | Zodiac animal to protect. Days that clash with this animal are dropped from the results, which is how a date is chosen around the people attending rather than in the abstract. One of rat, ox, tiger, rabbit, dragon, snake, horse, goat, monkey, rooster, dog, pig. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds 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.
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.
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.
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.
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.
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 APIARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Gregorian date to convert to the lunisolar calendar. Send this OR the lunar fields, never both. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| lunarDay | No | Day of the lunar month, 1 to 30. Requires lunarYear and lunarMonth. | |
| lunarYear | No | Lunisolar year to convert back to a Gregorian date. Requires lunarMonth and lunarDay. | |
| lunarMonth | No | Lunar month, 1 to 12. Requires lunarYear and lunarDay. | |
| isLeapMonth | No | Set true to address the leap repetition of lunarMonth rather than the first pass. Requesting a leap month a year does not have returns 400. |
TDQS
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.
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.
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.
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.
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.
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 calculatorARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Birth date in YYYY-MM-DD format. Only the date is needed: the zodiac animal is a property of the year, so no time, timezone or place changes the answer. | |
| lang | No | Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English. | en |
| compact | No | Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens. | |
| yearBoundary | No | Which instant starts the zodiac year. lunar-new-year is the folk rule and the default on this route, because it is the rule people mean when they say what animal they are: the sign turns on Chinese New Year, between late January and late February. li-chun is the classical rule every Four Pillars text uses, turning the year at the solar term Beginning of Spring around 4 February. The two agree for roughly eleven months of every year and disagree for the weeks between them, so a 14 February 2026 birth is a Snake under lunar-new-year and a Horse under li-chun. The BaZi routes default to li-chun instead, because a chart and a folk sign are answering different questions. | lunar-new-year |
TDQS
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.
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.
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.
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.
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.
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.
16 tool updates
- First observed
get_chinese_astrology_calendar_day_date - First observed
get_chinese_astrology_calendar_monthly - First observed
get_chinese_astrology_calendar_solar_terms_year - First observed
get_chinese_astrology_elements - First observed
get_chinese_astrology_zodiac_animals - First observed
get_chinese_astrology_zodiac_animals_id - First observed
get_chinese_astrology_zodiac_compatibility_sign1_sign2 - First observed
get_chinese_astrology_zodiac_id_daily - First observed
post_chinese_astrology_bazi_annual_forecast - First observed
post_chinese_astrology_bazi_chart - First observed
post_chinese_astrology_bazi_compatibility - First observed
post_chinese_astrology_bazi_day_master - First observed
post_chinese_astrology_bazi_luck_pillars - First observed
post_chinese_astrology_calendar_auspicious_days - First observed
post_chinese_astrology_calendar_lunar_date - First observed
post_chinese_astrology_zodiac_sign
Frequently Asked Questions
Claiming proves that you control a remote MCP connector. It does not move, proxy, or interrupt the server.
Open the connector listing, choose Claim ownership, and sign in to Glama.
Complete one verification method:
GitHub identity — fastest for official registry listings. For a namespace such as
io.github.alice/server, link the matching GitHub user, then choose Claim with GitHub. An organization namespace such asio.github.acme/serveralso needs that organization to have installed the Glama AI GitHub App and approved its permissions, because GitHub discloses organization membership only to apps it has installed. Use HTTP or DNS when it has not.HTTP challenge — works when you can deploy a public file. Generate a token, publish the exact JSON Glama shows at
/.well-known/glama.jsonon the same origin as the connector, then choose Check HTTP challenge.DNS challenge — works when you control DNS but cannot change the server. Generate a token, create the exact TXT record Glama shows, wait for it to propagate, then choose Check DNS challenge.
After verification, Glama sends a confirmation email and gives you access to listing details, thumbnails, health checks, and analytics. Keep the HTTP file or DNS record in place: Glama periodically checks it and ownership remains verified while the token is discoverable.
The HTTP ownership file has this structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"claim": "glama_claim_..."
}Claim tokens are opaque, stable, and bound to the signed-in Glama account. They contain no email address or other personal information. If Glama can no longer discover a verified HTTP or DNS token, it starts a seven-day grace period before removing claim-based access. Restore the same token during that period to keep ownership verified. Never publish an email address, Glama session token, GitHub token, or connector credential as ownership proof.
If verification fails, confirm that you copied the current token exactly. The HTTP file must be public, return valid JSON with a successful HTTP response, and stay on the connector's origin. DNS changes may need more time to propagate. A claim cannot transfer to a different origin or hostname: if the connector target changes, Glama starts the grace period and the new target must be claimed separately after the previous claim is released.
For a connector linked to the official MCP Registry, registry updates continue to replace its name, description, and URL by default. After claiming, open Manage connector and enable Use Glama listing details as the source of truth if edits made on Glama should be preserved. Categories and thumbnails are always managed on Glama; registry linkage and technical connection settings continue to sync.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
To improve your MCP server's ranking:
Claim ownership of the server listing
Complete the server profile with an accurate description and thumbnail
Provide a test profile so Glama can connect to and evaluate the server
Keep tool definitions clear and complete to earn a high Tool Definition Quality Score (TDQS)
Route real usage through the Glama Gateway; more recorded successful server uses also improve the ranking
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Connectors
Chinese almanac: lunar calendar, BaZi 八字, daily 宜忌, lucky-day picker, public holidays.
Generate BaZi charts from birth details. Explore Four Pillars, solar terms, and Luck Pillars for d…
Chinese metaphysics (bazi, qimen, 5-element) as decision-support tools for AI agents.
BaZi (Chinese Four Pillars) chart calculator. Structured chart data only, no predictions.
Related MCP Servers
AlicenseAqualityAmaintenanceEnables AI agents to calculate deterministic Bazi (Four Pillars) charts with True Solar Time and Earthly Branch interactions, avoiding LLM hallucination of calendrical math.6161140MIT- AlicenseAqualityCmaintenanceEnables AI agents to perform Chinese metaphysics calculations including BaZi charts, Tong Shu indicators, solar terms, and more, using a verified engine with 740+ tests.88MIT
- AlicenseNot gradedqualityBmaintenanceProvides 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.3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides 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.286ISC
Glama MCP Gateway
Add one secure layer between your agents and this server.
TDQS
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.
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.
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.
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.