Auspice BaZi — Four Pillars Chart
Cast a BaZi (Four Pillars) chart with true solar time, plus a reflective personality sketch.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"bazi": {
"url": "https://auspiceoracle.com/mcp/bazi"
}
}
}Remote endpoints
https://auspiceoracle.com/mcp/bazistreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢cast_chart(year, month, day, hour, minute, ...)
Cast a BaZi / Four Pillars chart the right way round: true solar time correction FIRST (DST + longitude + equation of time), then the four pillars with hidden stems and Na Yin, day master identity, and luck cycles. Also casts a comparison chart from raw clock time and reports exactly what calculators that skip the correction would get wrong for this birth. Returns a formatted scroll. If your client renders the chart card (widget) for the user, do NOT repeat the chart, pillars or link in text — add only a short plain-language walkthrough. Otherwise begin your reply with the scroll EXACTLY as returned, inside a code block, without redrawing or reformatting it; NEVER show the raw JSON / structured data to the user (the scroll is the display form); add your own walkthrough only after it. Runs on the production Auspice Oracle engine (same conventions as auspiceoracle.com/en/method). Facts only: no strength verdicts, no favorable elements, no interpretation. Deterministic.
Input Schema
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"minimum": 1900,
"maximum": 2100,
"description": "Birth year, Gregorian calendar (engine ephemeris covers 1900–2100)"
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Birth month, 1–12"
},
"day": {
"type": "integer",
"minimum": 1,
"maximum": 31,
"description": "Birth day of month, 1–31"
},
"hour": {
"type": "integer",
"minimum": 0,
"maximum": 23,
"description": "Recorded wall-clock hour, 24-hour format"
},
"minute": {
"type": "integer",
"minimum": 0,
"maximum": 59,
"description": "Recorded wall-clock minute, 0–59"
},
"timeZone": {
"type": "string",
"description": "IANA time zone of the birthplace, e.g. 'Asia/Shanghai', 'America/Vancouver'"
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Birthplace longitude in degrees, east positive (Beijing ≈ 116.4, Vancouver ≈ -123.1)"
},
"lang": {
"description": "Language of the rendered output — pass the language the user is conversing in. Defaults to 'en'.",
"type": "string",
"enum": [
"en",
"zh"
]
},
"gender": {
"type": "string",
"enum": [
"male",
"female"
],
"description": "Sets luck-cycle direction (a charting convention, not an identity statement)"
}
},
"required": [
"year",
"month",
"day",
"hour",
"minute",
"timeZone",
"longitude",
"gender"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"pillars": {
"type": "object",
"properties": {
"year": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
},
"month": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
},
"day": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
},
"hour": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
}
},
"required": [
"year",
"month",
"day",
"hour"
],
"additionalProperties": false
},
"dayMaster": {
"type": "object",
"properties": {
"gan": {
"type": "string"
},
"pinyin": {
"type": "string"
},
"element": {
"type": "string",
"description": "Five-element of the day stem (Chinese)"
},
"elementEn": {
"type": "string"
},
"emoji": {
"type": "string",
"description": "Identity-seal emoji for the day master (ten-stem lookup)"
},
"image": {
"type": "string",
"description": "Traditional image of the stem, e.g. 钗钏之金"
},
"imageEn": {
"type": "string"
},
"motto": {
"type": "string",
"description": "Fixed brand motto for this day master (Chinese)"
},
"mottoEn": {
"type": "string"
}
},
"required": [
"gan",
"pinyin",
"element",
"elementEn",
"emoji",
"image",
"imageEn",
"motto",
"mottoEn"
],
"additionalProperties": false
},
"season": {
"type": "object",
"properties": {
"monthBranch": {
"type": "string"
},
"zh": {
"type": "string"
},
"en": {
"type": "string"
}
},
"required": [
"monthBranch",
"zh",
"en"
],
"additionalProperties": false,
"description": "Season of the month branch (deterministic lookup)"
},
"lunarDate": {
"type": "string"
},
"castFrom": {
"type": "string",
"description": "The instant the chart was cast from (true solar time), YYYY-MM-DD HH:mm"
},
"solarCorrection": {
"type": "object",
"properties": {
"correctionMinutes": {
"type": "number",
"description": "Total correction; the three parts sum exactly to it"
},
"parts": {
"type": "object",
"properties": {
"dstMinutes": {
"type": "number"
},
"longitudeMinutes": {
"type": "number"
},
"equationOfTimeMinutes": {
"type": "number"
}
},
"required": [
"dstMinutes",
"longitudeMinutes",
"equationOfTimeMinutes"
],
"additionalProperties": false
},
"minutesToBoundary": {
"type": "number"
},
"boundaryRisk": {
"type": "boolean",
"description": "Within 8 min of an hour-branch boundary"
},
"nonexistentWallTime": {
"type": "object",
"properties": {
"hit": {
"type": "boolean"
},
"gapMinutes": {
"type": "number"
}
},
"required": [
"hit",
"gapMinutes"
],
"additionalProperties": false
}
},
"required": [
"correctionMinutes",
"parts",
"minutesToBoundary",
"boundaryRisk",
"nonexistentWallTime"
],
"additionalProperties": false
},
"naiveComparison": {
"type": "object",
"properties": {
"differs": {
"type": "boolean",
"description": "True when a chart cast from raw clock time (no solar correction) would differ"
},
"pillarsChanged": {
"type": "array",
"items": {
"type": "string"
},
"description": "Which pillars differ, e.g. ['hour']"
},
"hourBranchShift": {
"anyOf": [
{
"type": "object",
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"from",
"to"
],
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Hour-branch move caused by the correction (naive → corrected), null if unchanged"
}
},
"required": [
"differs",
"pillarsChanged",
"hourBranchShift"
],
"additionalProperties": false,
"description": "What calculators that skip true solar time would get wrong for this exact birth"
},
"luckCycles": {
"type": "object",
"properties": {
"startSolarDate": {
"type": "string"
},
"cycles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string"
},
"startAge": {
"type": "number"
},
"endAge": {
"type": "number"
},
"startYear": {
"type": "number"
},
"endYear": {
"type": "number"
}
},
"required": [
"ganZhi",
"startAge",
"endAge",
"startYear",
"endYear"
],
"additionalProperties": false
}
}
},
"required": [
"startSolarDate",
"cycles"
],
"additionalProperties": false
},
"fullReadingUrl": {
"type": "string"
}
},
"required": [
"pillars",
"dayMaster",
"season",
"lunarDate",
"castFrom",
"solarCorrection",
"naiveComparison",
"luckCycles",
"fullReadingUrl"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢personality_sketch(year, month, day, hour, minute, ...)
Step 1 of 2 for a personality sketch. Casts the chart and returns the chart facts plus a fill-in template (象 image / 里 beneath / 行 practice) for YOU, the assistant, to write — a short literary sketch grounded only in the returned facts, within the stated limits (no strength verdict, no favorable elements, no Ten Gods, no luck-cycle reading). Step 2: pass your three texts to compose_sketch and present its framed sheet verbatim. Deterministic facts; the prose is yours; the framing is the server’s.
Input Schema
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"minimum": 1900,
"maximum": 2100,
"description": "Birth year, Gregorian calendar (engine ephemeris covers 1900–2100)"
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Birth month, 1–12"
},
"day": {
"type": "integer",
"minimum": 1,
"maximum": 31,
"description": "Birth day of month, 1–31"
},
"hour": {
"type": "integer",
"minimum": 0,
"maximum": 23,
"description": "Recorded wall-clock hour, 24-hour format"
},
"minute": {
"type": "integer",
"minimum": 0,
"maximum": 59,
"description": "Recorded wall-clock minute, 0–59"
},
"timeZone": {
"type": "string",
"description": "IANA time zone of the birthplace, e.g. 'Asia/Shanghai', 'America/Vancouver'"
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Birthplace longitude in degrees, east positive (Beijing ≈ 116.4, Vancouver ≈ -123.1)"
},
"lang": {
"description": "Language of the rendered output — pass the language the user is conversing in. Defaults to 'en'.",
"type": "string",
"enum": [
"en",
"zh"
]
}
},
"required": [
"year",
"month",
"day",
"hour",
"minute",
"timeZone",
"longitude"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"dayMaster": {
"type": "object",
"properties": {
"gan": {
"type": "string"
},
"pinyin": {
"type": "string"
},
"element": {
"type": "string",
"description": "Five-element of the day stem (Chinese)"
},
"elementEn": {
"type": "string"
},
"emoji": {
"type": "string",
"description": "Identity-seal emoji for the day master (ten-stem lookup)"
},
"image": {
"type": "string",
"description": "Traditional image of the stem, e.g. 钗钏之金"
},
"imageEn": {
"type": "string"
},
"motto": {
"type": "string",
"description": "Fixed brand motto for this day master (Chinese)"
},
"mottoEn": {
"type": "string"
}
},
"required": [
"gan",
"pinyin",
"element",
"elementEn",
"emoji",
"image",
"imageEn",
"motto",
"mottoEn"
],
"additionalProperties": false
},
"pillars": {
"type": "object",
"properties": {
"year": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
},
"month": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
},
"day": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
},
"hour": {
"type": "object",
"properties": {
"ganZhi": {
"type": "string",
"description": "Stem-branch pair, e.g. 庚午"
},
"hiddenStems": {
"type": "array",
"items": {
"type": "string"
},
"description": "Hidden stems of the branch, principal qi first"
},
"naYin": {
"type": "string",
"description": "Na Yin of the pillar (Chinese)"
},
"naYinEn": {
"type": "string",
"description": "Na Yin, site-locked English name"
}
},
"required": [
"ganZhi",
"hiddenStems",
"naYin",
"naYinEn"
],
"additionalProperties": false
}
},
"required": [
"year",
"month",
"day",
"hour"
],
"additionalProperties": false
},
"season": {
"type": "object",
"properties": {
"monthBranch": {
"type": "string"
},
"zh": {
"type": "string"
},
"en": {
"type": "string"
}
},
"required": [
"monthBranch",
"zh",
"en"
],
"additionalProperties": false,
"description": "Season of the month branch (deterministic lookup)"
},
"boundaryRisk": {
"type": "boolean"
},
"fullReadingUrl": {
"type": "string"
}
},
"required": [
"dayMaster",
"pillars",
"season",
"boundaryRisk",
"fullReadingUrl"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}🟢compose_sketch(year, month, day, hour, minute, ...)
Step 2 of 2 for a personality sketch: submit the three sections you wrote after personality_sketch (image / beneath / practice, in the same lang) and receive the finished framed sheet — the fixed MIRROR line, limits, quotation, link and signature are assembled server-side. Present the returned sheet to the user VERBATIM as your reply; do not edit or add to it (if your client renders the sheet card for the user, do not repeat it in text — say nothing more than a one-line closing). Rejects fills that stray into forbidden territory (Ten Gods, strength, favorable elements, luck cycles) — rewrite and resubmit if that happens.
Input Schema
{
"type": "object",
"properties": {
"year": {
"type": "integer",
"minimum": 1900,
"maximum": 2100,
"description": "Birth year, Gregorian calendar (engine ephemeris covers 1900–2100)"
},
"month": {
"type": "integer",
"minimum": 1,
"maximum": 12,
"description": "Birth month, 1–12"
},
"day": {
"type": "integer",
"minimum": 1,
"maximum": 31,
"description": "Birth day of month, 1–31"
},
"hour": {
"type": "integer",
"minimum": 0,
"maximum": 23,
"description": "Recorded wall-clock hour, 24-hour format"
},
"minute": {
"type": "integer",
"minimum": 0,
"maximum": 59,
"description": "Recorded wall-clock minute, 0–59"
},
"timeZone": {
"type": "string",
"description": "IANA time zone of the birthplace, e.g. 'Asia/Shanghai', 'America/Vancouver'"
},
"longitude": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Birthplace longitude in degrees, east positive (Beijing ≈ 116.4, Vancouver ≈ -123.1)"
},
"lang": {
"description": "Language of the rendered output — pass the language the user is conversing in. Defaults to 'en'.",
"type": "string",
"enum": [
"en",
"zh"
]
},
"image": {
"type": "string",
"minLength": 10,
"maxLength": 600,
"description": "Your 象 section: the day-master image, two or three sentences"
},
"beneath": {
"type": "string",
"minLength": 10,
"maxLength": 400,
"description": "Your 里 section: one visible-vs-hidden-stems contrast, one sentence"
},
"practice": {
"type": "string",
"minLength": 4,
"maxLength": 160,
"description": "Your 行 section: one small self-observation to try today, imperative"
}
},
"required": [
"year",
"month",
"day",
"hour",
"minute",
"timeZone",
"longitude",
"image",
"beneath",
"practice"
],
"$schema": "http://json-schema.org/draft-07/schema#"
}Output Schema
{
"type": "object",
"properties": {
"sheet": {
"type": "string",
"description": "The finished sketch sheet — show it to the user verbatim"
},
"fullReadingUrl": {
"type": "string"
}
},
"required": [
"sheet",
"fullReadingUrl"
],
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false
}Community
Evidence