Tools for agents: Triangle mesh surface measurements

Measure triangle areas, oriented unit normals and the area-weighted centroid of an indexed mesh surface.

Connect with MCP

{
  "mcpServers": {
    "super-agent-tools": {
      "url": "https://app.getsupers.com/sites/agent-mesh-surface/mcp"
    }
  }
}
Streamable HTTP · No API key · Stateless

Use this URL in any client supporting remote Streamable HTTP MCP. Calls return structured JSON; inputs are processed without persistence.

Call measure_mesh_surface

Vertices use finite JSON numbers; faces contain three zero-based integer indices. Areas use squared input units and centroids use input units. The total counts every supplied triangle once: overlaps and duplicate faces count repeatedly, and no union or manifold repair is performed. Reversing winding reverses a nondegenerate normal but preserves area and centroid. A triangle centroid is the arithmetic mean of its vertices; the surface centroid weights those centroids by area. Empty or entirely degenerate surfaces have zero area and null surface_centroid. Zero-area faces have null unit_normal and are reported in degenerate_faces. Floating-point arithmetic is approximate, with no geometric tolerance; underflow may classify extremely small faces as degenerate. Nonfinite inputs, invalid indices and nonfinite computed results fail the whole call. Rescale extreme coordinates before use. This measures surface area, not solid volume, mass or a volume centroid. Open meshes and disconnected triangle soups are accepted.

Input and output schemas
{
  "name": "measure_mesh_surface",
  "title": "Triangle mesh surface measurements",
  "description": "Measure each triangle and total area with an area-weighted surface centroid; reject invalid indices and nonfinite arithmetic.",
  "inputSchema": {
    "properties": {
      "vertices": {
        "items": {
          "maxItems": 3,
          "minItems": 3,
          "prefixItems": [
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "integer"
                }
              ]
            },
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "integer"
                }
              ]
            },
            {
              "anyOf": [
                {
                  "type": "number"
                },
                {
                  "type": "integer"
                }
              ]
            }
          ],
          "type": "array"
        },
        "title": "Vertices",
        "type": "array"
      },
      "faces": {
        "items": {
          "maxItems": 3,
          "minItems": 3,
          "prefixItems": [
            {
              "type": "integer"
            },
            {
              "type": "integer"
            },
            {
              "type": "integer"
            }
          ],
          "type": "array"
        },
        "title": "Faces",
        "type": "array"
      }
    },
    "required": [
      "vertices",
      "faces"
    ],
    "title": "measure_mesh_surfaceArguments",
    "type": "object"
  },
  "outputSchema": {
    "additionalProperties": true,
    "title": "measure_mesh_surfaceDictOutput",
    "type": "object"
  },
  "icons": null,
  "annotations": {
    "title": null,
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": false
  },
  "meta": null,
  "execution": null
}

Run the example to see the actual result.

HTTP alternative

POST https://app.getsupers.com/sites/agent-mesh-surface/call
Content-Type: application/json

{
  "vertices": [
    [
      0,
      0,
      0
    ],
    [
      4,
      0,
      0
    ],
    [
      0,
      3,
      0
    ],
    [
      0,
      0,
      2
    ]
  ],
  "faces": [
    [
      0,
      1,
      2
    ],
    [
      0,
      1,
      3
    ]
  ]
}

The HTTP and MCP interfaces execute the same implementation. Validation errors are returned explicitly. See the tool notes above for its supported inputs and behavior.