Skip to main content
Glama

draw_plot

Read-onlyIdempotent

Use this when a plot's shape is given as measurements rather than as one area: side lengths with the angles at the corners, or with diagonals, or both, as on a hand-drawn sketch, a measurement sheet, a survey or a photo of any of them; or the corners themselves. Read the figures as written (feet and inches such as 40'6", the area as on the 7/12 in guntha, acre or H.R.); a side left unmeasured may be null where the rest fix it. Works out the exact corners, fitting every figure by least squares when more are given than needed, reports how far each sits from the plot (closing side, angle sum, spare diagonals, stated area), refuses a misfit no tape makes, and returns the polygon and sides to pass to feasibility, the statement of area by the triangulation method (UDCPR 2.2.3(iii): lettered triangles, each by Heron from its sides as printed, the polygon rebuilt from the same lengths), a link that opens the plot drawn in Citiwise, and, when town and use are given, the feasibility with its report. Do not use for a plot described only by its area and road width; call feasibility directly.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "sides": "<sides>"
    },
    "name": "draw_plot"
  }
}

Input Schema

NameRequiredDescriptionDefault
useNothe use of the building: flats for flats; mix for flats with shops below; bung for a bungalow; row for row houses; shop for shops; office for offices; it for an IT building; hotel for a hotel; fuel for a fuel station; school for a school; college for a college; hospital for a hospital; public for a public building; assembly for a cinema, hall or mall; mangal for a mangal karyalaya; parking for a parking building; warehouse for a warehouse; factory for a factory
townNowith use: also run the feasibility
unitNounit of every bare number among the lengths and road widths; default m
zoneNowith town and use: nc non-congested, c congested (gaothan)
sidesYesevery side in order round the plot, either direction; at least one is a road
anglesNointerior angle in degrees at each corner; corner i is where side i begins; null where not measured
polygonNothe corners [x, y] instead of lengths and angles, one per side
area_unitNounit of stated_area when it is a bare number; default m2 (sq ft with unit ft); hr is hectare-are as on a 7/12
diagonalsNocorner-to-corner distances; a plot of n sides needs n - 3, each running across the inside of the plot; lengths alone can fit more than one plot, and the answer then names the corner that needs its angle or one more diagonal
stated_areaNothe area on the 7/12, property card or measurement sheet, to check against, as written: 5 guntha, 0.12.50 H.R., 5400 sq ft
right_anglesNotrue when every corner of a four-sided plot is square

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / use / description
      Added value: +"the use of the building: flats for flats; mix for flats with shops below; bung for a bungalow; row for row houses; shop for shops; office for offices; it for an IT building; hotel for a hotel; fuel for a fuel station; school for a school; college for a college; hospital for a hospital; public for a public building; assembly for a cinema, hall or mall; mangal for a mangal karyalaya; parking for a parking building; warehouse for a warehouse; factory for a factory"
    • addedInput schema / properties / zone / description
      Added value: +"with town and use: nc non-congested, c congested (gaothan)"
  2. Changed21 schema fields changed
    • addedInput schema / properties / angles / items / maximum
      Added value: +360
    • addedInput schema / properties / angles / items / minimum
      Added value: +0
    • addedInput schema / properties / angles / maxItems
      Added value: +64
    • changedInput schema / properties / diagonals / description
      Previous value: -"corner-to-corner distances; a plot of n sides needs n - 3, e.g. from corner 1 to each corner it does not touch"New value: +"corner-to-corner distances; a plot of n sides needs n - 3, each running across the inside of the plot; lengths alone can fit more than one plot, and the answer then names the corner that needs its angle or one more diagonal"
    • addedInput schema / properties / diagonals / items / properties / from / maximum
      Added value: +64
    • addedInput schema / properties / diagonals / items / properties / from / minimum
      Added value: +1
    • addedInput schema / properties / diagonals / items / properties / length / maximum
      Added value: +100000
    • addedInput schema / properties / diagonals / items / properties / length / minimum
      Added value: +0
    • addedInput schema / properties / diagonals / items / properties / to / maximum
      Added value: +64
    • addedInput schema / properties / diagonals / items / properties / to / minimum
      Added value: +1
    • addedInput schema / properties / diagonals / maxItems
      Added value: +256
    • addedInput schema / properties / polygon / items / items / maximum
      Added value: +100000
    • addedInput schema / properties / polygon / items / items / minimum
      Added value: +-100000
    • addedInput schema / properties / polygon / items / maxItems
      Added value: +2
    • addedInput schema / properties / polygon / maxItems
      Added value: +64
    • addedInput schema / properties / sides / items / properties / length / maximum
      Added value: +100000
    • addedInput schema / properties / sides / items / properties / length / minimum
      Added value: +0
    • addedInput schema / properties / sides / items / properties / width / maximum
      Added value: +100000
    • addedInput schema / properties / sides / items / properties / width / minimum
      Added value: +0
    • addedInput schema / properties / stated_area / maximum
      Added value: +100000000
    • addedInput schema / properties / stated_area / minimum
      Added value: +0
  3. Changed2 schema fields changed
    • changedInput schema / properties / sides / items / properties / beyond / description
      Previous value: -"what lies beyond the side; plot for a neighbour"New value: +"what lies beyond the side; plot for a neighbour; shared for the common wall of a semi-detached house or row houses (Table 6-D note 4, Sr. 6)"
    • changedInput schema / properties / sides / items / properties / beyond / enum
      Previous value: -[
      -  "road",
      -  "plot",
      -  "open",
      -  "nallah",
      -  "river",
      -  "rail"
      -]New value: +[
      +  "road",
      +  "plot",
      +  "open",
      +  "nallah",
      +  "river",
      +  "rail",
      +  "shared"
      +]
  4. Changed12 schema fields changed
    • changedInput schema / properties / angles / description
      Previous value: -"interior angle in degrees at each corner; corner i is where side i begins"New value: +"interior angle in degrees at each corner; corner i is where side i begins; null where not measured"
    • changedInput schema / properties / angles / items / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string",
      +  "null"
      +]
    • addedInput schema / properties / area_unit
      Added value: +{
      +  "description": "unit of stated_area when it is a bare number; default m2 (sq ft with unit ft); hr is hectare-are as on a 7/12",
      +  "enum": [
      +    "m2",
      +    "sqft",
      +    "guntha",
      +    "acre",
      +    "hectare",
      +    "hr"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / diagonals / items / properties / length / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / sides / items / properties / length / description
      Previous value: -"length of the side, in the unit given"New value: +"length of the side as written: a number in the unit given, or text such as 40'6\" or 12.20 m; null for a side not measured, where angles or diagonals fix it"
    • changedInput schema / properties / sides / items / properties / length / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string",
      +  "null"
      +]
    • changedInput schema / properties / sides / items / properties / width / description
      Previous value: -"for a road: its width, in the unit given"New value: +"for a road: its width, in the unit given or as text such as 30' or 9 m"
    • changedInput schema / properties / sides / items / properties / width / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • removedInput schema / properties / sides / items / required
      Removed value: -[
      -  "length"
      -]
    • changedInput schema / properties / stated_area / description
      Previous value: -"the area on the 7/12 or measurement sheet, in m2 (or sq ft with unit ft), to check against"New value: +"the area on the 7/12, property card or measurement sheet, to check against, as written: 5 guntha, 0.12.50 H.R., 5400 sq ft"
    • changedInput schema / properties / stated_area / type
      Previous value: -"number"New value: +[
      +  "number",
      +  "string"
      +]
    • changedInput schema / properties / unit / description
      Previous value: -"unit of every length and road width; default m"New value: +"unit of every bare number among the lengths and road widths; default m"
  5. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, closed-world), so the description rightly spends its budget elsewhere: least-squares fitting when over-determined, the residuals it reports (closing side, angle sum, spare diagonals, stated area), and its refusal on a misfit. It does not say what a refusal looks like to the caller (error vs. partial result), which keeps it short of a 5.

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

Conciseness3/5

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

It is front-loaded correctly, opening with the choosing condition, and its length is defensible for an 11-parameter geometry tool. However, it is delivered as one long semicolon chain that merges selection guidance, input conventions, computation method and a four-item output enumeration into a single breath, making it hard to scan for the parts an agent needs at call time.

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 no output schema, the description carries the return-value burden and does so: reconstructed polygon and sides, the UDCPR 2.2.3(iii) area statement by Heron triangulation, a Citiwise link, and the feasibility report when town and use are supplied. Together with 100% schema coverage and full annotations, an agent has everything needed to call it correctly; only the shape of a refusal is left unspecified.

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 adds cross-parameter semantics the schema cannot: readings taken 'as written' (40'6", 7/12 guntha, acre, H.R.), that an unmeasured side may be null where angles or diagonals fix it, that n sides need n-3 diagonals, and that town+use triggers a feasibility run. That is genuine meaning beyond the per-field descriptions.

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+resource (draw a plot from its measurements) and immediately bounds the input form: 'when a plot's shape is given as measurements rather than as one area', naming the accepted measured quantities (sides, angles, diagonals, corners). It also names and routes away from the sibling feasibility, so an agent can distinguish 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?

Explicit when-to-use is given up front (measured shape vs. area-only), plus an explicit exclusion: 'Do not use for a plot described only by its area and road width; call feasibility directly.' It also states the condition that escalates to feasibility (town and use given) and that its polygon/sides output is meant to be passed to feasibility.

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