Skip to main content
Glama

Vastu Shastra MCP Server by RoxyAPI

Generate Vastu Purusha Mandala - 81 pada and 64 pada grid API

post_vastu_mandala
Read-only

Vastu Purusha Mandala projected over a real plot: send the ground and the API returns every square with the devata holding it, the brahmasthan as a polygon you can draw, the marma points, the six vamsa diagonals named by their devatas and the nine atimarma crossings. Choose the 81 pada Paramasayika or the 64 pada Manduka, and the response says which verses each part rests on. Built for floor plan overlays, practitioner reports and any tool that has to place rooms against the classical grid.

Input Schema

NameRequiredDescriptionDefault
gridNoWhich 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.81-pada
langNoResponse 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.en
plotYesThe 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.
compactNoSet 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

NameRequiredDescriptionDefault
gridYes
cellsYes
marmaNo
vamsaNo
sourcesYes
atimarmaNo
brahmasthanYes
conventionsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / plot / x-required-any-of
      Added value: +[
      +  [
      +    "width",
      +    "depth"
      +  ],
      +  [
      +    "polygon"
      +  ]
      +]
  2. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "plot": {
      +      "depth": 40,
      +      "unit": "feet",
      +      "width": 30
      +    }
      +  }
      +]
    • addedInput schema / properties / plot / example
      Added value: +{
      +  "depth": 40,
      +  "unit": "feet",
      +  "width": 30
      +}
  3. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "atimarma": {
      +      "items": {
      +        "type": "number"
      +      },
      +      "type": "array"
      +    },
      +    "brahmasthan": {
      +      "properties": {
      +        "area": {
      +          "type": "number"
      +        },
      +        "polygon": {
      +          "items": {
      +            "properties": {
      +              "x": {
      +                "type": "number"
      +              },
      +              "y": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "x",
      +              "y"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "squares": {
      +          "items": {
      +            "type": "number"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "squares",
      +        "polygon",
      +        "area"
      +      ],
      +      "type": "object"
      +    },
      +    "cells": {
      +      "items": {
      +        "properties": {
      +          "center": {
      +            "properties": {
      +              "x": {
      +                "type": "number"
      +              },
      +              "y": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "x",
      +              "y"
      +            ],
      +            "type": "object"
      +          },
      +          "class": {
      +            "enum": [
      +              "perimeter",
      +              "innerRing",
      +              "innerCorner",
      +              "center"
      +            ],
      +            "type": "string"
      +          },
      +          "columnFromWest": {
      +            "type": "number"
      +          },
      +          "devata": {
      +            "type": "string"
      +          },
      +          "devataName": {
      +            "type": "string"
      +          },
      +          "group": {
      +            "type": "string"
      +          },
      +          "role": {
      +            "enum": [
      +              "brahma",
      +              "halved-inner-corner",
      +              "halved-outer-corner",
      +              "around-brahma",
      +              "dvipada",
      +              "outer"
      +            ],
      +            "type": "string"
      +          },
      +          "rowFromNorth": {
      +            "type": "number"
      +          },
      +          "square": {
      +            "type": "number"
      +          },
      +          "withinPlot": {
      +            "type": "boolean"
      +          }
      +        },
      +        "required": [
      +          "square",
      +          "rowFromNorth",
      +          "columnFromWest",
      +          "center",
      +          "withinPlot"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "conventions": {
      +      "properties": {
      +        "grid": {
      +          "type": "string"
      +        },
      +        "unit": {
      +          "enum": [
      +            "feet",
      +            "metres"
      +          ],
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "grid",
      +        "unit"
      +      ],
      +      "type": "object"
      +    },
      +    "grid": {
      +      "type": "string"
      +    },
      +    "marma": {
      +      "properties": {
      +        "areaEach": {
      +          "type": "number"
      +        },
      +        "points": {
      +          "items": {
      +            "properties": {
      +              "x": {
      +                "type": "number"
      +              },
      +              "y": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "x",
      +              "y"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "required": [
      +        "points",
      +        "areaEach"
      +      ],
      +      "type": "object"
      +    },
      +    "sources": {
      +      "items": {
      +        "properties": {
      +          "basis": {
      +            "type": "string"
      +          },
      +          "chapter": {
      +            "type": "number"
      +          },
      +          "publicDomain": {
      +            "type": "boolean"
      +          },
      +          "text": {
      +            "type": "string"
      +          },
      +          "translation": {
      +            "type": "string"
      +          },
      +          "verse": {
      +            "type": "string"
      +          },
      +          "year": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "text"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "vamsa": {
      +      "items": {
      +        "properties": {
      +          "axis": {
      +            "type": "string"
      +          },
      +          "from": {
      +            "properties": {
      +              "x": {
      +                "type": "number"
      +              },
      +              "y": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "x",
      +              "y"
      +            ],
      +            "type": "object"
      +          },
      +          "fromDevata": {
      +            "type": "string"
      +          },
      +          "fromSquare": {
      +            "type": "number"
      +          },
      +          "isMainDiagonal": {
      +            "type": "boolean"
      +          },
      +          "to": {
      +            "properties": {
      +              "x": {
      +                "type": "number"
      +              },
      +              "y": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "x",
      +              "y"
      +            ],
      +            "type": "object"
      +          },
      +          "toDevata": {
      +            "type": "string"
      +          },
      +          "toSquare": {
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "fromSquare",
      +          "fromDevata",
      +          "toSquare",
      +          "toDevata",
      +          "axis",
      +          "isMainDiagonal",
      +          "from",
      +          "to"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "grid",
      +    "cells",
      +    "brahmasthan",
      +    "sources",
      +    "conventions"
      +  ],
      +  "type": "object"
      +}
  4. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds genuine substance about what gets computed and returned (devata assignments, brahmasthan polygon, verse citations). It says nothing about scale limits, irregular-plot handling, or latency, but those are secondary for a read-only generator.

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 core action, then the payload, then the grid choice, then use cases — a sensible ordering. The second and third clauses are dense noun lists that border on run-on, but no sentence is filler.

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

Completeness4/5

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

With an output schema present and annotations covering safety, the description's job is domain framing, which it does well — the concepts returned are named so an agent knows what the response means. The only gap is the lack of relative positioning among the several post_vastu_* siblings.

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

Parameters3/5

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

Schema description coverage is 100% and the parameter docs are unusually rich (grid enum explained with Brihat Samhita verse numbers, plot geometry with axis conventions). The description restates the grid choice with framing but adds little the schema does not already carry; 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 concrete verb and resource ("projected over a real plot: send the ground and the API returns...") and enumerates the return payload — devata per square, brahmasthan polygon, marma points, vamsa diagonals, atimarma crossings. That specificity separates it cleanly from siblings like post_vastu_plot (plot analysis) and post_vastu_rooms (room placement).

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?

Gives clear application contexts ("floor plan overlays, practitioner reports, any tool that has to place rooms against the classical grid") and notes the 81-pada vs 64-pada choice. It never explicitly says when to prefer it over post_vastu_plot or post_vastu_ayadi, so routing is implied rather than stated.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources