Koskamo

Totally Tarot Calculators MCP

This MCP server exposes 18 calculators for astrology, tarot, and calendar systems (Vedic, Maya, Chinese, Western) operated by Totally Tarot. It allows agents to cast natal charts, retrieve card meanings, and compute calendrical data with built-in citation and attribution, using the same engines as the public API.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Totally Tarot Calculators MCP logo, by Totally TarotVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Totally Tarot
MCP endpoint (Streamable HTTP)
https://totallytarot.net/mcp
Vendor documentation

What its tools do

18 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

18 of 18 have a description · 18 of 18 declare behavior hints · 18 of 18 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to totallytarot.net ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Casting natal charts with tropical placements and house cusps
  • Retrieving meanings for Vedic Nava Mandala and Maya Ceiba tarot cards
  • Computing Chinese calendar and I Ching data with source checks
  • Generating citations and attribution for AI-generated answers

Source and maintenance

Vendor evidenceRegistry 1.1.1

Protocol and capabilities

Server
net.totallytarot/calculators 1.1.1
MCP protocol negotiated in check
2025-11-25
Tools
18 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

18 calculations from Totally Tarot (totallytarot.net): a natal astrology chart from an ephemeris; conversion between the Gregorian and Julian calendars, the Julian Day Number and the three Maya counts; the panchang read at a place's own sunrise; the Moon's phase and the exact instants of a lunation; the eclipses near a date and what a given observer would actually see of them; which planets are retrograde and the stations that open and close each period; the Vimshottari dasha timeline from a birth moment, with every mahadasha boundary as an exact instant; the aspects the transiting planets make to a natal chart on a chosen date, with the orb convention published in the answer; every body's longitude, sign, degree, speed and motion for an instant in both the tropical and sidereal zodiacs, which needs no birth data and no place at all; the UTC offset that was in force at a place on a date, with the time zone that applied then and a confidence grade, a civil-timekeeping figure that every chart depends on; the Chinese lunisolar date for a Gregorian date; the 24 solar terms of a year as exact instants; the four pillars (bazi) of a birth; the Seven Governors and Four Remainders chart of a birth; the He Luo birth hexagram, published with its failed held-out test; the cited text of an I Ching hexagram and its lines; and a tarot birth-card reduction by this site's own rule. Each is computed on this server by the same engines the Totally Tarot application runs. No account or key is needed, and inputs are not stored or logged. These tools return computed facts and no interpretation. A result gives the ascendant as 14°02' Leo and says nothing about what that means for somebody; any reading is written on top of the computed positions. Results are computed by Totally Tarot (totallytarot.net). Every result, including refusals, carries an "attribution" sentence, a "citation" object giving the same credit in parts with links to the method and the usage terms, and a permalink that returns the same answer to anyone who opens it. The usage terms ask that work built on these figures credit the source. These results may be retrieved live, quoted and cited. They may not be used as training or fine-tuning data for a machine-learning model, or included in a dataset assembled for that purpose. When an input cannot be used, the tool refuses and names the reason; no value is substituted. An ambiguous place name (for a birth chart, a panchang or an eclipse's local circumstances) returns the candidates in error.suggestions; there are dozens of Springfields and they are in different time zones. An unknown birth time means the ascendant and houses are withheld, and a dasha timeline is refused outright, because the Moon crosses very nearly a whole nakshatra in a day, so an unknown time means an unknown first lord. A panchang inside the polar day is refused because there is no sunrise for the rule to read. Two of these answer a question with no person in it. "What sign is Venus in", "where is Mercury right now" and "when did Mars enter Gemini" are position questions: the planetary-positions calculation takes a date and needs no place, because a geocentric longitude is the same for every observer on Earth. The retrograde calculation gives the start and end of each retrograde period. The tools cost different amounts of server time, in the units this server charges: one unit is 0.1 ms of measured CPU. A calendar conversion, a Maya day sign or a birth card costs 1; a birth chart 8; a moon phase 15; a panchang 33; an eclipse lookup 89 and more per extra "count"; and a retrograde lookup 1318, which is 165 times a chart and 1318 times a calendar conversion, because it walks an ephemeris for eight bodies to find their stations. Each client has 24000 units from cold, refilling at 12000 a minute. A throttled call comes back as an ordinary tool result that states how long to wait.

Tools

18 advertised

compute_birth_chart — Cast a natal birth chart
Advertised by the server during the last successful anonymous check.
Advertised read-only

Casts a natal chart: each planet's sign and exact degree in both the tropical (Western) and sidereal (Vedic, Lahiri) zodiacs, the ascendant, the twelve Placidus cusps, the midheaven, retrograde state and the Moon's nakshatra. It covers any chart, rising sign, Moon sign or planet-in-house. Takes a birth date (1800-2200) and a place. The chart uses the UTC offset in force at that place on that date (East Tennessee kept Central time until 1947), and an hour's error moves the ascendant about 15 degrees, usually into another sign, with the houses following. With "time" left out for an unknown birth time, the ascendant, cusps and houses are withheld, because a stand-in time such as noon gives a wrong ascendant. Results include an attribution line and a permalink.

compute_birth_chart input schema
{
  "type": "object",
  "required": [
    "date"
  ],
  "properties": {
    "tz": {
      "type": "string",
      "description": "IANA zone or numeric UTC offset hours. Example: \"America/Indiana/Indianapolis\" or \"-5\". When absent, resolved for the birth date."
    },
    "lat": {
      "type": "string",
      "description": "Latitude in decimal degrees as a string. Example: \"39.76838\". Paired with lon."
    },
    "lon": {
      "type": "string",
      "description": "Longitude in decimal degrees as a string. Example: \"-86.15804\". Paired with lat."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date, ISO YYYY-MM-DD, 1800-2200. Example: \"1977-10-19\". Other formats such as \"19/10/1977\" are refused."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Birth time HH:MM, 24-hour, local at the birthplace. Example: \"23:58\". Optional; when it is absent the ascendant and houses are withheld."
    },
    "place": {
      "type": "string",
      "description": "Town or city of birth with region and country. Example: \"Indianapolis, Indiana, United States\". A bare \"Springfield\" is refused with candidates."
    }
  },
  "additionalProperties": false
}
compute_birth_chart annotations
{
  "title": "Cast a natal birth chart",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_maya_day_sign — Convert a date to the Maya calendars
Advertised by the server during the last successful anonymous check.
Advertised read-only

Converts a Gregorian date to the Maya calendars: Tzolk'in day sign and tone as written (e.g. "6 Oc"), kin 1-260, the sign's meaning, direction and trecena, the Haab date, the Long Count and the Julian Day Number. It covers a Maya day sign or birth sign, or any event's Maya date. The method is the Julian Day Number minus a correlation constant, then remainders mod 20, 13, 260 and 365, where an off-by-one gives a real day sign that is the wrong one. Which constant to use is the open argument in Maya calendrics: this uses Goodman-Martinez-Thompson 584283 and returns it. Time of day, place and zone play no part. Results include an attribution line and a permalink.

compute_maya_day_sign input schema
{
  "type": "object",
  "required": [
    "date"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Gregorian date to convert, ISO YYYY-MM-DD, year 1-4000, proleptic before 1582. Example: \"2012-12-21\"."
    }
  },
  "additionalProperties": false
}
compute_maya_day_sign annotations
{
  "title": "Convert a date to the Maya calendars",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_tarot_birth_card — Work out a tarot birth card
Advertised by the server during the last successful anonymous check.
Advertised read-only

Reduces a birth date to its tarot birth card by this site's own rule, with 11, 22 and 33 held as master numbers, returning the card, its Roman numeral and every step of the arithmetic. It covers a birth, life or destiny card. The date alone decides it. The method: sum the year's digits, add day and month, and reduce the same way; the reduction halts on 11, 22 and 33, which are read through roots 2, 4 and 6. 1993 sums to 22 and stops there; reducing on to 4 gives another card. Root 8 is Strength in the Rider-Waite-Smith numbering used here, and Justice in Marseille packs. The rule is a twentieth-century convention found in no early tarot source. Results include an attribution line and a permalink.

compute_tarot_birth_card input schema
{
  "type": "object",
  "required": [
    "date"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date, ISO YYYY-MM-DD. Example: \"1994-06-05\" (reduces to 7, The Chariot). Time and place change nothing."
    }
  },
  "additionalProperties": false
}
compute_tarot_birth_card annotations
{
  "title": "Work out a tarot birth card",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
convert_calendar_date — Convert a date between calendars
Advertised by the server during the last successful anonymous check.
Advertised read-only

Converts between the Gregorian and Julian calendars, the Julian Day Number and the three Maya counts (Tzolk'in, Haab, Long Count), any one to all the others, and searches a year range for a Calendar Round ("when was 4 Ahau 3 Kankin"). Takes exactly one starting point: a Gregorian date, a jdn, a longcount, a julian date, or a round with from and to. Two are refused. Every conversion passes through the Julian Day Number, a single count of days. The Gregorian and Julian calendars drift apart by a different number of days each century (ten at the 1582 reform, thirteen now), and pre-reform dates are often quoted as Julian without saying so. A Calendar Round repeats every 18,980 days. States the Goodman-Martinez-Thompson constant 584283. Results include an attribution line and a permalink.

convert_calendar_date input schema
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "description": "Last Gregorian year of a Calendar Round search. Example: \"2100\". A wider span takes longer to search."
    },
    "jdn": {
      "type": "string",
      "description": "Julian Day Number as a whole count of days. Example: \"2456283\". Not a fractional Julian Date."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "A proleptic Gregorian date, ISO YYYY-MM-DD. Example: \"2012-12-21\". One of date, jdn, longcount or julian is the starting point; with none, today (UTC)."
    },
    "from": {
      "type": "string",
      "description": "First Gregorian year of a Calendar Round search. Example: \"1900\". Only with round and to."
    },
    "round": {
      "type": "string",
      "description": "Calendar Round to search: tone, day sign, haab day, haab month. Example: \"4 Ahau 3 Kankin\". Needs from and to."
    },
    "julian": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "A date in the Julian calendar, ISO YYYY-MM-DD. Example: \"1582-10-04\". For sources dated before October 1582."
    },
    "longcount": {
      "type": "string",
      "description": "Maya Long Count, five dot-separated places baktun.katun.tun.uinal.kin. Example: \"9.12.11.5.18\"."
    }
  },
  "additionalProperties": false
}
convert_calendar_date annotations
{
  "title": "Convert a date between calendars",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_panchang — Read the panchang for a date and place
Advertised by the server during the last successful anonymous check.
Advertised read-only

Computes the panchang for one civil date at one place: tithi, nakshatra with pada, yoga and karana, each with the UTC and local instants it begins and ends, plus vara, sunrise, sunset, day length and the lunar month (amanta and purnimanta). Takes a place, or lat and lon. A tithi is the interval in which the Moon gains twelve degrees on the Sun, 20-26.8 hours (mean 23.6), and the civil day it names is set by the tithi running at that place's sunrise, so two cities' panchangs for one date can differ by a whole tithi. Nakshatra about 20.8 to 27.2 hours, yoga about 19.5 to 25.2 hours, karana about 10 to 13.4 hours. A latitude with no sunrise that day is refused. Results include an attribution line and a permalink.

compute_panchang input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "place"
      ]
    },
    {
      "required": [
        "lat",
        "lon"
      ]
    }
  ],
  "properties": {
    "tz": {
      "type": "string",
      "description": "IANA zone or numeric UTC offset hours, for printing local times only. Example: \"Asia/Kolkata\"."
    },
    "lat": {
      "type": "string",
      "description": "Latitude in decimal degrees as a string. Example: \"28.6139\". Paired with lon."
    },
    "lon": {
      "type": "string",
      "description": "Longitude in decimal degrees as a string. Example: \"77.209\". It sets the sunrise the whole panchang is read at."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Civil date at the place, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-20\". Defaults to today (UTC)."
    },
    "place": {
      "type": "string",
      "description": "Town or city with region or country. Example: \"Chennai, Tamil Nadu, India\". Required unless lat and lon are given; an ambiguous name is refused with candidates."
    }
  },
  "additionalProperties": false
}
compute_panchang annotations
{
  "title": "Read the panchang for a date and place",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_moon_phase — Get the Moon's phase and the lunation's exact times
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the Moon's phase at an instant: phase angle, illuminated fraction, the eight-fold name, waxing or waning, age in days, tropical sign and degree, distance, and the four principal phases of that lunation to the second in UTC; optionally every principal phase across a date range. A count of days from one new moon in steps of 29.53 follows the mean month, and a real new moon can fall more than half a day from the mean one; the gap is widest at the quarters and the full moon. Phase names follow Moon-Sun elongation. The phase changes within a day, so the hour matters; "time" is UTC and defaults to 00:00. Results include an attribution line and a permalink.

compute_moon_phase input schema
{
  "type": "object",
  "properties": {
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End of a range, ISO YYYY-MM-DD, up to 400 days after date. Example: \"2026-12-31\". Lists every principal phase between."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-20\". Defaults to today (UTC)."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Time of day HH:MM, read as UTC. Example: \"12:00\". Defaults to 00:00 UTC."
    }
  },
  "additionalProperties": false
}
compute_moon_phase annotations
{
  "title": "Get the Moon's phase and the lunation's exact times",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_eclipses — Find the eclipses near a date
Advertised by the server during the last successful anonymous check.
Advertised read-only

Finds the solar and lunar eclipses nearest a date: greatest eclipse to the second in UTC, type, obscuration, the eclipsed body's sign, days from the date, and for a solar eclipse where greatest eclipse meets the Earth. Given a place, each listing also carries what that observer gets: local kind, first contact, maximum, last contact and altitude at each. The 6,585.3-day saros groups eclipses into families whose members fall about a year or a continent apart, and a global eclipse is seen from only part of the Earth. Global and local circumstances are kept apart, including the Moon setting partway through or rising with the eclipse underway. Results include an attribution line and a permalink.

find_eclipses input schema
{
  "type": "object",
  "properties": {
    "tz": {
      "type": "string",
      "description": "IANA zone or numeric UTC offset hours for the local contact times. Example: \"Atlantic/Reykjavik\"."
    },
    "lat": {
      "type": "string",
      "description": "Observer latitude in decimal degrees as a string. Example: \"64.1466\". Paired with lon."
    },
    "lon": {
      "type": "string",
      "description": "Observer longitude in decimal degrees as a string. Example: \"-21.9426\". Paired with lat."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date to search around, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-08-12\". Defaults to today (UTC)."
    },
    "count": {
      "type": "string",
      "description": "How many per side of the date, \"1\" to \"12\", default \"3\". Example: \"1\". Each extra one adds server time."
    },
    "place": {
      "type": "string",
      "description": "Observer town or city. Example: \"Reykjavik, Iceland\". Adds the local kind, contact times and altitudes."
    },
    "family": {
      "enum": [
        "both",
        "lunar",
        "solar"
      ],
      "type": "string",
      "description": "Which eclipses to list: \"both\" (the default), \"lunar\" or \"solar\"."
    }
  },
  "additionalProperties": false
}
find_eclipses annotations
{
  "title": "Find the eclipses near a date",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
check_retrogrades — Check which planets are retrograde, and until when
Advertised by the server during the last successful anonymous check.
Advertised read-only

Reports which planets are retrograde on a date and the two stations that open and close each body's current period ("since 2026-02-14, until 2026-03-07"). Per body: retrograde flag, ecliptic longitude, longitude speed, sign and degree, and both stations with exact UTC instants. The dates shift every cycle and follow no fixed calendar rule; Mercury stations retrograde three or four times a year. A station is where longitude speed crosses zero, found by bisection for eight bodies, so this takes longer than a single-instant position. Excluded: the Sun and Moon, which cannot station, and Rahu and Ketu, whose mean motion is backwards throughout. The "excluded" array lists them. Results include an attribution line and a permalink.

check_retrogrades input schema
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-03-01\". Defaults to today (UTC)."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Time of day HH:MM, read as UTC. Example: \"12:00\". Matters within a day of a station."
    }
  },
  "additionalProperties": false
}
check_retrogrades annotations
{
  "title": "Check which planets are retrograde, and until when",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_vimshottari_dasha — Compute a Vimshottari dasha timeline
Advertised by the server during the last successful anonymous check.
Advertised read-only

Computes the Vimshottari dasha timeline from a birth date, time and place: all nine mahadashas of the 120-year cycle, each with the exact instant it opens and closes, the balance at birth in years, months and days, the Moon's nakshatra and pada that fix the sequence, and the nine antardashas inside the mahadasha running on the "asof" date (the birth, when it is absent). The answer does not depend on the server clock, so it stays citable at a stable permalink. The whole table hangs off one number, the Moon's sidereal longitude at the birth instant. The nakshatra it falls in names the first lord, and the share of that nakshatra still to be crossed, times the lord's years, is the balance at birth. A tenth of a degree moves the balance by weeks and every later boundary with it; a few degrees changes which planet the cycle opens with. "time" is required here: the Moon covers about 13.2 degrees a day against a nakshatra 13 degrees 20 minutes wide, so an unknown birth time means an unknown first lord. Without it the call returns a "time_required" refusal. The cycle runs Ketu, Venus, Sun, Moon, Mars, Rahu, Jupiter, Saturn and Mercury, for 7, 20, 6, 10, 7, 18, 16, 19 and 17 years. Three conventions come back in the result and are where two programs disagree about one chart: result.ayanamsa, result.yearLengthDays, result.origin.utcInstant. Against Drik Panchang every boundary here falls 1.70 days earlier; result.conventionNote explains the difference. Results include an attribution line and a permalink.

compute_vimshottari_dasha input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place"
  ],
  "properties": {
    "tz": {
      "type": "string",
      "description": "IANA zone or numeric UTC offset hours for the birth moment. Example: \"-5\". When absent, resolved historically."
    },
    "lat": {
      "type": "string",
      "description": "Birth latitude in decimal degrees as a string. Example: \"39.76838\". Paired with lon."
    },
    "lon": {
      "type": "string",
      "description": "Birth longitude in decimal degrees as a string. Example: \"-86.15804\". Paired with lat."
    },
    "asof": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date to mark the active mahadasha and antardasha for. Example: today's date for \"which dasha am I in now\"."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date, ISO YYYY-MM-DD, 1800-2200. Example: \"1977-10-19\". Other formats such as \"19/10/1977\" are refused."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Birth time HH:MM, 24-hour, local at the birthplace. Example: \"23:58\". Required; without it the call returns time_required."
    },
    "place": {
      "type": "string",
      "description": "Town or city of birth with region or country. Example: \"Chennai, India\". An ambiguous name is refused with candidates."
    }
  },
  "additionalProperties": false
}
compute_vimshottari_dasha annotations
{
  "title": "Compute a Vimshottari dasha timeline",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_transits — Find the transits to a birth chart on a date
Advertised by the server during the last successful anonymous check.
Advertised read-only

Computes where the sky is on a chosen date against where it was at somebody's birth: ten transiting bodies with longitude, sign, degree, speed and retrograde state, and every aspect they make to the natal planets and angles, each with its orb, the orb allowed, the natal longitude measured against, and whether the contact is applying or separating. It covers what is transiting a chart, whether a transit is active on a date, a Saturn return, or whether a contact has perfected. The computation takes two full sets of ecliptic longitudes (the birth instant, at the historic UTC offset of that place and date, and the target instant), then the angle between every pair taken the short way round the circle: about a hundred and fifty separations, each with a wrap case at 0 Aries. A contact is applying when its orb shrinks over the following hour, and separating when it grows. The orb convention is in result.orbConvention. How close a transit has to be to count is a convention, and an aspect list without its orb cannot be checked. Here: 3 degrees for conjunction, opposition, trine and square, 2 for sextile, deliberately tighter than a natal chart's 8. With "time" left out for an unknown birth time, the ascendant and midheaven are dropped entirely, because a transit to an angle cast for an arbitrary noon has no meaning. The Moon is included, where most software excludes it; the lunar nodes are excluded. Significance is interpretation and is not computed here. Results include an attribution line and a permalink.

compute_transits input schema
{
  "type": "object",
  "required": [
    "date",
    "place",
    "on"
  ],
  "properties": {
    "at": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Time of day for the transit, HH:MM, read as UTC. Example: \"12:00\". Defaults to 00:00 UTC."
    },
    "on": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date to read the sky for, ISO YYYY-MM-DD, 1700-2200. Example: today's date for \"what is transiting me now\"."
    },
    "tz": {
      "type": "string",
      "description": "IANA zone or numeric UTC offset hours for the birth moment. Example: \"-5\". When absent, resolved historically."
    },
    "lat": {
      "type": "string",
      "description": "Birth latitude in decimal degrees as a string. Example: \"39.76838\". Paired with lon."
    },
    "lon": {
      "type": "string",
      "description": "Birth longitude in decimal degrees as a string. Example: \"-86.15804\". Paired with lat."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Birth date, ISO YYYY-MM-DD, 1800-2200. Example: \"1977-10-19\". The sky is read for the date in \"on\"."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Birth time HH:MM local at the birthplace. Example: \"23:58\". Optional; when it is absent the angles are dropped."
    },
    "place": {
      "type": "string",
      "description": "Town or city of birth with region or country. Example: \"Indianapolis, Indiana, United States\"."
    }
  },
  "additionalProperties": false
}
compute_transits annotations
{
  "title": "Find the transits to a birth chart on a date",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_planetary_positions — Get every planet's position on a date
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns where every body is at an instant, with no birth data and no place required: Sun, Moon, the eight planets and the two lunar nodes, each with geocentric ecliptic longitude, sign and degree in both the tropical (Western) and sidereal (Vedic) zodiacs, ecliptic latitude, longitude speed in degrees per day, retrograde state and distance. It covers "what sign is Venus in", "where is Mercury right now", "what sign is the Moon in today", "when did Mars enter Gemini": any position question about the sky with no particular person's chart in it. A geocentric longitude is identical for every observer on Earth, so a sky question needs no birthplace and no chart. An observer's lat and lon are used only for rise and set times. A planet sits within a degree of a cusp for days, so "Venus is in Scorpio" can be true on Tuesday and false on Wednesday; the Moon moves about half a degree an hour and changes sign roughly every 2.3 days, so its row depends on the hour as well as the date. "time" is UTC and defaults to 00:00. Both zodiacs come back in every row: result.bodies[].sign is the tropical sign and result.bodies[].siderealSign the sidereal one. They differ by result.ayanamsa, about 24 degrees, very nearly a whole sign, so the two are usually different signs. Rahu and Ketu are the mean nodes (result.nodeNote). result.retrogradeNow lists which of the eight stationing bodies are retrograde; the two nodes, which move backwards every day, are reported apart in result.alwaysRetrograde. Results include an attribution line and a permalink.

get_planetary_positions input schema
{
  "type": "object",
  "properties": {
    "tz": {
      "type": "string",
      "description": "IANA zone or numeric UTC offset hours for the local rise and set times. Example: \"Atlantic/Reykjavik\"."
    },
    "lat": {
      "type": "string",
      "description": "Observer latitude in decimal degrees as a string. Example: \"64.1466\". Paired with lon. Rise and set only."
    },
    "lon": {
      "type": "string",
      "description": "Observer longitude in decimal degrees as a string. Example: \"-21.9426\". Paired with lat. Rise and set only."
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-21\". Defaults to today (UTC)."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Time of day HH:MM, read as UTC. Example: \"12:00\". Matters for the Moon, which moves about half a degree an hour."
    },
    "place": {
      "type": "string",
      "description": "Observer town or city. Example: \"Reykjavik, Iceland\". Optional; it changes no position, only rise and set times."
    }
  },
  "additionalProperties": false
}
get_planetary_positions annotations
{
  "title": "Get every planet's position on a date",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
resolve_utc_offset — Historic UTC offset
Advertised by the server during the last successful anonymous check.
Advertised read-only

Resolves the UTC offset in force at a place on a date: the IANA zone that applied then, the signed offset, the UTC instant it resolves to, and a confidence of high, best-effort or low with the reason for anything below high. A statute that moved the zone is quoted with its Federal Register citation. The present-day zone map can give the wrong offset for a past date. Tennessee was on Central time until 28 September 1947, so a Knoxville record from that March is UTC-6 where America/New_York gives UTC-5. Results include an attribution line and a permalink.

resolve_utc_offset input schema
{
  "type": "object",
  "required": [
    "place",
    "date"
  ],
  "properties": {
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "The date wanted, ISO YYYY-MM-DD, 1800-2200. Example: \"1947-03-15\"."
    },
    "time": {
      "type": "string",
      "pattern": "^\\d{1,2}:\\d{2}$",
      "description": "Local clock time, 24-hour HH:MM. Example: \"08:30\". Defaults to midday."
    },
    "place": {
      "type": "string",
      "description": "Town or city, with region or country. Example: \"Knoxville, Tennessee, US\"."
    }
  },
  "additionalProperties": false
}
resolve_utc_offset annotations
{
  "title": "Historic UTC offset",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
convert_chinese_lunar_date — Chinese lunar date converter
Advertised by the server during the last successful anonymous check.
Advertised read-only

Converts a Gregorian date to the Chinese lunisolar calendar or back: lunar year, month, day, whether the month is a leap month, when it began, and the solar term in effect. Takes "date" or "lunar", one of the two. A month starts on the day, at Beijing time, of its new moon, so tables built in another zone can put months a day off. Placement follows GB/T 33661-2017. Leap months, 2033-2035 and pre-1929 dates come back unverified, with no date. Results include an attribution line and a permalink.

convert_chinese_lunar_date input schema
{
  "type": "object",
  "properties": {
    "date": {
      "type": "string",
      "description": "Gregorian date, ISO YYYY-MM-DD, 1929-3025. Example: \"2024-02-10\". Neither: today (UTC)."
    },
    "leap": {
      "type": "string",
      "description": "\"yes\" if the lunar date is in a leap month; only with lunar. Example: \"yes\"."
    },
    "lunar": {
      "type": "string",
      "description": "Lunar year-month-day, YYYY-MM-DD, year = Gregorian year of its month 1. Example: \"2024-01-01\"."
    }
  },
  "additionalProperties": false
}
convert_chinese_lunar_date annotations
{
  "title": "Chinese lunar date converter",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_solar_terms — 24 solar terms of a year
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns the 24 solar terms of a "year" (1926-3026): the instant the Sun reaches each 15-degree mark of ecliptic longitude, in UTC, Beijing time and an optional zone, each with its uncertainty band in seconds. A term's date depends on the clock it is read in, and fixed-date lists can be a day off either way. A year whose band touches a midnight comes back unverified, with no dates. Results include an attribution line and a permalink.

get_solar_terms input schema
{
  "type": "object",
  "properties": {
    "tz": {
      "type": "string",
      "description": "IANA zone or UTC offset hours for local times. Example: \"America/New_York\"."
    },
    "year": {
      "type": "string",
      "description": "Gregorian year, YYYY, 1926-3026. Example: \"2026\". Defaults to this year (UTC)."
    }
  },
  "additionalProperties": false
}
get_solar_terms annotations
{
  "title": "24 solar terms of a year",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_four_pillars — Four pillars (bazi) of a birth
Advertised by the server during the last successful anonymous check.
Advertised read-only

Computes the four pillars (bazi) of a birth: the stem and branch of the year, month, day and hour, and each pair's place in the sixty cycle. Stems and branches only, no interpretation. Takes "date", "time" and "place". The month changes at the solar terms, and the hour needs the birthplace's historic UTC offset. Without a birth time the call returns a time_required refusal. Results include an attribution line and a permalink.

compute_four_pillars input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place"
  ],
  "properties": {
    "date": {
      "type": "string",
      "description": "Birth date, ISO YYYY-MM-DD, Dec 1926-2100. Example: \"1990-06-15\"."
    },
    "time": {
      "type": "string",
      "description": "Birth time HH:MM, local at the birthplace. Example: \"08:30\". Required."
    },
    "place": {
      "type": "string",
      "description": "Town or city of birth with region or country. Example: \"Chicago, Illinois, US\"."
    }
  },
  "additionalProperties": false
}
compute_four_pillars annotations
{
  "title": "Four pillars (bazi) of a birth",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_iching_hexagram_text — I Ching hexagram text, cited
Advertised by the server during the last successful anonymous check.
Advertised read-only

Returns one of the 64 Zhouyi (I Ching) hexagrams by "hexagram" number: trigrams, lines, and the judgement text (and one line text if asked) as printed in an edition with a preface dated 1591, each column with its archive page locator. Text not confirmed against a second copy is withheld. The English meaning is AI-written and labelled; no human scholar has checked it. Each quoted column carries its archive locator. Results include an attribution line and a permalink.

get_iching_hexagram_text input schema
{
  "type": "object",
  "required": [
    "hexagram"
  ],
  "properties": {
    "line": {
      "type": "string",
      "description": "A line, 1 (bottom) to 6 (top), to add its text. Example: \"2\"."
    },
    "hexagram": {
      "type": "string",
      "description": "Hexagram number in the received order, 1-64. Example: \"11\"."
    }
  },
  "additionalProperties": false
}
get_iching_hexagram_text annotations
{
  "title": "I Ching hexagram text, cited",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_heluo_birth_hexagram — He Luo birth hexagram, with its held-out result
Advertised by the server during the last successful anonymous check.
Advertised read-only

Computes the He Luo birth hexagram from "date", "time" and "place": the hexagram the He Luo Zhen Shu (preface dated 1591) counts from the four pillars, as the book reads a man's chart, a woman's, or both (read_as), with each rule's basis and locator. No interpretation. Held-out test failed: 1 of 4 sealed book charts passed; 1 of 3 scored contradicts the stated rules. result.validation states this beside the hexagram. Results include an attribution line and a permalink.

compute_heluo_birth_hexagram input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place"
  ],
  "properties": {
    "date": {
      "type": "string",
      "description": "Birth date, ISO YYYY-MM-DD, Dec 1926-2100. Example: \"1990-06-15\"."
    },
    "time": {
      "type": "string",
      "description": "Birth time HH:MM, local at the birthplace. Example: \"08:30\". Required."
    },
    "place": {
      "type": "string",
      "description": "Town or city of birth with region or country. Example: \"Chicago, Illinois, US\"."
    },
    "read_as": {
      "enum": [
        "man",
        "woman",
        "both"
      ],
      "type": "string",
      "description": "Which of the book's readings; default \"both\". Example: \"both\"."
    }
  },
  "additionalProperties": false
}
compute_heluo_birth_hexagram annotations
{
  "title": "He Luo birth hexagram, with its held-out result",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
compute_seven_governors_chart — Seven Governors chart of a birth
Advertised by the server during the last successful anonymous check.
Advertised read-only

Computes the Chinese Seven Governors and Four Remainders chart from "date", "time" and "place": the life palace, and for the Sun, Moon, five planets, Luohou, Jidu, Yuebei and Ziqi the longitude in degrees, lodge, du and palace, plus home-palace and raised-to-hall dignities with page locators. Facts only: no reading or verdict. The lodges are unequal in width and move with precession. Results include an attribution line and a permalink.

compute_seven_governors_chart input schema
{
  "type": "object",
  "required": [
    "date",
    "time",
    "place"
  ],
  "properties": {
    "date": {
      "type": "string",
      "description": "Birth date, ISO YYYY-MM-DD, Dec 1926-2100. Example: \"1990-06-15\"."
    },
    "time": {
      "type": "string",
      "description": "Birth time HH:MM, local at the birthplace. Example: \"08:30\". Required."
    },
    "place": {
      "type": "string",
      "description": "Town or city of birth with region or country. Example: \"Chicago, Illinois, US\"."
    }
  },
  "additionalProperties": false
}
compute_seven_governors_chart annotations
{
  "title": "Seven Governors chart of a birth",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
878 ms
95th percentile latency
878 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 878 ms · metadata changed · 18 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http totally-tarot-calculators-mcp https://totallytarot.net/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add totally-tarot-calculators-mcp --url https://totallytarot.net/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable totally-tarot-calculators-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "totally-tarot-calculators-mcp": {
      "url": "https://totallytarot.net/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "totally-tarot-calculators-mcp": {
      "type": "streamableHttp",
      "url": "https://totallytarot.net/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start totally-tarot-calculators-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "totally-tarot-calculators-mcp": {
      "type": "http",
      "url": "https://totallytarot.net/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http totally-tarot-calculators-mcp https://totallytarot.net/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://totallytarot.net/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "totally-tarot-calculators-mcp": {
      "serverUrl": "https://totallytarot.net/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Totally Tarot Calculators MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run Totally Tarot Calculators MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing