Vastu Shastra MCP Server by RoxyAPI
What this MCP does
Provides Vastu Shastra reference data and calculators for plots, entrances, mandalas, room placement, proportions, and house-warming dates.
Tools
Input schema
{'type': 'object', 'examples': [{}], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'limit': {'type': 'integer', 'default': 45, 'example': 45, 'maximum': 45, 'minimum': 1, 'description': 'Maximum items to return per page. Range: 1-45, default 45.'}, 'offset': {'type': 'integer', 'default': 0, 'example': 0, 'minimum': 0, 'description': 'Number of items to skip for pagination. Default 0.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['total', 'limit', 'offset', 'devatas'], 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'offset': {'type': 'number'}, 'devatas': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'class', 'squares', 'cells', 'padaCount', 'role', 'verses', 'source'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'note': {'type': 'string'}, 'role': {'type': 'string'}, 'side': {'type': 'string'}, 'cells': {'type': 'array', 'items': {'type': 'object', 'required': ['rowFromNorth', 'columnFromWest'], 'properties': {'rowFromNorth': {'type': 'number'}, 'columnFromWest': {'type': 'number'}}}}, 'class': {'enum': ['perimeter', 'innerRing', 'innerCorner', 'center'], 'type': 'string'}, 'group': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'verses': {'type': 'array', 'items': {'type': 'string'}}, 'squares': {'type': 'array', 'items': {'type': 'number'}}, 'quadrant': {'type': 'string'}, 'padaCount': {'type': 'number'}, 'entrancePada': {'type': 'number'}}}}}}
Input schema
{'type': 'object', 'examples': [{'id': 'jayanta'}], 'required': ['id'], 'properties': {'id': {'enum': ['agni', 'parjanya', 'jayanta', 'indra-outer', 'surya', 'satya', 'bhrisa', 'antariksha', 'vayu', 'pusha', 'vitatha', 'brihatkshata', 'yama', 'gandharva', 'bhringaraja', 'mriga', 'pitri', 'dauvarika', 'sugriva', 'kusumadanta', 'varuna', 'asura', 'sosha', 'papayakshma', 'roga', 'ahi', 'mukhya', 'bhallata', 'soma', 'bhujaga', 'aditi', 'diti', 'aryaman', 'savita', 'vivasvan', 'indra-inner', 'mitra', 'rajayakshma', 'prthvidhara', 'apavatsa', 'apa', 'savitra', 'jaya', 'rudra', 'brahma'], 'type': 'string', 'example': 'jayanta', 'description': 'Devata id, lower case transliteration. The two Indras are indra-outer for the east perimeter square and indra-inner for the inner ring one. Case and punctuation are folded.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['id', 'name', 'class', 'squares', 'cells', 'padaCount', 'role', 'verses', 'source'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'note': {'type': 'string'}, 'role': {'type': 'string'}, 'side': {'type': 'string'}, 'cells': {'type': 'array', 'items': {'type': 'object', 'required': ['rowFromNorth', 'columnFromWest'], 'properties': {'rowFromNorth': {'type': 'number'}, 'columnFromWest': {'type': 'number'}}}}, 'class': {'enum': ['perimeter', 'innerRing', 'innerCorner', 'center'], 'type': 'string'}, 'group': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'verses': {'type': 'array', 'items': {'type': 'string'}}, 'squares': {'type': 'array', 'items': {'type': 'number'}}, 'quadrant': {'type': 'string'}, 'padaCount': {'type': 'number'}, 'entrancePada': {'type': 'number'}}}
Input schema
{'type': 'object', 'examples': [{}], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'limit': {'type': 'integer', 'default': 8, 'example': 8, 'maximum': 8, 'minimum': 1, 'description': 'Maximum items to return per page. Range: 1-8, default 8.'}, 'offset': {'type': 'integer', 'default': 0, 'example': 0, 'minimum': 0, 'description': 'Number of items to skip for pagination. Default 0.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['total', 'limit', 'offset', 'directions'], 'properties': {'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'offset': {'type': 'number'}, 'directions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'dikpala', 'kind', 'squares', 'devatas', 'water', 'sources'], 'properties': {'id': {'type': 'string'}, 'kind': {'type': 'string'}, 'water': {'type': 'object', 'required': ['effect', 'auspiciousness'], 'properties': {'effect': {'type': 'string'}, 'auspiciousness': {'type': 'string'}}}, 'places': {'type': 'string'}, 'devatas': {'type': 'array', 'items': {'type': 'object', 'required': ['square', 'id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'square': {'type': 'number'}}}}, 'dikpala': {'type': 'string'}, 'element': {'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}}, 'squares': {'type': 'array', 'items': {'type': 'number'}}}}}}}
Input schema
{'type': 'object', 'examples': [{'id': 'Northeast'}], 'required': ['id'], 'properties': {'id': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'Northeast', 'description': 'Direction id, one of North, Northeast, East, Southeast, South, Southwest, West, Northwest. Case and punctuation are folded.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['id', 'dikpala', 'kind', 'squares', 'devatas', 'water', 'sources'], 'properties': {'id': {'type': 'string'}, 'kind': {'type': 'string'}, 'water': {'type': 'object', 'required': ['effect', 'auspiciousness'], 'properties': {'effect': {'type': 'string'}, 'auspiciousness': {'type': 'string'}}}, 'places': {'type': 'string'}, 'devatas': {'type': 'array', 'items': {'type': 'object', 'required': ['square', 'id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'square': {'type': 'number'}}}}, 'dikpala': {'type': 'string'}, 'element': {'type': 'string'}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}}, 'squares': {'type': 'array', 'items': {'type': 'number'}}}}
Input schema
{'type': 'object', 'examples': [{'length': 11, 'breadth': 11}], 'required': ['length', 'breadth'], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'unit': {'enum': ['hasta', 'feet', 'metres'], 'type': 'string', 'default': 'hasta', 'example': 'hasta', 'description': 'Unit the Ayadi dimensions are given in. Every remainder is unit sensitive, so this is an input and never assumed: the same building measured in cubits and in feet gives different remainders. hasta is the classical cubit and needs no conversion; feet and metres are converted using hastaInches and rounded to whole cubits, and the rounded figures are returned. Defaults to hasta.'}, 'length': {'type': 'number', 'example': 11, 'description': 'Length of the building or room, in the unit given. Under the Manasara family this is the measure the aya and rksha formulas multiply; under the perimeter family it only feeds the perimeter.', 'exclusiveMinimum': 0}, 'breadth': {'type': 'number', 'example': 11, 'description': 'Breadth of the building or room, in the unit given. Under the Manasara family this is the measure the vyaya and yoni formulas multiply.', 'exclusiveMinimum': 0}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'ayadiText': {'enum': ['manasara', 'perimeter-texts', 'utpala'], 'type': 'string', 'default': 'manasara', 'example': 'manasara', 'description': 'Which family of Ayadi formulas to apply. manasara takes length, breadth and circumference separately and is double sourced. perimeter-texts runs every formula on the perimeter alone and is the family the usual worked example is printed for. utpala supplies a yoni formula from the length times the breadth and nothing else, so the other five vargas fall back to the perimeter family and the response says so. Defaults to manasara.'}, 'perimeter': {'type': 'number', 'example': 11, 'description': 'Perimeter of the plan, if it is not simply twice the length plus twice the breadth. The perimeter family runs every formula on this one measure, so it is the number that decides all six remainders there.', 'exclusiveMinimum': 0}, 'hastaInches': {'type': 'number', 'default': 18, 'example': 18, 'description': 'Length of one hasta, the classical cubit, in inches. Defaults to 18, which is 24 angula at three quarters of an inch each and is the value three independent sources agree on. Raise it if your lineage measures the cubit differently; the value used is echoed on the response so a stored reading can be reproduced years later. Only used when unit is feet or metres.', 'exclusiveMinimum': 0}, 'vyayaFormula': {'enum': ['p9-10', 'p3-14'], 'type': 'string', 'default': 'p9-10', 'example': 'p9-10', 'description': 'Which vyaya formula the perimeter family uses. The printed table gives two joined by the word or and states no rule for choosing. p9-10 multiplies by nine and divides by ten, which is the only divisor consistent with the ten member vyaya group, so its remainder can be placed in that group and it is the default. p3-14 multiplies by three and divides by fourteen, and its remainder maps to no group any source enumerates. Ignored when ayadiText is manasara, which has one vyaya formula.'}, 'circumference': {'type': 'number', 'example': 11, 'description': 'Circumference or height, if the Manasara vara and tithi formulas should read something other than the perimeter. Defaults to the perimeter, which is what a rectangular plan supplies.', 'exclusiveMinimum': 0}}}
Output schema
{'type': 'object', 'required': ['measures', 'vargas', 'vayas', 'verdict', 'conventions'], 'properties': {'vayas': {'type': 'number'}, 'vargas': {'type': 'array', 'items': {'type': 'object', 'required': ['varga', 'operand', 'operandValue', 'multiplier', 'divisor', 'product', 'remainder', 'groupSize', 'source'], 'properties': {'name': {'type': 'string'}, 'gloss': {'type': 'string'}, 'varga': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'divisor': {'type': 'number'}, 'operand': {'type': 'string'}, 'product': {'type': 'number'}, 'firstName': {'type': 'string'}, 'groupSize': {'type': 'number'}, 'remainder': {'type': 'number'}, 'auspicious': {'type': 'boolean'}, 'multiplier': {'type': 'number'}, 'operandValue': {'type': 'number'}}}}, 'verdict': {'type': 'object', 'required': ['yoniAuspicious', 'ayaVyaya', 'reading', 'source'], 'properties': {'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'reading': {'type': 'string'}, 'ayaVyaya': {'type': 'string'}, 'yoniAuspicious': {'type': 'boolean'}}}, 'measures': {'type': 'object', 'required': ['length', 'breadth', 'perimeter', 'circumference', 'area'], 'properties': {'area': {'type': 'number'}, 'length': {'type': 'number'}, 'breadth': {'type': 'number'}, 'perimeter': {'type': 'number'}, 'circumference': {'type': 'number'}}}, 'conventions': {'type': 'object', 'required': ['ayadiText', 'vyayaFormula', 'unit', 'hastaInches'], 'properties': {'unit': {'type': 'string'}, 'ayadiText': {'type': 'string'}, 'hastaInches': {'type': 'number'}, 'vyayaFormula': {'type': 'string'}}}}}
Input schema
{'type': 'object', 'examples': [{'plot': {'unit': 'feet', 'depth': 40, 'width': 30}}], 'required': ['plot'], 'properties': {'door': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number', 'example': 15, 'description': 'Distance east of the plot origin, in the same unit as the plot. The x axis runs east.'}, 'y': {'type': 'number', 'example': 0, 'description': 'Distance north of the plot origin, in the same unit as the plot. The y axis runs north.'}}, 'description': 'Where the main door sits, in plot coordinates. The point is snapped to the nearest boundary of the plot, so a coordinate read off a drawing that lands slightly inside or outside still resolves. Send this or doorPosition, never both.'}, 'grid': {'enum': ['81-pada', '64-pada'], 'type': 'string', 'default': '81-pada', 'example': '81-pada', 'description': 'Which division of the ground to read: 81-pada is the Paramasayika of Brihat Samhita 53.42, the grid the chapter numbers and names every devata on, and 64-pada is the Manduka of 53.55, for which the chapter gives structure only and no devata names. Defaults to 81-pada.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'plot': {'type': 'object', 'example': {'unit': 'feet', 'depth': 40, 'width': 30}, 'properties': {'unit': {'enum': ['feet', 'metres'], 'type': 'string', 'default': 'feet', 'example': 'feet', 'description': 'Unit the plot dimensions are given in. Every distance the response returns is in this same unit. The mandala projection is scale free, so this affects the areas and the marma size and nothing else.'}, 'depth': {'type': 'number', 'example': 40, 'description': 'North-south extent of a rectangular plot, in the unit given. Send this with width for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'example': 30, 'description': 'East-west extent of a rectangular plot, in the unit given. Send this with depth for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'polygon': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number', 'example': 15, 'description': 'Distance east of the plot origin, in the same unit as the plot. The x axis runs east.'}, 'y': {'type': 'number', 'example': 0, 'description': 'Distance north of the plot origin, in the same unit as the plot. The y axis runs north.'}}}, 'example': [{'x': 0, 'y': 0}, {'x': 30, 'y': 0}, {'x': 30, 'y': 40}, {'x': 0, 'y': 40}], 'maxItems': 16, 'minItems': 3, 'description': 'The plot outline as 3 to 16 vertices in plot coordinates, x east and y north, in either winding order. Use this instead of width and depth for a plot with a cut corner, an extension or an irregular boundary.'}}, 'description': 'The ground the mandala is projected over. Send width and depth for a compass-aligned rectangle, or polygon for anything else. The x axis runs east and the y axis north, and the mandala is aligned to the compass rather than to the building.'}, 'facing': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'North', 'description': 'Direction the front of the house looks out toward, one of the eight compass sectors. Case and punctuation are folded, so north-east, northeast and NorthEast all resolve. Send this or facingDegrees, never both.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'doorPosition': {'type': 'number', 'example': 0.4, 'maximum': 1, 'minimum': 0, 'description': 'Where the main door sits along the facing side, as a fraction from 0 to 1 measured from the corner the chapter starts that side at: the north-east for an east facing, the south-east for a south facing, the south-west for a west facing and the north-west for a north facing. The side carries 8 padas, so to aim at pada n of 8 send its midpoint, (n - 0.5) / 8: 0.0625 for the first pada, 0.4375 for the fourth, 0.9375 for the eighth. The response names the pada the fraction resolved to in ordinalOnSide. Requires a cardinal facing, since an intercardinal facing names no single side. Send this or door, never both.'}, 'facingDegrees': {'type': 'number', 'example': 15, 'maximum': 360, 'minimum': 0, 'description': 'Direction the front of the house looks out toward, as a compass bearing in degrees clockwise from true north, measured looking OUT from the building. The same convention the feng shui facing endpoints use, so a bearing works unchanged across the two domains. Send this or facing, never both.'}}}
Output schema
{'type': 'object', 'required': ['pada', 'side', 'startCorner', 'ordinalOnSide', 'square', 'cell', 'effect', 'auspiciousness', 'reading', 'recommendedPadas', 'source', 'conventions'], 'properties': {'cell': {'type': 'object', 'required': ['rowFromNorth', 'columnFromWest'], 'properties': {'rowFromNorth': {'type': 'number'}, 'columnFromWest': {'type': 'number'}}}, 'pada': {'type': 'number'}, 'side': {'type': 'string'}, 'devata': {'type': 'object', 'required': ['id', 'name', 'padaCount'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'padaCount': {'type': 'number'}}}, 'effect': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'square': {'type': 'number'}, 'reading': {'type': 'string'}, 'conventions': {'type': 'object', 'required': ['grid', 'unit'], 'properties': {'grid': {'type': 'string'}, 'unit': {'enum': ['feet', 'metres'], 'type': 'string'}}}, 'startCorner': {'type': 'string'}, 'ordinalOnSide': {'type': 'number'}, 'auspiciousness': {'type': 'string'}, 'recommendedPadas': {'type': 'array', 'items': {'type': 'number'}}}}
Input schema
{'type': 'object', 'examples': [{'plot': {'unit': 'feet', 'depth': 40, 'width': 30}}], 'required': ['plot'], 'properties': {'grid': {'enum': ['81-pada', '64-pada'], 'type': 'string', 'default': '81-pada', 'example': '81-pada', 'description': 'Which division of the ground to read: 81-pada is the Paramasayika of Brihat Samhita 53.42, the grid the chapter numbers and names every devata on, and 64-pada is the Manduka of 53.55, for which the chapter gives structure only and no devata names. Defaults to 81-pada.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'plot': {'type': 'object', 'example': {'unit': 'feet', 'depth': 40, 'width': 30}, 'properties': {'unit': {'enum': ['feet', 'metres'], 'type': 'string', 'default': 'feet', 'example': 'feet', 'description': 'Unit the plot dimensions are given in. Every distance the response returns is in this same unit. The mandala projection is scale free, so this affects the areas and the marma size and nothing else.'}, 'depth': {'type': 'number', 'example': 40, 'description': 'North-south extent of a rectangular plot, in the unit given. Send this with width for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'example': 30, 'description': 'East-west extent of a rectangular plot, in the unit given. Send this with depth for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'polygon': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number', 'example': 15, 'description': 'Distance east of the plot origin, in the same unit as the plot. The x axis runs east.'}, 'y': {'type': 'number', 'example': 0, 'description': 'Distance north of the plot origin, in the same unit as the plot. The y axis runs north.'}}}, 'example': [{'x': 0, 'y': 0}, {'x': 30, 'y': 0}, {'x': 30, 'y': 40}, {'x': 0, 'y': 40}], 'maxItems': 16, 'minItems': 3, 'description': 'The plot outline as 3 to 16 vertices in plot coordinates, x east and y north, in either winding order. Use this instead of width and depth for a plot with a cut corner, an extension or an irregular boundary.'}}, 'description': 'The ground the mandala is projected over. Send width and depth for a compass-aligned rectangle, or polygon for anything else. The x axis runs east and the y axis north, and the mandala is aligned to the compass rather than to the building.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}}}
Output schema
{'type': 'object', 'required': ['grid', 'cells', 'brahmasthan', 'sources', 'conventions'], 'properties': {'grid': {'type': 'string'}, 'cells': {'type': 'array', 'items': {'type': 'object', 'required': ['square', 'rowFromNorth', 'columnFromWest', 'center', 'withinPlot'], 'properties': {'role': {'enum': ['brahma', 'halved-inner-corner', 'halved-outer-corner', 'around-brahma', 'dvipada', 'outer'], 'type': 'string'}, 'class': {'enum': ['perimeter', 'innerRing', 'innerCorner', 'center'], 'type': 'string'}, 'group': {'type': 'string'}, 'center': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}}, 'devata': {'type': 'string'}, 'square': {'type': 'number'}, 'devataName': {'type': 'string'}, 'withinPlot': {'type': 'boolean'}, 'rowFromNorth': {'type': 'number'}, 'columnFromWest': {'type': 'number'}}}}, 'marma': {'type': 'object', 'required': ['points', 'areaEach'], 'properties': {'points': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}}}, 'areaEach': {'type': 'number'}}}, 'vamsa': {'type': 'array', 'items': {'type': 'object', 'required': ['fromSquare', 'fromDevata', 'toSquare', 'toDevata', 'axis', 'isMainDiagonal', 'from', 'to'], 'properties': {'to': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}}, 'axis': {'type': 'string'}, 'from': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}}, 'toDevata': {'type': 'string'}, 'toSquare': {'type': 'number'}, 'fromDevata': {'type': 'string'}, 'fromSquare': {'type': 'number'}, 'isMainDiagonal': {'type': 'boolean'}}}}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}}, 'atimarma': {'type': 'array', 'items': {'type': 'number'}}, 'brahmasthan': {'type': 'object', 'required': ['squares', 'polygon', 'area'], 'properties': {'area': {'type': 'number'}, 'polygon': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number'}, 'y': {'type': 'number'}}}}, 'squares': {'type': 'array', 'items': {'type': 'number'}}}}, 'conventions': {'type': 'object', 'required': ['grid', 'unit'], 'properties': {'grid': {'type': 'string'}, 'unit': {'enum': ['feet', 'metres'], 'type': 'string'}}}}}
Input schema
{'type': 'object', 'examples': [{'plot': {'unit': 'feet', 'depth': 40, 'width': 30}}], 'required': ['plot'], 'properties': {'cuts': {'type': 'array', 'items': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string'}, 'example': ['Southwest'], 'maxItems': 8, 'description': 'Quarters where a corner is missing from the rectangle. Every cut verdict is convention, for the same reason as the extensions.'}, 'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'plot': {'type': 'object', 'example': {'unit': 'feet', 'depth': 40, 'width': 30}, 'properties': {'unit': {'enum': ['feet', 'metres'], 'type': 'string', 'default': 'feet', 'example': 'feet', 'description': 'Unit the plot dimensions are given in. Every distance the response returns is in this same unit. The mandala projection is scale free, so this affects the areas and the marma size and nothing else.'}, 'depth': {'type': 'number', 'example': 40, 'description': 'North-south extent of a rectangular plot, in the unit given. Send this with width for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'example': 30, 'description': 'East-west extent of a rectangular plot, in the unit given. Send this with depth for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'polygon': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number', 'example': 15, 'description': 'Distance east of the plot origin, in the same unit as the plot. The x axis runs east.'}, 'y': {'type': 'number', 'example': 0, 'description': 'Distance north of the plot origin, in the same unit as the plot. The y axis runs north.'}}}, 'example': [{'x': 0, 'y': 0}, {'x': 30, 'y': 0}, {'x': 30, 'y': 40}, {'x': 0, 'y': 40}], 'maxItems': 16, 'minItems': 3, 'description': 'The plot outline as 3 to 16 vertices in plot coordinates, x east and y north, in either winding order. Use this instead of width and depth for a plot with a cut corner, an extension or an irregular boundary.'}}, 'description': 'The ground the mandala is projected over. Send width and depth for a compass-aligned rectangle, or polygon for anything else. The x axis runs east and the y axis north, and the mandala is aligned to the compass rather than to the building.'}, 'road': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'North', 'description': 'Which side a road runs along. The verdict is convention: the chapter states no rule for the side a road is on, only that an obstruction facing the gate brings misery unless it lies beyond twice the height of the house.'}, 'water': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'Northeast', 'description': 'Which quarter holds standing water, a well, a tank or a sump. This one IS sourced: 53.119 gives a distinct effect for each of the eight directions and calls only the north and the north-east favourable.'}, 'facing': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'North', 'description': 'Direction the front of the house looks out toward, one of the eight compass sectors. Case and punctuation are folded, so north-east, northeast and NorthEast all resolve. Send this or facingDegrees, never both.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'extensions': {'type': 'array', 'items': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string'}, 'example': ['Northeast'], 'maxItems': 8, 'description': 'Quarters where the plot bulges out beyond a rectangle. Every extension verdict is convention: the chapter states no rule for a named corner and the nearest verses speak of a figure with a limb wanting.'}, 'slopeSchool': {'enum': ['brihat-samhita', 'modern'], 'type': 'string', 'default': 'brihat-samhita', 'example': 'brihat-samhita', 'description': 'Which reading of the ground level to lead with. brihat-samhita applies verses 115 to 117 as written, where a higher north-east is a loss, a higher east or north is permitted when level ground is unavoidable and still carries its stated cost, and a higher south or west carries its cost with no allowance. modern applies the widely taught rule that the north-east must be the lowest point, which agrees with verse 115 and contradicts the verse 116 allowance. Both readings are returned whichever you choose, so the disagreement is visible rather than hidden. Defaults to brihat-samhita.'}, 'facingDegrees': {'type': 'number', 'example': 15, 'maximum': 360, 'minimum': 0, 'description': 'Direction the front of the house looks out toward, as a compass bearing in degrees clockwise from true north, measured looking OUT from the building. The same convention the feng shui facing endpoints use, so a bearing works unchanged across the two domains. Send this or facing, never both.'}, 'slopeLowDirection': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'Northeast', 'description': 'Which quarter of the plot the ground falls toward, that is where the LOW point is. The chapter states its rules in terms of the side that stands HIGHER, so the opposite of this value is what the verses are read against, and both are returned. Omit it if the ground is level.'}}}
Output schema
{'type': 'object', 'required': ['orientation', 'dimensions', 'shape', 'ratio', 'extensions', 'cuts', 'sources', 'conventions'], 'properties': {'cuts': {'type': 'array', 'items': {'type': 'object', 'required': ['direction', 'auspiciousness', 'effect', 'source'], 'properties': {'effect': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'direction': {'type': 'string'}, 'auspiciousness': {'type': 'string'}}}}, 'road': {'type': 'object', 'required': ['direction', 'auspiciousness', 'effect', 'source'], 'properties': {'effect': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'direction': {'type': 'string'}, 'auspiciousness': {'type': 'string'}}}, 'ratio': {'type': 'object', 'required': ['verdict', 'effect', 'source'], 'properties': {'effect': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'verdict': {'type': 'string'}}}, 'shape': {'type': 'object', 'required': ['verdict', 'effect', 'source'], 'properties': {'effect': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'verdict': {'type': 'string'}}}, 'slope': {'type': 'object', 'required': ['lowDirection', 'highDirection', 'reading', 'schools', 'chosen'], 'properties': {'chosen': {'type': 'string'}, 'reading': {'type': 'string'}, 'schools': {'type': 'array', 'items': {'type': 'object', 'required': ['school', 'verdict', 'verse', 'effect'], 'properties': {'verse': {'type': 'string'}, 'effect': {'type': 'string'}, 'school': {'type': 'string'}, 'verdict': {'type': 'string'}}}}, 'lowDirection': {'type': 'string'}, 'highDirection': {'type': 'string'}}}, 'water': {'type': 'object', 'required': ['direction', 'effect', 'auspiciousness', 'source'], 'properties': {'effect': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'direction': {'type': 'string'}, 'auspiciousness': {'type': 'string'}}}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}}, 'dimensions': {'type': 'object', 'required': ['length', 'breadth', 'area', 'ratio'], 'properties': {'area': {'type': 'number'}, 'ratio': {'type': 'number'}, 'length': {'type': 'number'}, 'breadth': {'type': 'number'}}}, 'extensions': {'type': 'array', 'items': {'type': 'object', 'required': ['direction', 'auspiciousness', 'effect', 'source'], 'properties': {'effect': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'direction': {'type': 'string'}, 'auspiciousness': {'type': 'string'}}}}, 'conventions': {'type': 'object', 'required': ['slopeSchool'], 'properties': {'slopeSchool': {'type': 'string'}}}, 'orientation': {'type': 'object', 'required': ['facing', 'sitting'], 'properties': {'facing': {'type': 'string'}, 'sitting': {'type': 'string'}, 'mountain': {'type': 'string'}, 'facingDegrees': {'type': 'number'}}}}}
Input schema
{'type': 'object', 'required': ['plot', 'rooms'], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'plot': {'type': 'object', 'example': {'unit': 'feet', 'depth': 40, 'width': 30}, 'properties': {'unit': {'enum': ['feet', 'metres'], 'type': 'string', 'default': 'feet', 'example': 'feet', 'description': 'Unit the plot dimensions are given in. Every distance the response returns is in this same unit. The mandala projection is scale free, so this affects the areas and the marma size and nothing else.'}, 'depth': {'type': 'number', 'example': 40, 'description': 'North-south extent of a rectangular plot, in the unit given. Send this with width for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'width': {'type': 'number', 'example': 30, 'description': 'East-west extent of a rectangular plot, in the unit given. Send this with depth for a rectangle, or send polygon instead.', 'exclusiveMinimum': 0}, 'polygon': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number', 'example': 15, 'description': 'Distance east of the plot origin, in the same unit as the plot. The x axis runs east.'}, 'y': {'type': 'number', 'example': 0, 'description': 'Distance north of the plot origin, in the same unit as the plot. The y axis runs north.'}}}, 'example': [{'x': 0, 'y': 0}, {'x': 30, 'y': 0}, {'x': 30, 'y': 40}, {'x': 0, 'y': 40}], 'maxItems': 16, 'minItems': 3, 'description': 'The plot outline as 3 to 16 vertices in plot coordinates, x east and y north, in either winding order. Use this instead of width and depth for a plot with a cut corner, an extension or an irregular boundary.'}}, 'description': 'The ground the mandala is projected over. Send width and depth for a compass-aligned rectangle, or polygon for anything else. The x axis runs east and the y axis north, and the mandala is aligned to the compass rather than to the building.'}, 'rooms': {'type': 'array', 'items': {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['puja', 'kitchen', 'master-bedroom', 'bedroom', 'living', 'dining', 'study', 'toilet', 'store', 'staircase', 'water-storage', 'entrance'], 'type': 'string', 'example': 'kitchen', 'description': 'What the room is, one of puja, kitchen, master-bedroom, bedroom, living, dining, study, toilet, store, staircase, water-storage, entrance. Case and punctuation are folded, so Master Bedroom and master_bedroom both resolve. Four of the twelve carry a verse and the rest carry convention, and the response says which.'}, 'polygon': {'type': 'array', 'items': {'type': 'object', 'required': ['x', 'y'], 'properties': {'x': {'type': 'number', 'example': 15, 'description': 'Distance east of the plot origin, in the same unit as the plot. The x axis runs east.'}, 'y': {'type': 'number', 'example': 0, 'description': 'Distance north of the plot origin, in the same unit as the plot. The y axis runs north.'}}}, 'example': [{'x': 20, 'y': 2}, {'x': 28, 'y': 2}, {'x': 28, 'y': 12}, {'x': 20, 'y': 12}], 'maxItems': 16, 'minItems': 3, 'description': 'The room outline in plot coordinates, 3 to 16 vertices. The quarter is read from the area centroid against thirds of the plot, so an L-shaped room lands where its mass is rather than where its corners are. Send this or direction, never both.'}, 'direction': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'Southeast', 'description': 'Which quarter of the plot the room sits in, if you already know it. Send this or polygon, never both.'}}}, 'maxItems': 24, 'minItems': 1, 'description': 'The rooms to check, 1 to 24 of them. Each carries a type and either the quarter it sits in or its outline.'}, 'facing': {'enum': ['North', 'Northeast', 'East', 'Southeast', 'South', 'Southwest', 'West', 'Northwest'], 'type': 'string', 'example': 'North', 'description': 'Direction the front of the house looks out toward, one of the eight compass sectors. Case and punctuation are folded, so north-east, northeast and NorthEast all resolve. Send this or facingDegrees, never both.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'facingDegrees': {'type': 'number', 'example': 15, 'maximum': 360, 'minimum': 0, 'description': 'Direction the front of the house looks out toward, as a compass bearing in degrees clockwise from true north, measured looking OUT from the building. The same convention the feng shui facing endpoints use, so a bearing works unchanged across the two domains. Send this or facing, never both.'}}}
Output schema
{'type': 'object', 'required': ['rooms', 'score', 'scoring', 'facing', 'sources'], 'properties': {'rooms': {'type': 'array', 'items': {'type': 'object', 'required': ['type', 'zone', 'verdict', 'idealDirections', 'avoidDirections', 'reading', 'source'], 'properties': {'type': {'type': 'string'}, 'zone': {'type': 'string'}, 'remedy': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'reading': {'type': 'string'}, 'verdict': {'type': 'string'}, 'avoidDirections': {'type': 'array', 'items': {'type': 'string'}}, 'idealDirections': {'type': 'array', 'items': {'type': 'string'}}}}}, 'score': {'type': 'number'}, 'facing': {'type': 'string'}, 'scoring': {'type': 'object', 'required': ['sourcedWeight', 'conventionWeight', 'idealPoints', 'neutralPoints', 'avoidPoints'], 'properties': {'avoidPoints': {'type': 'number'}, 'idealPoints': {'type': 'number'}, 'neutralPoints': {'type': 'number'}, 'sourcedWeight': {'type': 'number'}, 'conventionWeight': {'type': 'number'}}}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}}}}
Input schema
{'type': 'object', 'examples': [{'endDate': '2027-03-20', 'latitude': 28.6139, 'timezone': 'America/New_York', 'longitude': 77.209, 'startDate': '2027-01-20'}], 'required': ['startDate', 'endDate', 'latitude', 'longitude', 'timezone'], 'properties': {'lang': {'enum': ['en', 'tr', 'de', 'es', 'hi', 'pt', 'fr', 'ru', 'zh-Hans', 'zh-Hant'], 'type': 'string', 'default': 'en', 'example': 'en', 'description': 'Response language (BCP 47). Supported: en, tr, de, es, hi, pt, fr, ru, zh-Hans, zh-Hant. Defaults to en. Coverage varies by domain, and a field with no translation in the requested language returns English.'}, 'compact': {'type': 'boolean', 'default': False, 'description': 'Set true for the same data in a compact shape: arrays of same-shaped objects arrive columnar as {"__cols":[names],"__rows":[[values]]}. Lossless, typically 40 to 52 percent fewer tokens.'}, 'endDate': {'type': 'string', 'format': 'date', 'example': '2027-03-20', 'description': 'Last day of the search window, in YYYY-MM-DD, inclusive. The window is capped at 93 days, which is a full season and the same cap the Vedic auspicious day search carries.'}, 'latitude': {'type': 'number', 'example': 28.6139, 'maximum': 90, 'minimum': -90, 'description': 'Latitude of the house, in decimal degrees, positive north. Sunrise decides where one day ends and the next begins, so a nakshatra running out during the morning changes which day it counts for.'}, 'timezone': {'anyOf': [{'type': 'number', 'maximum': 14, 'minimum': -14}, {'type': 'string'}], 'example': 'America/New_York', 'description': 'IANA name (e.g. "America/New_York", "Europe/London", "UTC"), decimal hours (e.g. -5 for EST, 1 for CET), or a fixed UTC offset (e.g. "-05:00", "+01:00"). Prefer the IANA name: it is resolved to the offset in force at the birth date and time, historical daylight-saving rules included, while a fixed offset or decimal is taken literally and will be wrong if it does not match the daylight-saving state at that moment. On a transition day a time in the repeated hour is read as its first occurrence and a time in the skipped hour is moved forward past the gap. Invalid timezones return 400 with a validation error.'}, 'longitude': {'type': 'number', 'example': 77.209, 'maximum': 180, 'minimum': -180, 'description': 'Longitude of the house, in decimal degrees, positive east.'}, 'startDate': {'type': 'string', 'format': 'date', 'example': '2027-01-20', 'description': 'First day of the search window, in YYYY-MM-DD. Every limb is read at sunrise of the local day, because the Hindu day begins at sunrise rather than at midnight.'}, 'muhurtaText': {'enum': ['muhurta-chintamani', 'kalaprakasika'], 'type': 'string', 'default': 'muhurta-chintamani', 'example': 'muhurta-chintamani', 'description': 'Which Muhurta text supplies the admissible nakshatras for entering a new house. muhurta-chintamani admits eight and kalaprakasika admits twelve; seven overlap and are the high confidence core, one is unique to the first and five to the second. The two texts are independent witnesses, which is what makes the overlap strong and the difference worth exposing. Defaults to muhurta-chintamani.'}}}
Output schema
{'type': 'object', 'required': ['days', 'total', 'window', 'rejectionsByRule', 'rules', 'leftToTheAstrologer', 'sources', 'conventions'], 'properties': {'days': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'nakshatra', 'tithi', 'vara', 'ayana', 'solarLongitude', 'karana', 'quality', 'admittedBy', 'reading'], 'properties': {'date': {'type': 'string'}, 'vara': {'type': 'object', 'required': ['number', 'name'], 'properties': {'name': {'type': 'string'}, 'number': {'type': 'number'}}}, 'ayana': {'type': 'string'}, 'tithi': {'type': 'object', 'required': ['number', 'name', 'paksha'], 'properties': {'name': {'type': 'string'}, 'number': {'type': 'number'}, 'paksha': {'type': 'string'}}}, 'karana': {'type': 'string'}, 'quality': {'type': 'string'}, 'reading': {'type': 'string'}, 'sunrise': {'type': 'string'}, 'nakshatra': {'type': 'object', 'required': ['number', 'id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'number': {'type': 'number'}}}, 'admittedBy': {'type': 'array', 'items': {'type': 'string'}}, 'solarLongitude': {'type': 'number'}}}}, 'rules': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'requirement', 'confidence', 'source'], 'properties': {'id': {'type': 'string'}, 'source': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}, 'confidence': {'type': 'string'}, 'requirement': {'type': 'string'}}}}, 'total': {'type': 'number'}, 'window': {'type': 'object', 'required': ['startDate', 'endDate', 'daysEvaluated'], 'properties': {'endDate': {'type': 'string'}, 'startDate': {'type': 'string'}, 'daysEvaluated': {'type': 'number'}}}, 'sources': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'year': {'type': 'number'}, 'basis': {'type': 'string'}, 'verse': {'type': 'string'}, 'chapter': {'type': 'number'}, 'translation': {'type': 'string'}, 'publicDomain': {'type': 'boolean'}}}}, 'conventions': {'type': 'object', 'required': ['muhurtaText', 'timezone'], 'properties': {'timezone': {'type': 'number'}, 'muhurtaText': {'type': 'string'}}}, 'rejectionsByRule': {'type': 'object', 'additionalProperties': {'type': 'number'}}, 'leftToTheAstrologer': {'type': 'array', 'items': {'type': 'string'}}}}
Recent tool changes
Similar MCP servers
immobilier
Creates, validates, analyzes, and exports French building and property designs as DXF, IFC, BCF, PDFs, visualizations, quantities…
bimhouse
Creates and edits house BIM models, checks Japanese building-code constraints, estimates materials and construction costs, matche…
Pixly
Generates and edits real-estate listing visuals through staging, decluttering, enhancement, restyling, exterior transformations, …
AI HomeDesign MCP
Virtually stages, redesigns, enhances, declutters, and modifies interior and exterior real-estate photographs.
Duskly
Classifies real estate listing photo edits for MLS compliance, generates disclosure wording, inspects provenance signals, and pro…
ParcelLaunch — 3D property listings from an address
Creates and retrieves interactive 3D flyover listings for US properties using addresses or parcel identifiers.
3D New Era AI
Supports home design with floor plans, furniture, joinery, lighting, and rendered images.
Immopix
Enhances photos used in real estate listings.