Deterministic calendars and cosmic date JSON for AI agents via MCP (Gregorian 1900-2100).
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.
USE for one Magian Grand Solar Age board by age_no (0..89; larger values wrap via mod 90). No birth date / no PII. NOT Long Range Journey; NOT get_age_spread person slice. RETURNS exactly 52 seats: card ref + age_spread_pos + planet_row + planet_col + is_fixed_card. Fixed seats: J hearts@11, 8 clubs@21, K spades@52.
Magian age board index (0..89 preferred; wraps via f_age_mod90)
USE for one Magian Grand Solar Age board by age_no (0..89; larger values wrap via mod 90). No birth date / no PII. NOT Long Range Journey; NOT get_age_spread person slice. RETURNS exactly 52 seats: card ref + age_spread_pos + planet_row + planet_col + is_fixed_card. Fixed seats: J hearts@11, 8 clubs@21, K spades@52.
| Argument | Type | Description |
|---|---|---|
| age_no* | integer | Magian age board index (0..89 preferred; wraps via f_age_mod90) |
{
"type": "object",
"required": [
"age_no"
],
"properties": {
"age_no": {
"type": "integer",
"description": "Magian age board index (0..89 preferred; wraps via f_age_mod90)"
}
},
"additionalProperties": false
}USE for one person's Magian Age Spread board seat: birth_date + as_of_date (completed civil years; no wall clock). NOT the 90-year Long Range Journey theme card; NOT get_date sky/calendars; NOT two-person scoring. RETURNS compact cosmic birth card + age_spread {age_civil, age_no (mod 90), age_aliases, age_spread_pos, planet_row, planet_col, is_fixed_card}. Feb-29 follows Postgres age(). Error as_of_before_birth when as_of_date < birth_date.
| Argument | Type | Description |
|---|---|---|
| as_of_date* | string | As-of civil date YYYY-MM-DD (pass host today when asking current age board) |
| birth_date* | string | Civil birth date YYYY-MM-DD (month/day resolves Cosmic birth card) |
{
"type": "object",
"required": [
"birth_date",
"as_of_date"
],
"properties": {
"as_of_date": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "As-of civil date YYYY-MM-DD (pass host today when asking current age board)"
},
"birth_date": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Civil birth date YYYY-MM-DD (month/day resolves Cosmic birth card)"
}
},
"additionalProperties": false
}USE when comparing exactly two people by Gregorian date. NOT for one date (moon/season/Rx/weekday/leap year/day_ruler → get_date) or names → get_name. Requires date_a and date_b. RETURNS scored dyad: cosmic_card_a/b (each side is full get_date shape incl. tarot_majors.greer/tarot_school, karma, planetary_spread; Cosmic card = birth = life = sun via also_called; planetary_spread and retrogrades_active planets include planet_type/symbol/emoji + names{} 10 cultures; each planetary_spread slot carries spread_pos 1-14 — sort by spread_pos for canonical Life-spread order), connections, overall_score, Chinese zodiac + true sidereal aspects, element harmony, life paths. temporal_context.date_a/b = {band, payload_scope} (full|extended|out_of_range × full|cosmic_card_only; 1900-2100 focus).
| Argument | Type | Description |
|---|---|---|
| date_a* | string | Person A date YYYY-MM-DD (exactly two people; not a roster) |
| date_b* | string | Person B date YYYY-MM-DD (exactly two people; not a roster) |
{
"type": "object",
"required": [
"date_a",
"date_b"
],
"properties": {
"date_a": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Person A date YYYY-MM-DD (exactly two people; not a roster)"
},
"date_b": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Person B date YYYY-MM-DD (exactly two people; not a roster)"
}
},
"additionalProperties": false
}PRIMARY single-date tool. USE for any one Gregorian date when the ask needs moon phase (incl. blue/blood/supermoon/micromoon flags, Earth-Moon distance, phase_gmt, prev/next blue or blood dates), season/equinox anchors, classical retrogrades (retrogrades_active phase=retrograde), calendars, lunar year, Cosmic card (same card as life/sun — cosmic.also_called + planetary_spread.sun), karmic source/spirit, 14 planetary Life-spread cards, weekday or leap year (calendar_meta.weekday / is_leap_year), day_ruler (weekday planetary ruler Roman/Greek/Norse), or full date identity. NOT for two-person scoring → get_compatibility; name text → get_name. RETURNS cosmic block (incl. karma + planetary_spread) + tarot_majors (greer + tarot_school) + day_ruler (full+extended) + temporal blocks (moon_phase, season, retrogrades_active, calendar_meta, …). planetary_spread and retrogrades_active planets include planet_type/symbol/emoji + names{} (greek,norse,celtic,egyptian,sumerian,babylonian,mesopotamian,arabic,sanskrit,chinese). Each planetary_spread slot carries spread_pos (1-14 canonical Life-spread order; midheaven=13, phoenix=14 — sort by spread_pos; jsonb object keys are unordered). temporal_context={band, payload_scope} (band full|extended|out_of_range; payload_scope full|cosmic_card_only). Out-of-range responses set cosmic_card_available.
| Argument | Type | Description |
|---|---|---|
| date* | string | Single query date YYYY-MM-DD (any Gregorian date — sky, calendars, weekday, leap year, day_ruler, Cosmic card) |
{
"type": "object",
"required": [
"date"
],
"properties": {
"date": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Single query date YYYY-MM-DD (any Gregorian date — sky, calendars, weekday, leap year, day_ruler, Cosmic card)"
}
},
"additionalProperties": false
}USE for one person's 90-year Long Range Journey theme card: birth_date + as_of_date (completed civil years; no wall clock). NOT Magian Age Spread board (get_age_spread / get_age_plate); NOT get_date sky/calendars. RETURNS compact cosmic birth card + long_range {age_civil, age_no (mod 90), age_aliases, theme_card, spread_offset, planetary_period}. One theme card only — never 90 ages. Feb-29 follows Postgres age(). Error as_of_before_birth when as_of_date < birth_date.
| Argument | Type | Description |
|---|---|---|
| as_of_date* | string | As-of civil date YYYY-MM-DD (pass host today when asking current journey year) |
| birth_date* | string | Civil birth date YYYY-MM-DD (month/day resolves Cosmic birth card) |
{
"type": "object",
"required": [
"birth_date",
"as_of_date"
],
"properties": {
"as_of_date": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "As-of civil date YYYY-MM-DD (pass host today when asking current journey year)"
},
"birth_date": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Civil birth date YYYY-MM-DD (month/day resolves Cosmic birth card)"
}
},
"additionalProperties": false
}USE for person or word name text only (gematria → cosmic cards + Expression / Soul Urge / Personality). NOT for any date questions (weekday, leap year, moon, season, Rx, Cosmic card, day_ruler, Life Path) → get_date; two people → get_compatibility. RETURNS Francis Bacon cards, Latin cipher suite, periodic{} + periodic_set{}, numerology (expression/soul_urge/personality plus full-name karmic_lessons / hidden_passion / cornerstone / capstone / first_vowel / echoes and number lens polarity/planet/element/color), and per-word tarot/medicine/iching/chakra/lenormand/karma/planetary_spread. Free-text input guard (Del as a name is allowed; DEL FILE and SQL verbs are not).
| Argument | Type | Description |
|---|---|---|
| full_name* | string | Person or word name to decode (whitespace-separated words; not a date) |
{
"type": "object",
"required": [
"full_name"
],
"properties": {
"full_name": {
"type": "string",
"minLength": 1,
"description": "Person or word name to decode (whitespace-separated words; not a date)"
}
},
"additionalProperties": false
}USE when a player's season HR# or K# aligns with calendar day-of-month, jersey number, or inning on baseball.plays. NOT for roster cardology → get_team_chemistry; cosmic day card → get_date. Requires retro_id. mode=season (default) | spotlight (tier<=1) | career_summary (aggregates only). lane=both (default) | hr | k. Optional game_dt filter, tier_max (0-4), limit (1-500). RETURNS summary + events[] with pattern labels (day=HR#, HR#=jersey, day=K#=jersey, etc.). Overlay get_date(game_dt) for MCP day-card narrative.
| Argument | Type | Description |
|---|---|---|
| lane | string | Home runs, strikeouts, or both (default both) |
| mode | string | season (default) | spotlight | career_summary |
| limit | integer | Max event rows returned (default 100, max 500) |
| game_dt | string | Optional single-game filter YYYY-MM-DD |
| retro_id* | string | Retrosheet player id e.g. ohtas001, freef001 (not Lahman/BBRef ids like ohtansh01) |
| tier_max | integer | Max pattern tier 0-4 (spotlight defaults to 1) |
| season_yr | integer | Required for season/spotlight modes |
USE for MLB team × season roster cardology (suit mix, anchor stacks, Chinese zodiac year-animal match on postseason scope). NOT for play-by-play HR/K numerology → get_plays_numerology; two-person dyads → get_compatibility; single date → get_date. Requires season_yr + team_code. scope=ws_champion (default) | postseason. RETURNS roster_size, suit_mix, anchor_stacks, season_animal; postseason adds year_animal_match_pct (CNY-aware birth animal). Apply: apply_mcp_baseball_linked.ps1.
| Argument | Type | Description |
|---|---|---|
| scope | string | ws_champion (default) or postseason active roster |
| gametype | string | Postseason round when scope=postseason (default worldseries) |
| season_yr* | integer | MLB season year e.g. 2024 |
| team_code* | string | Retrosheet team code e.g. LAN, CHN, HOU |
| include_pair_matrix | boolean | Reserved v2 — echoes pair_note when true |
{
"type": "object",
"required": [
"season_yr",
"team_code"
],
"properties": {
"scope": {
"enum": [
"ws_champion",
"postseason"
],
"type": "string",
"description": "ws_champion (default) or postseason active roster"
},
"gametype": {
"type": "string",
"description": "Postseason round when scope=postseason (default worldseries)"
},
"season_yr": {
"type": "integer",
"description": "MLB season year e.g. 2024"
},
"team_code": {
"type": "string",
"minLength": 1,
"description": "Retrosheet team code e.g. LAN, CHN, HOU"
},
"include_pair_matrix": {
"type": "boolean",
"description": "Reserved v2 — echoes pair_note when true"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"retro_id"
],
"properties": {
"lane": {
"enum": [
"hr",
"k",
"both"
],
"type": "string",
"description": "Home runs, strikeouts, or both (default both)"
},
"mode": {
"enum": [
"spotlight",
"season",
"career_summary"
],
"type": "string",
"description": "season (default) | spotlight | career_summary"
},
"limit": {
"type": "integer",
"description": "Max event rows returned (default 100, max 500)"
},
"game_dt": {
"type": "string",
"format": "date",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional single-game filter YYYY-MM-DD"
},
"retro_id": {
"type": "string",
"minLength": 1,
"description": "Retrosheet player id e.g. ohtas001, freef001 (not Lahman/BBRef ids like ohtansh01)"
},
"tier_max": {
"type": "integer",
"description": "Max pattern tier 0-4 (spotlight defaults to 1)"
},
"season_yr": {
"type": "integer",
"description": "Required for season/spotlight modes"
}
},
"additionalProperties": false
}