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

TableJSON 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

TableJSON Schema
NameRequiredDescriptionDefault
gridYes
cellsYes
marmaNo
vamsaNo
sourcesYes
atimarmaNo
brahmasthanYes
conventionsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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
      +}
  2. 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"
      +}
  3. First observed

TDQS

A3.9/5.0
Behavior4/5

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

With readOnlyHint=true and destructiveHint=false already covering the safety profile, the description adds behavioral substance: it projects over a real plot, returns per-square devata data, a drawable brahmasthan, marma points, and verse references. There is no contradiction with 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?

Three sentences, each carrying distinct information: what the API returns, the grid-choice and verse-reference behavior, and intended use cases. It is dense but not bloated; 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?

For a complex tool with nested plot input and an output schema, the description covers the essential mental model and practical purpose without having to restate return shapes. The remaining gaps, such as rectangle-versus-polygon selection details, are fully handled by the 100%-covered schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline applies. The description adds conceptual framing ('send the ground', 'Choose the 81 pada Paramasayika or the 64 pada Manduka') but no parameter detail that the schema does not already provide.

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

Purpose4/5

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

The description states a precise operation: 'Vastu Purusha Mandala projected over a real plot' and enumerates the returned artifacts (squares with devatas, brahmasthan polygon, marma points, vamsa diagonals, atimarma crossings). It is clear enough to distinguish this mandala-geometry tool from the sibling devata/direction endpoints, though it never names a sibling explicitly.

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?

It gives concrete intended contexts: 'Built for floor plan overlays, practitioner reports and any tool that has to place rooms against the classical grid.' It does not, though, state when to prefer this over siblings like post_vastu_plot or get_vastu_devatas, and there are no explicit when-not-to-use caveats.

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