Skip to main content
Glama

Interactive BaZi Four Pillars Explorer

explore_bazi_chart
Read-onlyIdempotent

Generate an interactive Four Pillars (BaZi) chart from birth date, time, and place, revealing Day Master identity, Ten Gods, and Wu Xing element balance.

Instructions

Use this when the user asks 'what's my BaZi', 'my Four Pillars', 'what's my Day Master', 'what's my Chinese zodiac animal and element' or 'my Chinese astrology chart'. Returns an interactive Four Pillars (四柱命盘) explorer (inline in Claude and ChatGPT; text summary elsewhere): the Year, Month, Day and Hour pillars — each with Heavenly Stem (天干), Earthly Branch (地支), Ten God label and element color — plus the Day Master identity and a Wu Xing (五行) element balance bar; click any pillar for what it reveals about that life domain.

CREDIT COST: 3 credits per call (1 base + 2 visual render).

Input Schema

NameRequiredDescriptionDefault
dayNoBirth day of month (1–31).
hourNo0–23. Default 12.
yearNoGregorian birth year, e.g. 1987.
monthNoBirth month (1–12).
minuteNo0–59. Default 0.
datetimeNoInstead of year/month/day: ISO 8601 read as LOCAL birth-place time, so zone-less is correct here; a Z/offset value is used together with timezone.
latitudeNoBirth latitude, decimal degrees (north+).
timezoneNoIANA zone of the birth place; needed for a zoned datetime.
longitudeNoBirth longitude.
day_boundaryNoDay-pillar cutover convention. Default zi_hour.
year_boundaryNoYear-pillar cutover convention. Default lichun.
true_solar_timeNoApply true solar time correction (needs latitude+longitude).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changedv4.29.0
    • changedInput schema / properties / datetime / description
      Previous value: -"Alternative to year/month/day: ISO 8601 datetime read as LOCAL wall-clock time at the birth place — BaZi pillars are local by definition, so a zone-less value is correct here and is NOT converted to UTC. A value carrying a 'Z' or offset is used together with timezone."New value: +"Instead of year/month/day: ISO 8601 read as LOCAL birth-place time, so zone-less is correct here; a Z/offset value is used together with timezone."
    • changedInput schema / properties / hour / description
      Previous value: -"Birth hour (0–23). Optional, defaults to 12 (noon). Chinese shí hours are 2-hour blocks — precision within a 2-hour window is sufficient."New value: +"0–23. Default 12."
    • changedInput schema / properties / longitude / description
      Previous value: -"Birth longitude, decimal degrees (east+)."New value: +"Birth longitude."
    • changedInput schema / properties / minute / description
      Previous value: -"Birth minute (0–59). Optional, defaults to 0. Only matters under true_solar_time or near a boundary."New value: +"0–59. Default 0."
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone name for the birth place, e.g. 'Asia/Shanghai'. Required to convert a zoned datetime back to local clock; also frames the year/month solar-term boundary."New value: +"IANA zone of the birth place; needed for a zoned datetime."
  2. Changed1 schema field changedv4.24.2
    • changedInput schema / properties / datetime / description
      Previous value: -"Alternative to year/month/day: ISO 8601 datetime read as LOCAL wall-clock time at the birth place — BaZi pillars are local by definition, so a zone-less value is correct here and is NOT converted to UTC. If it carries a 'Z' or offset, also pass timezone."New value: +"Alternative to year/month/day: ISO 8601 datetime read as LOCAL wall-clock time at the birth place — BaZi pillars are local by definition, so a zone-less value is correct here and is NOT converted to UTC. A value carrying a 'Z' or offset is used together with timezone."
  3. Changed7 schema fields changedv4.12.0
    • addedInput schema / properties / day_boundary
      Added value: +{
      +  "description": "Day-pillar cutover convention. Default zi_hour.",
      +  "enum": [
      +    "zi_hour",
      +    "midnight"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / latitude
      Added value: +{
      +  "description": "Birth latitude, decimal degrees (north+).",
      +  "type": "number"
      +}
    • addedInput schema / properties / longitude
      Added value: +{
      +  "description": "Birth longitude, decimal degrees (east+).",
      +  "type": "number"
      +}
    • addedInput schema / properties / minute
      Added value: +{
      +  "description": "Birth minute (0–59). Optional, defaults to 0. Only matters under true_solar_time or near a boundary.",
      +  "type": "integer"
      +}
    • changedInput schema / properties / timezone / description
      Previous value: -"IANA timezone name for the birth place, e.g. 'Asia/Shanghai'. Only needed when datetime carries a 'Z' or ±HH:MM offset."New value: +"IANA timezone name for the birth place, e.g. 'Asia/Shanghai'. Required to convert a zoned datetime back to local clock; also frames the year/month solar-term boundary."
    • addedInput schema / properties / true_solar_time
      Added value: +{
      +  "description": "Apply true solar time correction (needs latitude+longitude).",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / year_boundary
      Added value: +{
      +  "description": "Year-pillar cutover convention. Default lichun.",
      +  "enum": [
      +    "lichun",
      +    "cny"
      +  ],
      +  "type": "string"
      +}
  4. Addedv4.8.0

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds meaningful behavior beyond them: rendering differs by client (inline interactive in Claude/ChatGPT, text summary elsewhere), the result is clickable per pillar, and there is a stated cost of 3 credits per call (1 base + 2 visual render). Those are non-obvious facts an agent cannot infer from schema or annotations.

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

Conciseness4/5

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

Trigger phrases are front-loaded, followed by output content and then cost, so the most decision-relevant information comes first. The quoted example utterances are slightly verbose but they serve routing, so waste is minimal.

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

Completeness4/5

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

There is no output schema, and the description compensates well by describing both the returned pillars and the client-dependent rendering format. The only gap is practical input guidance (when to use datetime+timezone vs. year/month/day, and that true_solar_time needs lat/long), which the schema covers but the description does not tie together.

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

Parameters3/5

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

Schema description coverage is 100% across all 12 parameters (including the day_boundary, year_boundary, and true_solar_time conventions), so the schema already carries parameter meaning. The description adds no parameter-level guidance of its own, so the baseline 3 applies.

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

Purpose5/5

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

The description pairs a specific verb ('explore') with a specific resource ('Four Pillars / 四柱命盘') and enumerates the exact artifacts returned: Year/Month/Day/Hour pillars, Heavenly Stem, Earthly Branch, Ten God, Day Master, and Wu Xing balance. It also lists the user phrasings that map to it, making it easy to distinguish from siblings like bazi_annual_pillar or explore_vedic_chart.

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

Usage Guidelines4/5

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

The opening 'Use this when the user asks…' clause gives concrete trigger utterances, which is exactly the kind of routing guidance an agent needs. It stops short of naming alternatives or exclusions (e.g. when to prefer bazi_annual_pillar or a Vedic/Human Design chart), so it is clear context but not explicit when-not guidance.

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