Deterministic BaZi (Four Pillars) charts, Chinese almanac and saved FateTell charts.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Compute a BaZi chart from birth data: pillars with Ten Gods, hidden stems, Na Yin, Day Master, all luck pillars, palaces and today's pillars; southern-hemisphere births use cross-region rules. Use for a birth not saved in FateTell, e.g. "What is my BaZi? Born 1990-05-17 08:30 in Taipei". Not for a saved chart (get_saved_chart already has its pillars, luck pillars and judgment; do not rebuild its birth data for this), Day Master strength (get_bazi_judgment), calendar (get_almanac), Western astrology, or predicting events or years of accident, illness or death. Deterministic; nothing stored.
Birth data. No birthplace name or latitude is collected.
Language of the chart card shown to the user, as a BCP 47 tag, normally the language the user is writing in. Only zh-CN, zh-TW and en are supported; any other language falls back to en.
Default true. When false, today's pillars are omitted (today is null), which keeps the result smaller.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http mcp https://mcp.fatetell.com/mcp
Compute a BaZi chart from birth data: pillars with Ten Gods, hidden stems, Na Yin, Day Master, all luck pillars, palaces and today's pillars; southern-hemisphere births use cross-region rules. Use for a birth not saved in FateTell, e.g. "What is my BaZi? Born 1990-05-17 08:30 in Taipei". Not for a saved chart (get_saved_chart already has its pillars, luck pillars and judgment; do not rebuild its birth data for this), Day Master strength (get_bazi_judgment), calendar (get_almanac), Western astrology, or predicting events or years of accident, illness or death. Deterministic; nothing stored.
| Argument | Type | Description |
|---|---|---|
| birth* | object | Birth data. No birthplace name or latitude is collected. |
| locale | string | Language of the chart card shown to the user, as a BCP 47 tag, normally the language the user is writing in. Only zh-CN, zh-TW and en are supported; any other language falls back to en. |
| include_today | boolean | Default true. When false, today's pillars are omitted (today is null), which keeps the result smaller. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"birth"
],
"properties": {
"birth": {
"type": "object",
"required": [
"date",
"timezone",
"gender",
"hemisphere"
],
"properties": {
"date": {
"type": "string",
"description": "Birth date in the local calendar of the birthplace, YYYY-MM-DD: Gregorian by default; with calendar lunar, the Chinese lunar year, month (1-12) and day."
},
"time": {
"type": [
"string",
"null"
],
"description": "Local clock time at the birthplace, 24-hour HH:mm. Omit if unknown: the chart then uses 12:00 and reports hour_assumed."
},
"gender": {
"enum": [
"male",
"female"
],
"type": "string",
"description": "Determines whether the luck pillars run forward or backward."
},
"calendar": {
"enum": [
"solar",
"lunar"
],
"type": "string",
"description": "Default solar (Gregorian). Use lunar when the user gives a Chinese lunar birthday; the server converts it to Gregorian, so do not convert it yourself."
},
"timezone": {
"type": "string",
"description": "IANA time zone name of the birthplace, e.g. Asia/Taipei or Australia/Sydney. GMT+8 or UTC+8 style offsets are not accepted."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Birthplace longitude, -180 to 180. Only used when use_true_solar_time is true and only when the user supplies it; do not infer it from the birthplace. Never stored or logged."
},
"hemisphere": {
"enum": [
"north",
"south"
],
"type": "string",
"description": "Hemisphere of the birthplace. Judge it from the birthplace itself; it cannot be inferred from the time zone (Asia/Jakarta, Africa/Nairobi and America/Belem span the equator)."
},
"lunar_leap_month": {
"type": "boolean",
"description": "Default false. Only with calendar lunar: true when the birth was in a leap month, e.g. leap 4th month is month 04 with true."
},
"use_true_solar_time": {
"type": "boolean",
"description": "Default false. Set true only when the user explicitly asks for true solar time; FateTell's app does not apply it by default. When true and longitude is given, the birth time is corrected to true solar time; without longitude no correction is made and notes include true_solar_skipped_no_longitude."
}
},
"description": "Birth data. No birthplace name or latitude is collected."
},
"locale": {
"type": "string",
"description": "Language of the chart card shown to the user, as a BCP 47 tag, normally the language the user is writing in. Only zh-CN, zh-TW and en are supported; any other language falls back to en."
},
"include_today": {
"type": "boolean",
"description": "Default true. When false, today's pillars are omitted (today is null), which keeps the result smaller."
}
}
}Save a new chart to the connected account from name, gender, birth date (Gregorian or lunar), optional birth time and birthplace; time zone and hemisphere come from the birthplace as in the app. Returns the chart_id. Use when the user explicitly asks to save a chart; check list_saved_charts first to avoid duplicates. For another person the user must confirm consent (consent_attested); without it nothing is saved or cast. Not for casting without saving (use cast_bazi_chart), reading (use get_saved_chart) or editing existing charts. New charts return no pillars; read them with get_saved_chart.
| Argument | Type | Description |
|---|---|---|
| gender* | string | Determines whether the luck pillars run forward or backward. |
| subject | string | Whose chart this is, recorded for audit only. Default other. Every chart saved here is an additional chart; it never becomes the user's own primary chart. |
| calendar | string | Default solar (Gregorian). Use lunar when the user gives a Chinese lunar birthday; the server converts it to Gregorian, so do not convert it yourself. |
| birth_date* | string | Birth date in the local calendar of the birthplace, YYYY-MM-DD: Gregorian by default; with calendar lunar, the Chinese lunar year, month (1-12) and day. |
| birth_time | string | null | Local clock time at the birthplace, HH:mm. Omit if unknown; the chart is then marked as hour uncertain. |
| birthplace* |
Return the Chinese almanac for one to 31 consecutive days: Gregorian and lunar dates, solar terms, and the year, month and day pillars. The month pillar is given for both hemispheres. Use for questions like "What is today's day pillar?", "When is the next solar term?", or to get the stems and branches of upcoming days or months for date selection. Not for a person's chart or days: use get_saved_chart or cast_bazi_chart for a chart, get_daily_fortune or get_chart_calendar for a saved chart's days. Not for Western astrology. Deterministic; no personal data involved.
| Argument | Type | Description |
|---|---|---|
| days | integer | Number of consecutive days, 1 to 31. Default 1. |
| timezone | string | IANA time zone name used only to resolve the default start_date. Default UTC. |
| hemisphere | string | Which month pillar the text summary leads with. Default north. The structured result always includes both. |
| start_date | string | First date, YYYY-MM-DD, between 1900-01-01 and 2100-12-31. Default: today in timezone. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"days": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of consecutive days, 1 to 31. Default 1."
},
"timezone": {
"type": "string",
"description": "IANA time zone name used only to resolve the default start_date. Default UTC."
},
"hemisphere": {
"enum": [
"north",
"south"
],
"type": "string",
"description": "Which month pillar the text summary leads with. Default north. The structured result always includes both."
},
"start_date": {
"type": "string",
"description": "First date, YYYY-MM-DD, between 1900-01-01 and 2100-12-31. Default: today in timezone."
}
}
}Return FateTell's Day Master verdict (strong, weak, follow-strong, follow-weak) and ranked favorable, unfavorable and neutral elements under rule set v1.0, for birth data or a saved chart_id. Use when the user asks about strength or favorable elements for a birth not saved (pass birth), or for a saved chart whose judgment get_saved_chart reported as not yet available (pass chart_id). Not a substitute for the chart (use cast_bazi_chart for pillars). For a saved chart, get_saved_chart already includes this judgment. Deterministic; nothing stored. Requires an active FateTell membership.
| Argument | Type | Description |
|---|---|---|
| birth | object | Birth data to judge; computed on the fly and not stored. Give either birth or chart_id. |
| chart_id | string | chart_id from list_saved_charts, or "self" for the account holder's own chart. Returns the judgment stored with that chart. Give either birth or chart_id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"birth": {
"type": "object",
"required": [
"date",
"timezone",
"gender",
"hemisphere"
],
"properties": {
"date": {
"type": "string",
"description": "Birth date in the local calendar of the birthplace, YYYY-MM-DD: Gregorian by default; with calendar lunar, the Chinese lunar year, month (1-12) and day."
},
"time": {
"type": [
"string",
"null"
],
"description": "Local clock time at the birthplace, 24-hour HH:mm. Omit if unknown: the chart then uses 12:00 and reports hour_assumed."
},
"gender": {
"enum": [
"male",
"female"
],
"type": "string",
"description": "Determines whether the luck pillars run forward or backward."
},
"calendar": {
"enum": [
"solar",
"lunar"
],
"type": "string",
"description": "Default solar (Gregorian). Use lunar when the user gives a Chinese lunar birthday; the server converts it to Gregorian, so do not convert it yourself."
},
"timezone": {
"type": "string",
"description": "IANA time zone name of the birthplace, e.g. Asia/Taipei or Australia/Sydney. GMT+8 or UTC+8 style offsets are not accepted."
},
"longitude": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Birthplace longitude, -180 to 180. Only used when use_true_solar_time is true and only when the user supplies it; do not infer it from the birthplace. Never stored or logged."
},
"hemisphere": {
"enum": [
"north",
"south"
],
"type": "string",
"description": "Hemisphere of the birthplace. Judge it from the birthplace itself; it cannot be inferred from the time zone (Asia/Jakarta, Africa/Nairobi and America/Belem span the equator)."
},
"lunar_leap_month": {
"type": "boolean",
"description": "Default false. Only with calendar lunar: true when the birth was in a leap month, e.g. leap 4th month is month 04 with true."
},
"use_true_solar_time": {
"type": "boolean",
"description": "Default false. Set true only when the user explicitly asks for true solar time; FateTell's app does not apply it by default. When true and longitude is given, the birth time is corrected to true solar time; without longitude no correction is made and notes include true_solar_skipped_no_longitude."
}
},
"description": "Birth data to judge; computed on the fly and not stored. Give either birth or chart_id."
},
"chart_id": {
"type": "string",
"description": "chart_id from list_saved_charts, or \"self\" for the account holder's own chart. Returns the judgment stored with that chart. Give either birth or chart_id."
}
}
}Return a saved chart's view of upcoming dates: for each day (up to 31) the year, month and day pillars adjusted for this chart's hemisphere, relations with the natal pillars, month clash and solar terms; or for each month (up to 12) the month pillar and its natal relations. Use to pick a date or see upcoming days or months for a saved chart. Only stems, branches and relations are returned; interpretation is left to you. Not for one day's energy level or do/avoid items (use get_daily_fortune) or dates without a chart (use get_almanac). Needs a chart_id; it cannot take birth data.
| Argument | Type | Description |
|---|---|---|
| count | integer | Days 1 to 31 (default 7), or months 1 to 12 (default 3). |
| chart_id* | string | chart_id from list_saved_charts, or "self" for the account holder's own chart. |
| start_date | string | YYYY-MM-DD. Default: today in the account's time zone. For months, the month containing this date comes first. |
| granularity | string | day (default) or month. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chart_id"
],
"properties": {
"count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Days 1 to 31 (default 7), or months 1 to 12 (default 3)."
},
"chart_id": {
"type": "string",
"description": "chart_id from list_saved_charts, or \"self\" for the account holder's own chart."
},
"start_date": {
"type": "string",
"description": "YYYY-MM-DD. Default: today in the account's time zone. For months, the month containing this date comes first."
},
"granularity": {
"enum": [
"day",
"month"
],
"type": "string",
"description": "day (default) or month."
}
}
}Return a saved chart's daily fortune for one date: energy level (high / medium / low), the day's stems-and-branches relations with the natal chart, the day's do/avoid items, the day pillar, this chart's year and month pillars and month clash. Use for how a specific day looks for a saved chart, e.g. "How is today for me?". Pass chart_id (or "self") and optionally a date; the default is today in the account's time zone. Not for a day's pillars without a chart (use get_almanac), several days at once (use get_chart_calendar), or births not saved. Contains no generated text.
| Argument | Type | Description |
|---|---|---|
| date | string | YYYY-MM-DD, within 30 days before or after today. Default: today in the account's time zone. |
| locale | string | Language of the do/avoid items. Default: the account's interface language. |
| chart_id* | string | chart_id from list_saved_charts, or "self" for the account holder's own chart. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chart_id"
],
"properties": {
"date": {
"type": "string",
"description": "YYYY-MM-DD, within 30 days before or after today. Default: today in the account's time zone."
},
"locale": {
"enum": [
"zh-CN",
"zh-TW",
"en"
],
"type": "string",
"description": "Language of the do/avoid items. Default: the account's interface language."
},
"chart_id": {
"type": "string",
"description": "chart_id from list_saved_charts, or \"self\" for the account holder's own chart."
}
}
}Return the connected FateTell account: masked email, sign-in method, interface language, time zone, membership status, the permissions granted to this client, and this account's remaining quota for each tool. Use when the user asks which account is connected, whether membership is active, how many calls remain, or when a tool returned membership_required or rate_limited. Not for reading charts (use list_saved_charts / get_saved_chart). Read-only.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}Return one saved chart in full: birth date, time and time zone (no birthplace), pillars with Ten Gods, hidden stems and Na Yin, all luck pillars (current one marked), palaces, the stored Day Master strength and favorable elements, and today's pillars. Use whenever the user asks about a saved chart or "my chart"; luck pillars and judgment are included. chart_id comes from list_saved_charts, or "self" for the user's own chart. Not for births not saved (use cast_bazi_chart). Never re-cast or re-judge a saved chart with other tools. Not for predicting events or years of accident, illness or death.
| Argument | Type | Description |
|---|---|---|
| locale | string | Language of the chart card shown to the user, as a BCP 47 tag, normally the language the user is writing in. Only zh-CN, zh-TW and en are supported; any other language falls back to en. |
| chart_id* | string | chart_id from list_saved_charts, or "self" for the account holder's own chart. |
| include_today | boolean | Default true. When false, today's pillars are omitted (today is null). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chart_id"
],
"properties": {
"locale": {
"type": "string",
"description": "Language of the chart card shown to the user, as a BCP 47 tag, normally the language the user is writing in. Only zh-CN, zh-TW and en are supported; any other language falls back to en."
},
"chart_id": {
"type": "string",
"description": "chart_id from list_saved_charts, or \"self\" for the account holder's own chart."
},
"include_today": {
"type": "boolean",
"description": "Default true. When false, today's pillars are omitted (today is null)."
}
}
}List the charts saved in the connected FateTell account: id, display name, gender, whether it is the user's own chart, hemisphere, chart rule version and whether the chart has been computed. Use first whenever the user refers to "my chart", a family member's chart or any saved profile, to get the chart_id that get_saved_chart, get_bazi_judgment, get_daily_fortune and get_chart_calendar need. Do not ask for birth data when a saved chart may exist. Not for creating charts (use create_saved_chart) or reading a chart's content (use get_saved_chart). Birthplace and coordinates are never returned.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 3, 2026.
| string |
| Birthplace name as in the FateTell app, a city optionally with country, 1 to 60 characters. Not stored or logged by this server. |
| display_name* | string | Name for the chart, 1 to 20 characters, no line breaks or Markdown symbols. |
| consent_attested | boolean | Required true when subject is other: the user confirms they have that person's permission. |
| lunar_leap_month | boolean | Default false. Only with calendar lunar: true when the birth was in a leap month, e.g. leap 4th month is month 04 with true. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"display_name",
"gender",
"birth_date",
"birthplace"
],
"properties": {
"gender": {
"enum": [
"male",
"female"
],
"type": "string",
"description": "Determines whether the luck pillars run forward or backward."
},
"subject": {
"enum": [
"self",
"other"
],
"type": "string",
"description": "Whose chart this is, recorded for audit only. Default other. Every chart saved here is an additional chart; it never becomes the user's own primary chart."
},
"calendar": {
"enum": [
"solar",
"lunar"
],
"type": "string",
"description": "Default solar (Gregorian). Use lunar when the user gives a Chinese lunar birthday; the server converts it to Gregorian, so do not convert it yourself."
},
"birth_date": {
"type": "string",
"description": "Birth date in the local calendar of the birthplace, YYYY-MM-DD: Gregorian by default; with calendar lunar, the Chinese lunar year, month (1-12) and day."
},
"birth_time": {
"type": [
"string",
"null"
],
"description": "Local clock time at the birthplace, HH:mm. Omit if unknown; the chart is then marked as hour uncertain."
},
"birthplace": {
"type": "string",
"description": "Birthplace name as in the FateTell app, a city optionally with country, 1 to 60 characters. Not stored or logged by this server."
},
"display_name": {
"type": "string",
"description": "Name for the chart, 1 to 20 characters, no line breaks or Markdown symbols."
},
"consent_attested": {
"type": "boolean",
"description": "Required true when subject is other: the user confirms they have that person's permission."
},
"lunar_leap_month": {
"type": "boolean",
"description": "Default false. Only with calendar lunar: true when the birth was in a leap month, e.g. leap 4th month is month 04 with true."
}
}
}