Skip to main content
Glama

compute_shadbala

Read-only

Calculates six-fold Shadbala and Ishta/Kashta Phala for the seven grahas from a birth moment and place, returning each strength component in virupas.

Instructions

Compute the complete six-fold Shadbala of the seven grahas (Sun to Saturn) for a birth moment and place, per BPHS Ch.27, with Ishta and Kashta Phala per Ch.28, in virupas. Pass the moment and the place; the tool casts the chart itself and reads sunrise, sunset and the next sunrise from the engine. Every part is in the output, each in its own field: Sthana (uccha, saptavargaja, ojhayugma, kendradi, drekkana), Dig (continuous, the arc from the weak cusp over 3, 27.7), Kala (nathonnata, paksha, tribhaga, abda, masa, vara, hora, ayana and yuddha, which is signed), Cheshta (the cheshta kendra for Mars to Saturn, the Sun's ayana and the Moon's paksha bala, 27.18 and 27.24-25), Naisargika and Drik (a quarter of the benefic sphuta drishti added, a quarter of the malefic taken away, the aspect of Mercury and Jupiter added whole, 27.19; it can be negative or pass 60). The Sun's ayana and the Moon's paksha bala are counted once in kala and once in cheshta, each undoubled. The rules are the verses' defaults; the benefic and malefic grahas are those of BPHS 3.11, with Rahu (the mean node) and Ketu counting only as malefic company for Mercury. Each graha also carries its motion state (vakra, anuvakra, ... atichara, 27.21-23) against the mean geocentric motion; it is reported beside the strengths and is not part of any total. The Sun must both rise and set at the place: in the polar day or night there is no Hindu day to divide into thirds and horas, and the call fails by name.

Input Schema

NameRequiredDescriptionDefault
latitudeYesGeographic latitude in degrees, north positive. The Hindu day is reckoned from this place's sunrise.
ayanamshaYesSidereal zodiac system. Eleven systems, each derived forward from a primary source and none tuned to match another implementation. The chart's true_ayanamsha_value output field reports the TRUE ayanamsha (mean plus nutation in longitude) already applied — nutation is included, do not add it yourself. Tropical is refused: this tool is defined on sidereal positions. Systems: IndianOfficial = Indian Astronomical Ephemeris 2022, AYANAMSA section: 23 deg 51 min 25.53 sec at J2000.0, propagated by P03 general precession | FaganBradley = Fagan & Firebrace, Primer of Sidereal Astrology: synetic vernal point 335 deg 57 min 28.64 sec at B1950.0, ayanamsha = 360 deg minus SVP | Krishnamurti = Krishnamurti Padhdhati Vol-I: 22 deg 22 min 00 sec on the 1st of Chitra 1900, propagated at KSK's stated 50.2388475 arcsec/yr | Raman = Raman, A Manual of Hindu Astrology (1935), Ch. III Art. 49 | SuryaSiddhanta = Surya Siddhanta Ch. 3 vv. 9-12 | Yukteshwar = Yukteswar, The Holy Science (1894) | RevatiPaksha [star] = Revati at the sidereal initial point, the majority reading against Surya Siddhanta Ch. 8's own 359 deg 50 min, zeta Piscium per Hipparcos | PushyaPaksha [star] = Narasimha Rao, Introducing Pushya-paksha Ayanamsa | TrueChitra [star] = Self-describing condition; Spica per Hipparcos | ChandraHari [star] = Chandra Hari, Indian J. History of Science 33(4), 1998 | GalacticCenter0Sag [star] = Self-describing condition; Sgr A* per Gordon, de Witt & Jacobs (2023), AJ 165, 49.
longitudeYesGeographic longitude in degrees, east positive.
julian_dayYesJulian Day number in UT1 (Universal Time) — not TT, not TDB, i.e. the same scale as compute_natal_chart's julian_day.
elevation_mNoObserver elevation in metres above sea level [-500, 9000] (default 0). Lowers the horizon by the dip and so moves sunrise and sunset.
house_systemNoHouse system whose first, fourth, seventh and tenth cusps Dig Bala is measured from, and whose house placements give Kendradi Bala: Placidus, Koch, Equal, WholeSign, etc. The same names compute_natal_chart takes.Placidus
tz_offset_minutesNoOffset of the observer's civil clock from UT, in minutes, in [-720, 840] (UTC-12:00 to UTC+14:00). Names the calendar date of the sunrise that begins the Hindu day, from which the lords of the year, month and day (abda, masa, vara) are reckoned.

Output Schema

NameRequiredDescriptionDefault
cuspsYesThe four angular cusps Dig Bala is measured from, sidereal degrees.
momentYesThe birth moment Kala Bala was reckoned from. Every instant is a Julian Day (UT1).
planetsYesThe seven grahas, Sun to Saturn, in the order Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn. All strengths are in virupas.
julian_dayYesThe Julian Day (UT1) the strengths were computed for, echoed back.
house_systemYesThe house system requested. When `polar_fallback` is true it was undefined at this latitude, and the cusps and house placements come from the fallback the natal chart uses.
polar_fallbackYesTrue when the requested house system was undefined at this latitude and a fallback was used, so Dig Bala and Kendradi Bala are read from the fallback's cusps and houses.
true_ayanamsha_valueYesTrue ayanamsha (mean plus nutation in longitude) applied, in degrees.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed35 schema fields changed
    • addedInput schema / properties / ayanamsha
      Added value: +{
      +  "description": "Sidereal zodiac system. Eleven systems, each derived forward from a primary source and none tuned to match another implementation. The chart's true_ayanamsha_value output field reports the TRUE ayanamsha (mean plus nutation in longitude) already applied — nutation is included, do not add it yourself. Tropical is refused: this tool is defined on sidereal positions. Systems: IndianOfficial = Indian Astronomical Ephemeris 2022, AYANAMSA section: 23 deg 51 min 25.53 sec at J2000.0, propagated by P03 general precession | FaganBradley = Fagan & Firebrace, Primer of Sidereal Astrology: synetic vernal point 335 deg 57 min 28.64 sec at B1950.0, ayanamsha = 360 deg minus SVP | Krishnamurti = Krishnamurti Padhdhati Vol-I: 22 deg 22 min 00 sec on the 1st of Chitra 1900, propagated at KSK's stated 50.2388475 arcsec/yr | Raman = Raman, A Manual of Hindu Astrology (1935), Ch. III Art. 49 | SuryaSiddhanta = Surya Siddhanta Ch. 3 vv. 9-12 | Yukteshwar = Yukteswar, The Holy Science (1894) | RevatiPaksha [star] = Revati at the sidereal initial point, the majority reading against Surya Siddhanta Ch. 8's own 359 deg 50 min, zeta Piscium per Hipparcos | PushyaPaksha [star] = Narasimha Rao, Introducing Pushya-paksha Ayanamsa | TrueChitra [star] = Self-describing condition; Spica per Hipparcos | ChandraHari [star] = Chandra Hari, Indian J. History of Science 33(4), 1998 | GalacticCenter0Sag [star] = Self-describing condition; Sgr A* per Gordon, de Witt & Jacobs (2023), AJ 165, 49.",
      +  "enum": [
      +    "IndianOfficial",
      +    "FaganBradley",
      +    "Krishnamurti",
      +    "Raman",
      +    "SuryaSiddhanta",
      +    "Yukteshwar",
      +    "RevatiPaksha",
      +    "PushyaPaksha",
      +    "TrueChitra",
      +    "ChandraHari",
      +    "GalacticCenter0Sag"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / elevation_m
      Added value: +{
      +  "default": 0,
      +  "description": "Observer elevation in metres above sea level [-500, 9000] (default 0). Lowers the horizon by the dip and so moves sunrise and sunset.",
      +  "maximum": 9000,
      +  "minimum": -500,
      +  "type": "number"
      +}
    • addedInput schema / properties / house_system
      Added value: +{
      +  "default": "Placidus",
      +  "description": "House system whose first, fourth, seventh and tenth cusps Dig Bala is measured from, and whose house placements give Kendradi Bala: Placidus, Koch, Equal, WholeSign, etc. The same names compute_natal_chart takes.",
      +  "type": "string"
      +}
    • removedInput schema / properties / is_daytime
      Removed value: -{
      -  "default": false,
      -  "description": "True if the birth moment falls between sunrise and sunset. Feeds Nathonnatha Bala within Kala Bala.",
      -  "type": "boolean"
      -}
    • addedInput schema / properties / julian_day
      Added value: +{
      +  "description": "Julian Day number in UT1 (Universal Time) — not TT, not TDB, i.e. the same scale as compute_natal_chart's julian_day.",
      +  "type": "number"
      +}
    • addedInput schema / properties / latitude
      Added value: +{
      +  "description": "Geographic latitude in degrees, north positive. The Hindu day is reckoned from this place's sunrise.",
      +  "maximum": 90,
      +  "minimum": -90,
      +  "type": "number"
      +}
    • addedInput schema / properties / longitude
      Added value: +{
      +  "description": "Geographic longitude in degrees, east positive.",
      +  "maximum": 180,
      +  "minimum": -180,
      +  "type": "number"
      +}
    • removedInput schema / properties / moon_phase_waxing
      Removed value: -{
      -  "default": false,
      -  "description": "True during shukla paksha (waxing Moon). Feeds Paksha Bala within Kala Bala.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / planets
      Removed value: -{
      -  "description": "Array of planet data objects.",
      -  "items": {
      -    "properties": {
      -      "average_speed": {
      -        "description": "Mean daily motion in degrees per day, compared against speed for Cheshta Bala.",
      -        "type": "number"
      -      },
      -      "benefic_aspect_count": {
      -        "default": 0,
      -        "description": "Number of benefic aspects received. Drives Drik Bala.",
      -        "type": "integer"
      -      },
      -      "bhava": {
      -        "description": "House occupied, 1-12. Drives Dig Bala and Kendradi Bala.",
      -        "maximum": 12,
      -        "minimum": 1,
      -        "type": "integer"
      -      },
      -      "longitude": {
      -        "description": "Sidereal longitude in degrees [0, 360). Drives Uchcha, Ojhayugma and Drekkana Bala.",
      -        "maximum": 360,
      -        "minimum": 0,
      -        "type": "number"
      -      },
      -      "malefic_aspect_count": {
      -        "default": 0,
      -        "description": "Number of malefic aspects received, subtracted in Drik Bala.",
      -        "type": "integer"
      -      },
      -      "planet": {
      -        "description": "Planet name: Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn",
      -        "type": "string"
      -      },
      -      "sign": {
      -        "description": "Sidereal sign index, which must agree with longitude (floor(longitude / 30)).",
      -        "maximum": 11,
      -        "minimum": 0,
      -        "type": "integer"
      -      },
      -      "speed": {
      -        "description": "Current apparent speed in degrees per day, negative when retrograde. Drives Cheshta Bala.",
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "planet",
      -      "sign",
      -      "longitude",
      -      "bhava",
      -      "speed",
      -      "average_speed"
      -    ],
      -    "type": "object"
      -  },
      -  "type": "array"
      -}
    • addedInput schema / properties / tz_offset_minutes
      Added value: +{
      +  "default": 0,
      +  "description": "Offset of the observer's civil clock from UT, in minutes, in [-720, 840] (UTC-12:00 to UTC+14:00). Names the calendar date of the sunrise that begins the Hindu day, from which the lords of the year, month and day (abda, masa, vara) are reckoned.",
      +  "maximum": 840,
      +  "minimum": -720,
      +  "type": "integer"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "planets"
      -]New value: +[
      +  "julian_day",
      +  "latitude",
      +  "longitude",
      +  "ayanamsha"
      +]
    • addedOutput schema / properties / cusps
      Added value: +{
      +  "description": "The four angular cusps Dig Bala is measured from, sidereal degrees.",
      +  "properties": {
      +    "first": {
      +      "type": "number"
      +    },
      +    "fourth": {
      +      "type": "number"
      +    },
      +    "seventh": {
      +      "type": "number"
      +    },
      +    "tenth": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "first",
      +    "fourth",
      +    "seventh",
      +    "tenth"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / house_system
      Added value: +{
      +  "description": "The house system requested. When `polar_fallback` is true it was undefined at this latitude, and the cusps and house placements come from the fallback the natal chart uses.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / julian_day
      Added value: +{
      +  "description": "The Julian Day (UT1) the strengths were computed for, echoed back.",
      +  "type": "number"
      +}
    • addedOutput schema / properties / moment
      Added value: +{
      +  "description": "The birth moment Kala Bala was reckoned from. Every instant is a Julian Day (UT1).",
      +  "properties": {
      +    "apparent_hours_from_midnight": {
      +      "description": "Local apparent solar time, hours since midnight, 0 to 24: the hour angle of the true Sun plus 12 hours.",
      +      "type": "number"
      +    },
      +    "hindu_day_jdn": {
      +      "description": "Julian Day Number of the local calendar date of jd_sunrise, at tz_offset_minutes.",
      +      "type": "integer"
      +    },
      +    "jd": {
      +      "description": "The birth.",
      +      "type": "number"
      +    },
      +    "jd_next_sunrise": {
      +      "description": "The sunrise that ends the Hindu day.",
      +      "type": "number"
      +    },
      +    "jd_sunrise": {
      +      "description": "The sunrise that begins the Hindu day holding the birth: the last at or before it.",
      +      "type": "number"
      +    },
      +    "jd_sunset": {
      +      "description": "The sunset of that day.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "jd",
      +    "jd_sunrise",
      +    "jd_sunset",
      +    "jd_next_sunrise",
      +    "hindu_day_jdn",
      +    "apparent_hours_from_midnight"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / planets / description
      Previous value: -"One entry per graha supplied, in input order."New value: +"The seven grahas, Sun to Saturn, in the order Sun, Moon, Mars, Mercury, Jupiter, Venus, Saturn. All strengths are in virupas."
    • changedOutput schema / properties / planets / items / properties / cheshta_bala / description
      Previous value: -"Motional strength, from speed against average speed."New value: +"Motional strength: the Sun's ayana bala, the Moon's paksha bala, the folded cheshta kendra over 3 for the others (27.18, 27.24, 27.25)."
    • changedOutput schema / properties / planets / items / properties / dig_bala / description
      Previous value: -"Directional strength."New value: +"Directional strength, 0-60, continuous in the longitude (27.7)."
    • removedOutput schema / properties / planets / items / properties / drekkana_bala
      Removed value: -{
      -  "description": "Decanate strength, 0 or 15.",
      -  "type": "number"
      -}
    • changedOutput schema / properties / planets / items / properties / drik_bala / description
      Previous value: -"Aspectual strength, benefic aspects minus malefic."New value: +"Aspectual strength from the sphuta drishti, signed (27.19)."
    • changedOutput schema / properties / planets / items / properties / ishta_phala / description
      Previous value: -"Benefic potential, 0-60."New value: +"Benefic potential, 0-60 (28.5-28.6)."
    • addedOutput schema / properties / planets / items / properties / kala
      Added value: +{
      +  "description": "Temporal strength by part.",
      +  "properties": {
      +    "abda": {
      +      "description": "15 to the lord of the year (27.13).",
      +      "type": "number"
      +    },
      +    "ayana": {
      +      "description": "Strength from the sayana longitude, 0-60 (27.15-27.17), undoubled.",
      +      "type": "number"
      +    },
      +    "hora": {
      +      "description": "60 to the lord of the hora.",
      +      "type": "number"
      +    },
      +    "masa": {
      +      "description": "30 to the lord of the month.",
      +      "type": "number"
      +    },
      +    "nathonnata": {
      +      "description": "Day/night strength from the time from local midnight, 0-60 (27.8-27.9).",
      +      "type": "number"
      +    },
      +    "paksha": {
      +      "description": "Strength from the Moon-Sun elongation, 0-60 (27.10-27.11), undoubled for the Moon.",
      +      "type": "number"
      +    },
      +    "total": {
      +      "description": "Sum of the nine.",
      +      "type": "number"
      +    },
      +    "tribhaga": {
      +      "description": "60 to Jupiter and to the lord of the third of the day or night (27.12).",
      +      "type": "number"
      +    },
      +    "vara": {
      +      "description": "45 to the lord of the day.",
      +      "type": "number"
      +    },
      +    "yuddha": {
      +      "description": "Signed planetary-war adjustment (27.20): the difference of the two strengths to the victor, from the vanquished.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "nathonnata",
      +    "paksha",
      +    "tribhaga",
      +    "abda",
      +    "masa",
      +    "vara",
      +    "hora",
      +    "ayana",
      +    "yuddha",
      +    "total"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / planets / items / properties / kala_bala
      Removed value: -{
      -  "description": "Temporal strength. Nathonnatha and Paksha only; see the tool description.",
      -  "type": "number"
      -}
    • removedOutput schema / properties / planets / items / properties / kendradi_bala
      Removed value: -{
      -  "description": "Angularity strength, 15-60.",
      -  "type": "number"
      -}
    • addedOutput schema / properties / planets / items / properties / motion
      Added value: +{
      +  "description": "The graha's motion state (27.21-27.23). Reported beside the strengths and not part of any total.",
      +  "properties": {
      +    "mean_speed_deg_per_day": {
      +      "description": "Mean geocentric motion at the birth, the pace the state is judged against.",
      +      "type": "number"
      +    },
      +    "speed_deg_per_day": {
      +      "description": "Speed in longitude, negative when retrograde.",
      +      "type": "number"
      +    },
      +    "state": {
      +      "description": "Vakra, Anuvakra, Vikala, Manda, Mandatara, Sama, Chara or Atichara.",
      +      "type": "string"
      +    },
      +    "virupas": {
      +      "description": "The cheshta bala that state carries in the verse.",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "state",
      +    "virupas",
      +    "speed_deg_per_day",
      +    "mean_speed_deg_per_day"
      +  ],
      +  "type": "object"
      +}
    • changedOutput schema / properties / planets / items / properties / naisargika_bala / description
      Previous value: -"Natural strength, fixed per graha."New value: +"Natural strength, fixed per graha (27.14)."
    • removedOutput schema / properties / planets / items / properties / ojhayugma_bala
      Removed value: -{
      -  "description": "Odd/even sign strength, 0-30.",
      -  "type": "number"
      -}
    • addedOutput schema / properties / planets / items / properties / sthana
      Added value: +{
      +  "description": "Positional strength by part.",
      +  "properties": {
      +    "drekkana": {
      +      "description": "Decanate strength, 0 or 15 (27.6).",
      +      "type": "number"
      +    },
      +    "kendradi": {
      +      "description": "Angularity strength from the house, 15, 30 or 60.",
      +      "type": "number"
      +    },
      +    "ojhayugma": {
      +      "description": "Odd/even sign and navamsa strength, 0-30.",
      +      "type": "number"
      +    },
      +    "saptavargaja": {
      +      "description": "Dignity in the seven vargas D1, D2, D3, D7, D9, D12 and D30 (27.2-27.4).",
      +      "type": "number"
      +    },
      +    "total": {
      +      "description": "Sum of the five.",
      +      "type": "number"
      +    },
      +    "uccha": {
      +      "description": "Exaltation strength, 0-60 (27.1).",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "uccha",
      +    "saptavargaja",
      +    "ojhayugma",
      +    "kendradi",
      +    "drekkana",
      +    "total"
      +  ],
      +  "type": "object"
      +}
    • removedOutput schema / properties / planets / items / properties / sthana_bala
      Removed value: -{
      -  "description": "Positional strength: the sum of the four sub-components below.",
      -  "type": "number"
      -}
    • changedOutput schema / properties / planets / items / properties / total / description
      Previous value: -"Sum of the six balas, in virupas."New value: +"Sum of the six: sthana.total + dig_bala + kala.total + cheshta_bala + naisargika_bala + drik_bala."
    • removedOutput schema / properties / planets / items / properties / uccha_bala
      Removed value: -{
      -  "description": "Exaltation strength, 0-60.",
      -  "type": "number"
      -}
    • changedOutput schema / properties / planets / items / required
      Previous value: -[
      -  "planet",
      -  "sthana_bala",
      -  "dig_bala",
      -  "kala_bala",
      -  "cheshta_bala",
      -  "naisargika_bala",
      -  "drik_bala",
      -  "total"
      -]New value: +[
      +  "planet",
      +  "sthana",
      +  "dig_bala",
      +  "kala",
      +  "cheshta_bala",
      +  "naisargika_bala",
      +  "drik_bala",
      +  "total",
      +  "ishta_phala",
      +  "kashta_phala",
      +  "motion"
      +]
    • addedOutput schema / properties / polar_fallback
      Added value: +{
      +  "description": "True when the requested house system was undefined at this latitude and a fallback was used, so Dig Bala and Kendradi Bala are read from the fallback's cusps and houses.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / true_ayanamsha_value
      Added value: +{
      +  "description": "True ayanamsha (mean plus nutation in longitude) applied, in degrees.",
      +  "type": "number"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "planets"
      -]New value: +[
      +  "julian_day",
      +  "true_ayanamsha_value",
      +  "house_system",
      +  "polar_fallback",
      +  "moment",
      +  "cusps",
      +  "planets"
      +]
  2. Changed10 schema fields changedv8.0.0
    • addedInput schema / properties / is_daytime / description
      Added value: +"True if the birth moment falls between sunrise and sunset. Feeds Nathonnatha Bala within Kala Bala."
    • addedInput schema / properties / moon_phase_waxing / description
      Added value: +"True during shukla paksha (waxing Moon). Feeds Paksha Bala within Kala Bala."
    • addedInput schema / properties / planets / items / properties / average_speed / description
      Added value: +"Mean daily motion in degrees per day, compared against speed for Cheshta Bala."
    • addedInput schema / properties / planets / items / properties / benefic_aspect_count / description
      Added value: +"Number of benefic aspects received. Drives Drik Bala."
    • addedInput schema / properties / planets / items / properties / bhava / description
      Added value: +"House occupied, 1-12. Drives Dig Bala and Kendradi Bala."
    • addedInput schema / properties / planets / items / properties / longitude / description
      Added value: +"Sidereal longitude in degrees [0, 360). Drives Uchcha, Ojhayugma and Drekkana Bala."
    • addedInput schema / properties / planets / items / properties / malefic_aspect_count / description
      Added value: +"Number of malefic aspects received, subtracted in Drik Bala."
    • addedInput schema / properties / planets / items / properties / sign / description
      Added value: +"Sidereal sign index, which must agree with longitude (floor(longitude / 30))."
    • addedInput schema / properties / planets / items / properties / speed / description
      Added value: +"Current apparent speed in degrees per day, negative when retrograde. Drives Cheshta Bala."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "planets": {
      +      "description": "One entry per graha supplied, in input order.",
      +      "items": {
      +        "properties": {
      +          "cheshta_bala": {
      +            "description": "Motional strength, from speed against average speed.",
      +            "type": "number"
      +          },
      +          "dig_bala": {
      +            "description": "Directional strength.",
      +            "type": "number"
      +          },
      +          "drekkana_bala": {
      +            "description": "Decanate strength, 0 or 15.",
      +            "type": "number"
      +          },
      +          "drik_bala": {
      +            "description": "Aspectual strength, benefic aspects minus malefic.",
      +            "type": "number"
      +          },
      +          "ishta_phala": {
      +            "description": "Benefic potential, 0-60.",
      +            "type": "number"
      +          },
      +          "kala_bala": {
      +            "description": "Temporal strength. Nathonnatha and Paksha only; see the tool description.",
      +            "type": "number"
      +          },
      +          "kashta_phala": {
      +            "description": "Malefic potential, 0-60.",
      +            "type": "number"
      +          },
      +          "kendradi_bala": {
      +            "description": "Angularity strength, 15-60.",
      +            "type": "number"
      +          },
      +          "naisargika_bala": {
      +            "description": "Natural strength, fixed per graha.",
      +            "type": "number"
      +          },
      +          "ojhayugma_bala": {
      +            "description": "Odd/even sign strength, 0-30.",
      +            "type": "number"
      +          },
      +          "planet": {
      +            "description": "Graha assessed.",
      +            "type": "string"
      +          },
      +          "sthana_bala": {
      +            "description": "Positional strength: the sum of the four sub-components below.",
      +            "type": "number"
      +          },
      +          "total": {
      +            "description": "Sum of the six balas, in virupas.",
      +            "type": "number"
      +          },
      +          "uccha_bala": {
      +            "description": "Exaltation strength, 0-60.",
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "planet",
      +          "sthana_bala",
      +          "dig_bala",
      +          "kala_bala",
      +          "cheshta_bala",
      +          "naisargika_bala",
      +          "drik_bala",
      +          "total"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "planets"
      +  ],
      +  "type": "object"
      +}
  3. First observedv7.0.0

TDQS

A4.3/5.0
Behavior5/5

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

Adds substantial behavior beyond the readOnly/openWorld annotations: the polar day/night failure, that Drik Bala can be negative or exceed 60, that ayana and paksha bala are counted once in two places and undoubled, that motion state is reported but excluded from totals, and that tropical is refused. These are exactly the surprises an agent must know before calling.

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

Conciseness3/5

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

Front-loaded correctly, but the middle is a dense enumeration of every sub-component and verse citation (uccha, saptavargaja, ojhayugma, 27.18, 27.24-25, 3.11, 27.21-23) that largely restates what an output schema already exists to convey. The behavioral notes at the end earn their place; the taxonomy dump is bloat.

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?

For a computation of this complexity with an output schema present, the description covers what is computed, how sub-balas are combined (e.g. a quarter of benefic sphuta drishti added, a quarter of malefic subtracted), the non-doubling rule, what is excluded from totals, and the failure mode. Nothing an agent needs in order to call it correctly is missing.

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 coverage is 100% and each parameter is already documented in depth (ayanamsha systems, elevation horizon dip, tz_offset naming the sunrise date), so the schema does the heavy lifting. The description adds only indirect parameter context ('pass the moment and the place', the sunrise requirement tied to latitude) rather than new per-parameter meaning, 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 precise verb and resource ('Compute the complete six-fold Shadbala of the seven grahas ... for a birth moment and place') plus the governing source (BPHS Ch.27/28) and unit (virupas). The scope is unmistakably distinct from siblings like compute_vargas, compute_karakas, or compute_natal_chart without needing to name them.

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?

Tells the agent what to supply ('Pass the moment and the place; the tool casts the chart itself') and pre-empts a dependency the agent would otherwise assume, i.e. that a chart must be computed first. It also states an explicit when-not condition: if the Sun neither rises nor sets, the call fails by name. No explicit routing against sibling tools, so not a 5.

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