Skip to main content
Glama

AstroNest — Vedic Astrology & Ephemeris

Guna Milan (36-point Aṣṭakūṭa) and Manglik

get_guna_milan
Read-onlyIdempotent

Use this when the user asks for the guna milan / kundli matching score (out of 36), or whether either person is Manglik. The classical Aṣṭakūṭa match for a pair (all eight kūṭas, with the Bhakoot and Nāḍī doṣas) and Manglik for both charts reckoned from the lagna, the Moon and Venus, with mutual cancellation. The same engine as /v1/compatibility, without the full reading: the score is one input, and /v1/compatibility reads each chart's marital promise, timing and doṣas on top of it. Deterministic, no language model. Cost: 2 credits per call (only successful calls are charged; a sandbox key is free and returns a fixed sample). Deterministic: the same input always gives the same answer. Example arguments: {"a":{"date":"1990-05-12","time":"14:35","timezone":"Asia/Kolkata","latitude":28.6139,"longitude":77.209,"name":"A"},"b":{"date":"1991-11-03","time":"06:10","timezone":"Asia/Kolkata","latitude":19.076,"longitude":72.8777,"name":"B"}}

Input Schema

NameRequiredDescriptionDefault
aYesFirst partner: birth data plus optional name and gender.
bYesSecond partner: birth data plus optional name and gender.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / $defs / GunaMilanResponse / allOf
      Previous value: -[
      -  {
      -    "$ref": "#/$defs/Envelope"
      -  },
      -  {
      -    "properties": {
      -      "gunaMilan": {
      -        "description": "Aṣṭakūṭa (36-point) matching.",
      -        "properties": {
      -          "bhakootDosha": {
      -            "$ref": "#/$defs/Dosha"
      -          },
      -          "interpretation": {
      -            "type": "string"
      -          },
      -          "kutas": {
      -            "items": {
      -              "properties": {
      -                "max": {
      -                  "type": "number"
      -                },
      -                "name": {
      -                  "type": "string"
      -                },
      -                "note": {
      -                  "type": "string"
      -                },
      -                "score": {
      -                  "type": "number"
      -                }
      -              },
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "nadiDosha": {
      -            "$ref": "#/$defs/Dosha"
      -          },
      -          "totalGunas": {
      -            "type": "number"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "manglik": {
      -        "properties": {
      -          "a": {
      -            "$ref": "#/$defs/Manglik"
      -          },
      -          "b": {
      -            "$ref": "#/$defs/Manglik"
      -          },
      -          "cancelled": {
      -            "description": "True when the doṣa is neutralised across the pair (both Manglik, or the one present is self-mitigated).",
      -            "type": "boolean"
      -          },
      -          "reason": {
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "note": {
      -        "type": "string"
      -      },
      -      "partners": {
      -        "properties": {
      -          "a": {
      -            "properties": {
      -              "birth": {
      -                "type": "string"
      -              },
      -              "moonNakshatra": {
      -                "type": "string"
      -              },
      -              "moonSign": {
      -                "type": "string"
      -              },
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "b": {
      -            "properties": {
      -              "birth": {
      -                "type": "string"
      -              },
      -              "moonNakshatra": {
      -                "type": "string"
      -              },
      -              "moonSign": {
      -                "type": "string"
      -              },
      -              "name": {
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "roles": {
      -        "description": "Which partner was read as the groom (Varṇa is counted from the groom).",
      -        "properties": {
      -          "basis": {
      -            "type": "string"
      -          },
      -          "bride": {
      -            "enum": [
      -              "a",
      -              "b"
      -            ],
      -            "type": "string"
      -          },
      -          "groom": {
      -            "enum": [
      -              "a",
      -              "b"
      -            ],
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "gunaMilan",
      -      "manglik"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "$ref": "#/$defs/Envelope"
      +  },
      +  {
      +    "properties": {
      +      "gunaMilan": {
      +        "description": "Aṣṭakūṭa (36-point) matching.",
      +        "properties": {
      +          "bhakootDosha": {
      +            "$ref": "#/$defs/Dosha"
      +          },
      +          "interpretation": {
      +            "type": "string"
      +          },
      +          "kutas": {
      +            "items": {
      +              "properties": {
      +                "max": {
      +                  "type": "number"
      +                },
      +                "name": {
      +                  "type": "string"
      +                },
      +                "note": {
      +                  "type": "string"
      +                },
      +                "score": {
      +                  "type": "number"
      +                }
      +              },
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "nadiDosha": {
      +            "$ref": "#/$defs/Dosha"
      +          },
      +          "totalGunas": {
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "manglik": {
      +        "properties": {
      +          "a": {
      +            "$ref": "#/$defs/Manglik"
      +          },
      +          "b": {
      +            "$ref": "#/$defs/Manglik"
      +          },
      +          "cancelled": {
      +            "description": "True when the doṣa is neutralised across the pair (both Manglik, or the one present is self-mitigated).",
      +            "type": "boolean"
      +          },
      +          "points": {
      +            "description": "The graded Kuja doṣa comparison (Trivedi's method, Raman's points table, reckoned from the lagna): a weighing of how evenly the two charts carry the doṣa — never a cancellation. variation = |A − B| ÷ the smaller total (null when one chart carries none and the other some); balanced = variation ≤ 0.25 (Raman). Symmetric: no gendered threshold.",
      +            "nullable": true,
      +            "properties": {
      +              "balanced": {
      +                "type": "boolean"
      +              },
      +              "heavier": {
      +                "enum": [
      +                  "A",
      +                  "B"
      +                ],
      +                "nullable": true,
      +                "type": "string"
      +              },
      +              "note": {
      +                "type": "string"
      +              },
      +              "variation": {
      +                "example": 0.5,
      +                "nullable": true,
      +                "type": "number"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "pointsTotals": {
      +            "description": "Each chart's Kuja points total (lagna reckoning).",
      +            "nullable": true,
      +            "properties": {
      +              "a": {
      +                "nullable": true,
      +                "type": "number"
      +              },
      +              "b": {
      +                "nullable": true,
      +                "type": "number"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "reason": {
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "note": {
      +        "type": "string"
      +      },
      +      "partners": {
      +        "properties": {
      +          "a": {
      +            "properties": {
      +              "birth": {
      +                "type": "string"
      +              },
      +              "moonNakshatra": {
      +                "type": "string"
      +              },
      +              "moonSign": {
      +                "type": "string"
      +              },
      +              "name": {
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "b": {
      +            "properties": {
      +              "birth": {
      +                "type": "string"
      +              },
      +              "moonNakshatra": {
      +                "type": "string"
      +              },
      +              "moonSign": {
      +                "type": "string"
      +              },
      +              "name": {
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "roles": {
      +        "description": "Which partner was read as the groom (Varṇa is counted from the groom).",
      +        "properties": {
      +          "basis": {
      +            "type": "string"
      +          },
      +          "bride": {
      +            "enum": [
      +              "a",
      +              "b"
      +            ],
      +            "type": "string"
      +          },
      +          "groom": {
      +            "enum": [
      +              "a",
      +              "b"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "gunaMilan",
      +      "manglik"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changed
    • changedOutput schema / $defs / Manglik / description
      Previous value: -"Manglik (Kuja doṣa) for one chart, reckoned from the lagna, the Moon and Venus. A reckoning with house null was not computed — never read it as clean."New value: +"Manglik (Kuja doṣa) for one chart, reckoned from the lagna, the Moon and Venus. A reckoning with house null was not computed — never read it as clean. Classical exceptions are applied and named: whole-chart ones in cancelledBy (Mars in Leo or Aquarius; in its own sign or exalted, or exalted in the navāṁśa; conjunct Jupiter or the Moon; Jupiter or Venus in the ascendant), per-house ones on the reckoning as exemptBy."
    • addedOutput schema / $defs / Manglik / properties / cancelledBy
      Added value: +{
      +  "description": "Classical exceptions (parihāra) that cancel the doṣa for this chart, each with the texts that state it. When any applies, present is false — the reckonings still show where Mars stands.",
      +  "items": {
      +    "properties": {
      +      "rule": {
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedOutput schema / $defs / Manglik / properties / reckonings / items / properties / exemptBy
      Added value: +{
      +  "description": "Set when Mars stands in a doṣa house but its sign exempts it there (2nd Gemini/Virgo, 4th Aries/Scorpio, 7th Capricorn/Cancer, 8th Sagittarius/Pisces, 12th Taurus/Libra) — the stated reason, with its sources.",
      +  "type": "string"
      +}
  3. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds context beyond them: cost of 2 credits per call with only successful calls charged, a free sandbox key returning a fixed sample, and deterministic output. Billing and determinism are operationally important and are not derivable from the annotations.

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 usage trigger, then purpose, then differentiator, then cost/determinism facts; every sentence carries distinct information. The astrological vocabulary (Bhakoot, Nāḍī, lagna) makes it dense, but nothing is redundant.

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?

An output schema exists, so return values need not be explained; the description still covers trigger, scope, the sibling alternative, cost, and determinism. For a two-parameter, closed-world read tool this is complete enough to invoke correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema by supplying a full worked example with both a and b birth-data objects, which clarifies the two-partner shape and required fields in practice. It does not elaborate on optional fields (name, gender) or the omitted-time behavior, which the schema already covers.

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 and resource: the Aṣṭakūṭa (guna milan) matching score out of 36 plus Manglik status for both charts. It also explicitly distinguishes itself from the closest sibling by noting it is 'the same engine as /v1/compatibility, without the full reading', so an agent can separate the two without opening either schema.

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

Usage Guidelines5/5

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

Opens with an explicit trigger ('Use this when the user asks for the guna milan / kundli matching score ... or whether either person is Manglik') and names the alternative (get_compatibility / /v1/compatibility) with the condition that selects it ('reads each chart's marital promise, timing and doṣas on top of it'). When-to-use and alternative routing are both spelled out.

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.