Tools for agents: Exact point-to-plane projection

Project 3D points perpendicularly onto an infinite plane with exact coordinates, squared distances and oriented side labels.

Connect with MCP

{
  "mcpServers": {
    "super-agent-tools": {
      "url": "https://app.getsupers.com/sites/agent-plane-project/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 project_points_to_plane

Plane equation is dot(normal, point-plane_point)=0. The normal must be nonzero but need not be normalized. Inputs are integers or quoted finite decimal/fraction strings; JSON floats and booleans are rejected. Each output preserves input order and index. displacement is projected minus original point. plane_residual is the original point equation value, not signed Euclidean distance. Positive and negative side labels follow the supplied normal direction. squared_distance uses squared coordinate units and avoids irrational square-root rounding. Multiplying the normal by a positive nonzero factor preserves projection and side; a negative factor reverses side only. Empty point lists are allowed. The target is an infinite plane, not a bounded polygon, mesh surface, perspective camera projection or coordinate-system conversion. All coordinates must use the same units and Cartesian frame.

Input and output schemas
{
  "name": "project_points_to_plane",
  "title": "Exact point-to-plane projection",
  "description": "Project rational 3D points onto the infinite plane through plane_point with nonzero normal. Return exact projections, displacement, squared distance and oriented side.",
  "inputSchema": {
    "properties": {
      "points": {
        "items": {
          "maxItems": 3,
          "minItems": 3,
          "prefixItems": [
            {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            },
            {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            },
            {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "string"
                }
              ]
            }
          ],
          "type": "array"
        },
        "title": "Points",
        "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"
      },
      "normal": {
        "maxItems": 3,
        "minItems": 3,
        "prefixItems": [
          {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "string"
              }
            ]
          },
          {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "string"
              }
            ]
          },
          {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "string"
              }
            ]
          }
        ],
        "title": "Normal",
        "type": "array"
      }
    },
    "required": [
      "points",
      "plane_point",
      "normal"
    ],
    "title": "project_points_to_planeArguments",
    "type": "object"
  },
  "outputSchema": {
    "additionalProperties": true,
    "title": "project_points_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-plane-project/call
Content-Type: application/json

{
  "points": [
    [
      3,
      0,
      0
    ],
    [
      0,
      0,
      0
    ],
    [
      1,
      1,
      1
    ]
  ],
  "plane_point": [
    1,
    0,
    0
  ],
  "normal": [
    1,
    1,
    1
  ]
}

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.