CAM Forge cam-forge

15 MESH / call · fabrication · calls 3 (house 3 / external 0)

Turn parameters into a manufacturable file: kernel-free parametric lattice/perforation panels for 3D printing, laser cutting, and CNC — binary STL (watertight solid), DXF R12, or SVG. Wall thickness between holes is guaranteed by construction; a non-watertight STL fails the call, MESH refunded — bad geometry never ships. Deterministic, no model call. Full input contract: this tool's input_schema.

Input schema

{
 "type": "object",
 "properties": {
  "format": {
   "type": "string",
   "enum": [
    "stl",
    "dxf",
    "svg"
   ],
   "description": "stl watertight 3D solid (base64), dxf R12 2D profile, svg 2D preview/cut file. Unrecognized falls back to stl."
  },
  "width": {
   "type": "number",
   "minimum": 10,
   "maximum": 500,
   "default": 300,
   "description": "Panel width in mm. Out-of-range REJECTED (over_cap), not clamped."
  },
  "height": {
   "type": "number",
   "minimum": 10,
   "maximum": 500,
   "default": 200,
   "description": "Panel height in mm."
  },
  "thickness": {
   "type": "number",
   "minimum": 0.5,
   "maximum": 50,
   "default": 6.35,
   "description": "Panel thickness in mm."
  },
  "margin": {
   "type": "number",
   "minimum": 0,
   "maximum": 60,
   "default": 12,
   "description": "Solid border width in mm."
  },
  "lattice": {
   "type": "string",
   "enum": [
    "hexpack",
    "grid",
    "stagger"
   ],
   "description": "Cell arrangement; invalid values keep the default hexpack."
  },
  "shape": {
   "type": "string",
   "enum": [
    "hexagon",
    "circle",
    "square",
    "diamond",
    "triangle",
    "slot"
   ],
   "description": "Hole shape. Default hexagon."
  },
  "pitch": {
   "type": "number",
   "minimum": 6,
   "maximum": 100,
   "default": 18,
   "description": "Cell spacing in mm; must exceed wall; bounded by the 600-cell cap."
  },
  "wall": {
   "type": "number",
   "minimum": 1,
   "maximum": 50,
   "default": 3,
   "description": "Minimum wall between holes in mm; must be less than pitch."
  },
  "cornerR": {
   "type": "number",
   "minimum": 0,
   "maximum": 10,
   "default": 1.5,
   "description": "Hole corner radius in mm (polygonal shapes only)."
  },
  "rot": {
   "type": "number",
   "default": 0,
   "description": "Hole rotation in degrees."
  },
  "aspect": {
   "type": "number",
   "minimum": 0.05,
   "maximum": 0.95,
   "default": 0.4,
   "description": "Slot shape only: width/length ratio."
  },
  "density": {
   "type": "number",
   "minimum": 0,
   "maximum": 1,
   "default": 1,
   "description": "Fraction of cells that get a hole; deterministic per seed."
  },
  "jpos": {
   "type": "number",
   "minimum": 0,
   "maximum": 1,
   "default": 0,
   "description": "Position jitter (wall clearance still guaranteed)."
  },
  "jrot": {
   "type": "number",
   "minimum": 0,
   "maximum": 45,
   "default": 0,
   "description": "Rotation jitter in degrees."
  },
  "jscale": {
   "type": "number",
   "minimum": 0,
   "maximum": 1,
   "default": 0,
   "description": "Scale jitter."
  },
  "seed": {
   "type": "integer",
   "default": 7,
   "description": "Deterministic jitter seed — same seed, same panel."
  },
  "borderMode": {
   "type": "string",
   "enum": [
    "drop",
    "adapt"
   ],
   "description": "How border-clipped cells are handled; other values keep the core default."
  }
 },
 "required": [],
 "additionalProperties": true
}

Call it — MCP

POST https://market.meshtool.ai/mcp (streamable HTTP), tools/call cam-forge:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cam-forge",
    "arguments": {
      "input": {
        "format": "stl",
        "width": 0,
        "height": 0,
        "thickness": 0,
        "margin": 0,
        "lattice": "hexpack"
      }
    }
  }
}

Call it — REST

curl -X POST https://market.meshtool.ai/api/call/cam-forge \
  -H 'Authorization: Bearer $MESH_KEY' \
  -H 'content-type: application/json' \
  -d '{"input":{"format":"stl","width":0,"height":0,"thickness":0,"margin":0,"lattice":"hexpack"}}'

No key? A call without one returns HTTP 402 with the price and POST /api/accounts to mint a free key with starter MESH.

JSON record · MCP manifest · OpenAPI · full capability index