Skip to main content
Glama

Totally Tarot Calculators

Read the panchang for a date and place

compute_panchang
Read-onlyIdempotent

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.

Input Schema

NameRequiredDescriptionDefault
tzNoIANA zone or numeric UTC offset hours, for printing local times only. Example: "Asia/Kolkata".
latNoLatitude in decimal degrees as a string. Example: "28.6139". Paired with lon.
lonNoLongitude in decimal degrees as a string. Example: "77.209". It sets the sunrise the whole panchang is read at.
dateNoCivil date at the place, ISO YYYY-MM-DD, 1700-2200. Example: "2026-09-20". Defaults to today (UTC).
placeNoTown 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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / date / description
      Previous value: -"Civil date at the place, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-20\". Omit: today (UTC)."New value: +"Civil date at the place, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-20\". Defaults to today (UTC)."
    • changedInput schema / properties / lat / description
      Previous value: -"Latitude in decimal degrees as a string. Example: \"28.6139\". Send with lon."New value: +"Latitude in decimal degrees as a string. Example: \"28.6139\". Paired with lon."
    • changedInput schema / properties / place / description
      Previous value: -"Town or city with region or country. Example: \"Chennai, Tamil Nadu, India\". REQUIRED unless lat and lon are sent; an ambiguous name is refused with candidates."New value: +"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."
  2. Changed2 schema fields changed
    • changedInput schema / properties / date / description
      Previous value: -"Local civil date at the place, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-20\"."New value: +"Civil date at the place, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-20\". Omit: today (UTC)."
    • removedInput schema / required
      Removed value: -[
      -  "date"
      -]
  3. Changed6 schema fields changed
    • changedInput schema / properties / date / description
      Previous value: -"The civil date, ISO YYYY-MM-DD, zero-padded, between 1700 and 2200. Example: \"2026-09-20\". This is the local civil day at the place given, which is what a printed panchang is organised by."New value: +"Local civil date at the place, ISO YYYY-MM-DD, 1700-2200. Example: \"2026-09-20\"."
    • changedInput schema / properties / lat / description
      Previous value: -"Latitude in decimal degrees, −90 to 90, as a string. Example: \"28.6139\". Only for a caller who already holds exact coordinates; must be sent together with lon, and half a pair is refused rather than completed from a name."New value: +"Latitude in decimal degrees as a string. Example: \"28.6139\". Send with lon."
    • changedInput schema / properties / lon / description
      Previous value: -"Longitude in decimal degrees, −180 to 180, as a string. Example: \"77.209\". Must be sent together with lat. Longitude is the one that moves the answer: it sets the sunrise the whole panchang is read at."New value: +"Longitude in decimal degrees as a string. Example: \"77.209\". It sets the sunrise the whole panchang is read at."
    • changedInput schema / properties / place / description
      Previous value: -"Town or city, with the region or country when the name is a common one. Examples: \"New Delhi, India\", \"Chennai, Tamil Nadu, India\", \"Leicester, England\". REQUIRED unless lat and lon are sent. An ambiguous name is refused with the candidates listed — relay them and ask which, because two places at different longitudes have different sunrises and therefore different tithis."New value: +"Town or city with region or country. Example: \"Chennai, Tamil Nadu, India\". REQUIRED unless lat and lon are sent; an ambiguous name is refused with candidates."
    • changedInput schema / properties / tz / description
      Previous value: -"IANA zone name, or a plain numeric UTC offset in hours, used only for printing the local clock times. Examples: \"Asia/Kolkata\", \"5.5\". Leave it out and the zone is resolved for that place on that date."New value: +"IANA zone or numeric UTC offset hours, for printing local times only. Example: \"Asia/Kolkata\"."
    • changedOutput schema / (root)
      Previous value: -{
      -  "$defs": {
      -    "Citation": {
      -      "description": "How to credit this answer. Present on every response, successes and refusals alike.",
      -      "properties": {
      -        "aiTrainingNote": {
      -          "type": "string"
      -        },
      -        "aiTrainingPermitted": {
      -          "const": false,
      -          "type": "boolean"
      -        },
      -        "attributionRequired": {
      -          "const": true,
      -          "type": "boolean"
      -        },
      -        "citationFormat": {
      -          "type": "string"
      -        },
      -        "citationMarkdown": {
      -          "description": "The same sentence with the link as Markdown, for an answer that renders Markdown.",
      -          "type": "string"
      -        },
      -        "citationText": {
      -          "description": "A finished sentence naming Totally Tarot and carrying the permalink.",
      -          "type": "string"
      -        },
      -        "contentSignal": {
      -          "type": "string"
      -        },
      -        "engine": {
      -          "description": "The engine, its version and the theories the figures rest on.",
      -          "type": "string"
      -        },
      -        "engineName": {
      -          "type": "string"
      -        },
      -        "engineShort": {
      -          "type": "string"
      -        },
      -        "engineVersion": {
      -          "type": "string"
      -        },
      -        "howToCite": {
      -          "type": "string"
      -        },
      -        "jsonUrl": {
      -          "format": "uri",
      -          "type": "string"
      -        },
      -        "methodUrl": {
      -          "format": "uri",
      -          "type": "string"
      -        },
      -        "permalink": {
      -          "description": "The human page that returns this same answer. This is the URL to link.",
      -          "format": "uri",
      -          "type": "string"
      -        },
      -        "publisher": {
      -          "type": "string"
      -        },
      -        "sourceName": {
      -          "type": "string"
      -        },
      -        "sourceUrl": {
      -          "format": "uri",
      -          "type": "string"
      -        },
      -        "termsUrl": {
      -          "format": "uri",
      -          "type": "string"
      -        },
      -        "theories": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        },
      -        "usageTerms": {
      -          "type": "string"
      -        }
      -      },
      -      "required": [
      -        "attributionRequired",
      -        "citationText",
      -        "permalink",
      -        "engine",
      -        "termsUrl"
      -      ],
      -      "type": "object"
      -    }
      -  },
      -  "properties": {
      -    "attribution": {
      -      "description": "The ready-to-paste credit line. Include this in any answer built on the result.",
      -      "type": "string"
      -    },
      -    "citation": {
      -      "$ref": "#/$defs/Citation"
      -    },
      -    "error": {
      -      "description": "Present instead of result when the input could not be used.",
      -      "properties": {
      -        "code": {
      -          "type": "string"
      -        },
      -        "message": {
      -          "type": "string"
      -        },
      -        "suggestions": {
      -          "items": {
      -            "type": "string"
      -          },
      -          "type": "array"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "inputs": {
      -      "description": "What the request was understood to be. The permalink is built from these.",
      -      "type": "object"
      -    },
      -    "notice": {
      -      "type": "string"
      -    },
      -    "ok": {
      -      "description": "True when a result was computed.",
      -      "type": "boolean"
      -    },
      -    "result": {
      -      "description": "The computed figures. Absent on a refusal.",
      -      "properties": {
      -        "ayanamsa": {
      -          "description": "The ayanamsa the sidereal longitudes were taken on.",
      -          "type": "string"
      -        },
      -        "date": {
      -          "description": "The civil date the limbs were read for, at the place given.",
      -          "type": "string"
      -        },
      -        "dayLengthHours": {
      -          "description": "Hours between sunrise and sunset.",
      -          "type": "number"
      -        },
      -        "karana": {
      -          "properties": {
      -            "endLocal": {
      -              "description": "When it ends, carrying its date and its UTC offset. A karana is half a tithi, so it runs about 10 to 13.4 hours and two of them end within most civil days.",
      -              "type": "string"
      -            },
      -            "endUTC": {
      -              "description": "The same end boundary as a UTC instant to the second.",
      -              "type": "string"
      -            },
      -            "lengthHours": {
      -              "description": "How long this karana runs, in hours. Always about half the tithi it sits in, and every second karana ends exactly where its tithi does.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "The karana, the half-tithi.",
      -              "type": "string"
      -            },
      -            "startLocal": {
      -              "description": "When this karana began, on the local clock, carrying its date and its UTC offset. The date is on it because a karana boundary can fall on a different civil day from the date you asked about.",
      -              "type": "string"
      -            },
      -            "startUTC": {
      -              "description": "The same start boundary as a UTC instant to the second.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "masa": {
      -          "properties": {
      -            "adhika": {
      -              "description": "True in an intercalary month.",
      -              "type": "boolean"
      -            },
      -            "amanta": {
      -              "description": "The lunar month on the new-moon-to-new-moon reckoning used across southern and western India.",
      -              "type": "string"
      -            },
      -            "purnimanta": {
      -              "description": "The same month on the full-moon-to-full-moon reckoning used across the north. The two names differ for half of every month, which is why both are returned rather than one being chosen.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "nakshatra": {
      -          "properties": {
      -            "endLocal": {
      -              "description": "When it ends, carrying its date and its UTC offset. A nakshatra runs about 20.8 to 27.2 hours, the longest of the four, so its span contains a local midnight 97 per cent of the time — more often than any other limb — and this boundary frequently falls on the day AFTER the date asked about. For New Delhi on 2026-09-20 it is 2026-09-21. Quote the date with the time.",
      -              "type": "string"
      -            },
      -            "endUTC": {
      -              "description": "The same end boundary as a UTC instant to the second.",
      -              "type": "string"
      -            },
      -            "lengthHours": {
      -              "description": "How long this nakshatra runs, in hours — about 20.8 to 27.2 hours, averaging 24.3. Never a flat 24, because the Moon's speed varies through its orbit.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "The Moon's nakshatra at sunrise.",
      -              "type": "string"
      -            },
      -            "pada": {
      -              "description": "Which quarter of the nakshatra, 1 to 4.",
      -              "type": "number"
      -            },
      -            "startLocal": {
      -              "description": "When this nakshatra began, on the local clock, carrying its date and its UTC offset — \"2026-09-20 01:42 UTC+5:30\". The date is on it because a nakshatra boundary can fall on a different civil day from the date you asked about.",
      -              "type": "string"
      -            },
      -            "startUTC": {
      -              "description": "The same start boundary as a UTC instant to the second.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "place": {
      -          "properties": {
      -            "label": {
      -              "description": "The place as it was resolved. Compare it with what you sent: a panchang is a question about a place, and the wrong place is a different day's answer.",
      -              "type": "string"
      -            },
      -            "latitude": {
      -              "description": "The resolved latitude.",
      -              "type": "number"
      -            },
      -            "longitude": {
      -              "description": "The resolved longitude. This is the one that moves the answer — it sets the sunrise the whole reading hangs on.",
      -              "type": "number"
      -            },
      -            "timezone": {
      -              "description": "The IANA zone resolved for that place on that date, used only for the local clock times.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "sunriseLocal": {
      -          "description": "The same instant on the clock at that place, which is how a printed panchang gives it.",
      -          "type": "string"
      -        },
      -        "sunriseUTC": {
      -          "description": "The instant the day's limbs are read at. Everything below is true AT THIS MOMENT, which is the classical rule rather than a convenience.",
      -          "type": "string"
      -        },
      -        "sunsetLocal": {
      -          "description": "Sunset on the local clock.",
      -          "type": "string"
      -        },
      -        "tithi": {
      -          "properties": {
      -            "endLocal": {
      -              "description": "When it ends, carrying its date and its UTC offset. A tithi is not a day: it runs about 20 to 26.8 hours, averaging 23.6 and ends at an arbitrary clock time, which is the whole reason the sunrise rule exists — and why this boundary frequently falls on the following day.",
      -              "type": "string"
      -            },
      -            "endUTC": {
      -              "description": "The same end boundary as a UTC instant to the second.",
      -              "type": "string"
      -            },
      -            "lengthHours": {
      -              "description": "Its actual length in hours.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "The lunar day running at sunrise.",
      -              "type": "string"
      -            },
      -            "paksha": {
      -              "description": "Shukla (waxing) or Krishna (waning).",
      -              "type": "string"
      -            },
      -            "startLocal": {
      -              "description": "When this tithi began, on the local clock, carrying its date and its UTC offset — \"2026-09-20 17:51 UTC+5:30\". A tithi boundary crosses midnight routinely, so a bare clock time would be ambiguous by a full day.",
      -              "type": "string"
      -            },
      -            "startUTC": {
      -              "description": "The same start boundary as a UTC instant to the second.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "vara": {
      -          "properties": {
      -            "name": {
      -              "description": "The weekday, counted from sunrise rather than from midnight.",
      -              "type": "string"
      -            },
      -            "sanskrit": {
      -              "description": "Its Sanskrit name, e.g. Ravivara.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        },
      -        "yoga": {
      -          "properties": {
      -            "endLocal": {
      -              "description": "When it ends, carrying its date and its UTC offset. The summed longitudes move faster than any other panchang quantity, so a yoga is the shortest of the four spans at about 19.5 to 25.2 hours. Its boundary still lands on a different civil day from its start 93.4 per cent of the time, because a span only has to be long enough to reach a midnight.",
      -              "type": "string"
      -            },
      -            "endUTC": {
      -              "description": "The same end boundary as a UTC instant to the second.",
      -              "type": "string"
      -            },
      -            "lengthHours": {
      -              "description": "How long this yoga runs, in hours.",
      -              "type": "number"
      -            },
      -            "name": {
      -              "description": "The yoga, from the summed sidereal longitudes of Sun and Moon.",
      -              "type": "string"
      -            },
      -            "startLocal": {
      -              "description": "When this yoga began, on the local clock, carrying its date and its UTC offset. The date is on it because a yoga boundary can fall on a different civil day from the date you asked about.",
      -              "type": "string"
      -            },
      -            "startUTC": {
      -              "description": "The same start boundary as a UTC instant to the second.",
      -              "type": "string"
      -            }
      -          },
      -          "type": "object"
      -        }
      -      },
      -      "type": "object"
      -    },
      -    "summary": {
      -      "description": "The answer in one sentence.",
      -      "type": "string"
      -    },
      -    "tool": {
      -      "description": "The calculator that answered.",
      -      "type": "string"
      -    },
      -    "toolName": {
      -      "type": "string"
      -    }
      -  },
      -  "required": [
      -    "ok",
      -    "tool",
      -    "attribution",
      -    "citation"
      -  ],
      -  "type": "object"
      -}New value: +null
  4. Changed1 schema field changed
    • addedOutput schema / properties / result / properties
      Added value: +{
      +  "ayanamsa": {
      +    "description": "The ayanamsa the sidereal longitudes were taken on.",
      +    "type": "string"
      +  },
      +  "date": {
      +    "description": "The civil date the limbs were read for, at the place given.",
      +    "type": "string"
      +  },
      +  "dayLengthHours": {
      +    "description": "Hours between sunrise and sunset.",
      +    "type": "number"
      +  },
      +  "karana": {
      +    "properties": {
      +      "endLocal": {
      +        "description": "When it ends, carrying its date and its UTC offset. A karana is half a tithi, so it runs about 10 to 13.4 hours and two of them end within most civil days.",
      +        "type": "string"
      +      },
      +      "endUTC": {
      +        "description": "The same end boundary as a UTC instant to the second.",
      +        "type": "string"
      +      },
      +      "lengthHours": {
      +        "description": "How long this karana runs, in hours. Always about half the tithi it sits in, and every second karana ends exactly where its tithi does.",
      +        "type": "number"
      +      },
      +      "name": {
      +        "description": "The karana, the half-tithi.",
      +        "type": "string"
      +      },
      +      "startLocal": {
      +        "description": "When this karana began, on the local clock, carrying its date and its UTC offset. The date is on it because a karana boundary can fall on a different civil day from the date you asked about.",
      +        "type": "string"
      +      },
      +      "startUTC": {
      +        "description": "The same start boundary as a UTC instant to the second.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "masa": {
      +    "properties": {
      +      "adhika": {
      +        "description": "True in an intercalary month.",
      +        "type": "boolean"
      +      },
      +      "amanta": {
      +        "description": "The lunar month on the new-moon-to-new-moon reckoning used across southern and western India.",
      +        "type": "string"
      +      },
      +      "purnimanta": {
      +        "description": "The same month on the full-moon-to-full-moon reckoning used across the north. The two names differ for half of every month, which is why both are returned rather than one being chosen.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "nakshatra": {
      +    "properties": {
      +      "endLocal": {
      +        "description": "When it ends, carrying its date and its UTC offset. A nakshatra runs about 20.8 to 27.2 hours, the longest of the four, so its span contains a local midnight 97 per cent of the time — more often than any other limb — and this boundary frequently falls on the day AFTER the date asked about. For New Delhi on 2026-09-20 it is 2026-09-21. Quote the date with the time.",
      +        "type": "string"
      +      },
      +      "endUTC": {
      +        "description": "The same end boundary as a UTC instant to the second.",
      +        "type": "string"
      +      },
      +      "lengthHours": {
      +        "description": "How long this nakshatra runs, in hours — about 20.8 to 27.2 hours, averaging 24.3. Never a flat 24, because the Moon's speed varies through its orbit.",
      +        "type": "number"
      +      },
      +      "name": {
      +        "description": "The Moon's nakshatra at sunrise.",
      +        "type": "string"
      +      },
      +      "pada": {
      +        "description": "Which quarter of the nakshatra, 1 to 4.",
      +        "type": "number"
      +      },
      +      "startLocal": {
      +        "description": "When this nakshatra began, on the local clock, carrying its date and its UTC offset — \"2026-09-20 01:42 UTC+5:30\". The date is on it because a nakshatra boundary can fall on a different civil day from the date you asked about.",
      +        "type": "string"
      +      },
      +      "startUTC": {
      +        "description": "The same start boundary as a UTC instant to the second.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "place": {
      +    "properties": {
      +      "label": {
      +        "description": "The place as it was resolved. Compare it with what you sent: a panchang is a question about a place, and the wrong place is a different day's answer.",
      +        "type": "string"
      +      },
      +      "latitude": {
      +        "description": "The resolved latitude.",
      +        "type": "number"
      +      },
      +      "longitude": {
      +        "description": "The resolved longitude. This is the one that moves the answer — it sets the sunrise the whole reading hangs on.",
      +        "type": "number"
      +      },
      +      "timezone": {
      +        "description": "The IANA zone resolved for that place on that date, used only for the local clock times.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "sunriseLocal": {
      +    "description": "The same instant on the clock at that place, which is how a printed panchang gives it.",
      +    "type": "string"
      +  },
      +  "sunriseUTC": {
      +    "description": "The instant the day's limbs are read at. Everything below is true AT THIS MOMENT, which is the classical rule rather than a convenience.",
      +    "type": "string"
      +  },
      +  "sunsetLocal": {
      +    "description": "Sunset on the local clock.",
      +    "type": "string"
      +  },
      +  "tithi": {
      +    "properties": {
      +      "endLocal": {
      +        "description": "When it ends, carrying its date and its UTC offset. A tithi is not a day: it runs about 20 to 26.8 hours, averaging 23.6 and ends at an arbitrary clock time, which is the whole reason the sunrise rule exists — and why this boundary frequently falls on the following day.",
      +        "type": "string"
      +      },
      +      "endUTC": {
      +        "description": "The same end boundary as a UTC instant to the second.",
      +        "type": "string"
      +      },
      +      "lengthHours": {
      +        "description": "Its actual length in hours.",
      +        "type": "number"
      +      },
      +      "name": {
      +        "description": "The lunar day running at sunrise.",
      +        "type": "string"
      +      },
      +      "paksha": {
      +        "description": "Shukla (waxing) or Krishna (waning).",
      +        "type": "string"
      +      },
      +      "startLocal": {
      +        "description": "When this tithi began, on the local clock, carrying its date and its UTC offset — \"2026-09-20 17:51 UTC+5:30\". A tithi boundary crosses midnight routinely, so a bare clock time would be ambiguous by a full day.",
      +        "type": "string"
      +      },
      +      "startUTC": {
      +        "description": "The same start boundary as a UTC instant to the second.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "vara": {
      +    "properties": {
      +      "name": {
      +        "description": "The weekday, counted from sunrise rather than from midnight.",
      +        "type": "string"
      +      },
      +      "sanskrit": {
      +        "description": "Its Sanskrit name, e.g. Ravivara.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "yoga": {
      +    "properties": {
      +      "endLocal": {
      +        "description": "When it ends, carrying its date and its UTC offset. The summed longitudes move faster than any other panchang quantity, so a yoga is the shortest of the four spans at about 19.5 to 25.2 hours. Its boundary still lands on a different civil day from its start 93.4 per cent of the time, because a span only has to be long enough to reach a midnight.",
      +        "type": "string"
      +      },
      +      "endUTC": {
      +        "description": "The same end boundary as a UTC instant to the second.",
      +        "type": "string"
      +      },
      +      "lengthHours": {
      +        "description": "How long this yoga runs, in hours.",
      +        "type": "number"
      +      },
      +      "name": {
      +        "description": "The yoga, from the summed sidereal longitudes of Sun and Moon.",
      +        "type": "string"
      +      },
      +      "startLocal": {
      +        "description": "When this yoga began, on the local clock, carrying its date and its UTC offset. The date is on it because a yoga boundary can fall on a different civil day from the date you asked about.",
      +        "type": "string"
      +      },
      +      "startUTC": {
      +        "description": "The same start boundary as a UTC instant to the second.",
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  }
      +}
  5. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent and non-destructive, so the description correctly spends its words on behavior that annotations cannot express: two cities can differ by a whole tithi for the same date, ambiguous place names are refused with candidates, and a no-sunrise latitude is rejected. It also discloses that results carry an attribution line and a permalink, which is unusual and worth knowing, though it says nothing about response size or the date range limits that the schema only implies.

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

Conciseness4/5

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

Front-loaded with the verb, scope and output list; the second paragraph's orbital-period figures and sunrise rule genuinely earn their place by explaining result variability rather than padding. It is on the long side, and the interval durations for yoga and karana are the least load-bearing sentence, but nothing is redundant with structured fields.

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

Completeness5/5

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

With no output schema, the description still tells the agent what comes back (each element with UTC and local begin/end instants, plus vara, sunrise, sunset, day length, both lunar-month systems, attribution and permalink). Combined with the refusal conditions and the sunrise rule, an agent has everything needed to call and interpret this correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents place, lat, lon, tz and date with examples and the anyOf requirement. The description's 'takes a place, or lat and lon' restates that anyOf and adds no format, default or precedence detail beyond it, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb (computes) and resource (the panchang) scoped to one civil date and one place, then enumerates the exact outputs (tithi, nakshatra with pada, yoga, karana, vara, sunrise/sunset, lunar month). This is clearly distinguishable from siblings like convert_calendar_date or get_solar_terms without opening any schema.

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

Usage Guidelines4/5

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

'Takes a place, or lat and lon' names the two calling modes, and the description explains the sunrise-based day assignment so an agent understands why a place matters. It gives exclusion-like conditions (ambiguous name refused with candidates; a latitude with no sunrise is refused) but never names which sibling to prefer for adjacent needs such as solar terms or moon phase.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources