Tools for agents: Exact triangle plane clipping
Clip a 3D triangle to a closed half-space and return exact polygon vertices with a winding-preserving triangulation.
Connect with MCP
{
"mcpServers": {
"super-agent-tools": {
"url": "https://app.getsupers.com/sites/agent-triangle-clip/mcp"
}
}
}Use this URL in any client supporting remote Streamable HTTP MCP. Calls return structured JSON; inputs are processed without persistence.
Call clip_triangle_to_plane
Retains points satisfying dot(plane_normal,point-plane_point)>=0, including the cutting plane. Reverse the normal to retain the opposite side. Coordinates are integers or quoted finite decimal/fraction strings; JSON floats and booleans fail. The normal need not be unit length but must be nonzero; the input triangle must be noncollinear. Output coordinates are reduced rational strings. Output vertices follow the original boundary winding, with adjacent duplicates removed; faces are zero-based fan triangles into that vertex list. A cut can produce an empty result, one boundary point, a boundary segment, the original triangle or a quadrilateral. dimension is null, 0, 1 or 2 respectively; point and segment results have no faces. Entirely coplanar triangles are fully retained. input_plane_values are unnormalized signed dot products, not Euclidean distances. boundary_vertex_indices identify exact plane membership without tolerance. This clips one triangle against one plane, creates no closed-mesh cap, and does not interpolate UVs or other attributes.
Input and output schemas
{
"name": "clip_triangle_to_plane",
"title": "Exact triangle plane clipping",
"description": "Clip a triangle to dot(plane_normal, point-plane_point)>=0 with exact rational arithmetic, preserving winding.",
"inputSchema": {
"properties": {
"triangle": {
"maxItems": 3,
"minItems": 3,
"prefixItems": [
{
"maxItems": 3,
"minItems": 3,
"prefixItems": [
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
],
"type": "array"
},
{
"maxItems": 3,
"minItems": 3,
"prefixItems": [
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
],
"type": "array"
},
{
"maxItems": 3,
"minItems": 3,
"prefixItems": [
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
],
"type": "array"
}
],
"title": "Triangle",
"type": "array"
},
"plane_point": {
"maxItems": 3,
"minItems": 3,
"prefixItems": [
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
],
"title": "Plane Point",
"type": "array"
},
"plane_normal": {
"maxItems": 3,
"minItems": 3,
"prefixItems": [
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
},
{
"anyOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
],
"title": "Plane Normal",
"type": "array"
}
},
"required": [
"triangle",
"plane_point",
"plane_normal"
],
"title": "clip_triangle_to_planeArguments",
"type": "object"
},
"outputSchema": {
"additionalProperties": true,
"title": "clip_triangle_to_planeDictOutput",
"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-triangle-clip/call
Content-Type: application/json
{
"triangle": [
[
-1,
0,
0
],
[
2,
0,
0
],
[
2,
3,
0
]
],
"plane_point": [
0,
0,
0
],
"plane_normal": [
1,
0,
0
]
}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.