ToolAssay

Apply deterministic parameter edits to a self-contained OpenSCAD model, verify p

Apply deterministic parameter edits to a self-contained OpenSCAD model, verify preserve constraints against the baseline, slice it with PrusaSlicer, and return checked alternatives (orientations, partial edits) when goals are unmet.

Answeringour last check, 2026-09-24
1 of 1checks answered this week
660 msmedian answer time
$0.15listed price per call
$0.15price it asked us

Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.

Endpoint

POST https://prototype.api.williamrobinson.dev/v1/prototype/revise

CategoryEverything else
Provider hostprototype.api.williamrobinson.dev
Networkseip155:8453
Payment schemesexact
Self-reported calls, 30 days1 from 1 payers (the provider's figure, not ours)

Our checks, last 30 days

DayResultHTTPAskedTime
2026-09-24 valid payment request 402$0.15 660 ms

Example input (from the provider)

{
  "body": {
    "edits": [
      {
        "delta": 10,
        "kind": "offset",
        "name": "shelf"
      }
    ],
    "goals": {
      "maxSizeMm": [
        220,
        220,
        250
      ],
      "noSupports": true
    },
    "maxAlternatives": 3,
    "orientationSearch": true,
    "parameters": {
      "height": 60
    },
    "preserve": [
      {
        "axis": "z",
        "kind": "bounds_axis",
        "toleranceMm": 0.05
      }
    ],
    "profile": "fdm-pla-0.4",
    "source": "wall = 5; shelf = 40; height = 60; depth = 30;\nunion() {\n  cube([wall, depth, height]);\n  translate([0, 0, height - wall]) cube([shelf, depth, wall]);\n}\n"
  },
  "bodyType": "json",
  "method": "POST",
  "type": "http"
}

Promised output schema (from the provider)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "properties": {
    "input": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "$schema": "https://json-schema.org/draft/2020-12/schema",
          "additionalProperties": false,
          "properties": {
            "edits": {
              "default": [],
              "description": "Deterministic edits applied in order to a top-level scalar assignment: set a literal, offset a numeric value, or scale it by a positive factor.",
              "items": {
                "oneOf": [
                  {
                    "additionalProperties": false,
                    "properties": {
                      "kind": {
                        "const": "set"
                      },
                      "name": {
                        "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$",
                        "type": "string"
                      },
                      "value": {
                        "anyOf": [
                          {
                            "description": "Maximum 512 UTF-8 bytes.",
                            "maxLength": 512,
                            "type": "string"
                          },
                          {
                            "maximum": 1000000,
                            "minimum": -1000000,
                            "type": "number"
                          },
                          {
                            "type": "boolean"
                          }
                        ]
                      }
                    },
                    "required": [
                      "kind",
                      "name",
                      "value"
                    ]
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "delta": {
                        "maximum": 1000000,
                        "minimum": -1000000,
                        "type": "number"
                      },
                      "kind": {
                        "const": "offset"
                      },
                      "name": {
                        "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "name",
                      "delta"
                    ]
                  },
                  {
                    "additionalProperties": false,
                    "properties": {
                      "factor": {
                        "exclusiveMinimum": 0,
                        "maximum": 1000000,
                        "type": "number"
                      },
                      "kind": {
                        "const": "scale"
                      },
                      "name": {
                        "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$",
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "name",
                      "factor"
                    ]
                  }
                ],
                "type": "object"
              },
              "maxItems": 16,
              "type": "array"
            },
            "goals": {
              "additionalProperties": false,
              "default": {},
              "properties": {
                "maxFilamentG": {
                  "maximum": 100000,
                  "minimum": 0.01,
                  "type": "number"
                },
                "maxPrintTimeMin": {
                  "maximum": 100000,
                  "minimum": 1,
                  "type": "number"
                },
                "maxSizeMm": {
                  "default": [
                    220,
                    220,
                    250
                  ],
                  "items": {
                    "exclusiveMinimum": 0,
                    "maximum": 1000,
                    "type": "number"
                  },
                  "maxItems": 3,
                  "minItems": 3,
                  "type": "array"
                },
                "noSupports": {
                  "default": true,
                  "type": "boolean"
                }
              },
              "type": "object"
            },
            "maxAlternatives": {
              "default": 3,
              "maximum": 4,
              "minimum": 0,
              "type": "integer"
            },
            "orientationSearch": {
              "default": true,
              "description": "Evaluate the other five axis-aligned orientations as alternatives.",
              "type": "boolean"
            },
            "parameters": {
              "additionalProperties": {
                "anyOf": [
                  {
                    "description": "Maximum 512 UTF-8 bytes.",
                    "maxLength": 512,
                    "type": "string"
                  },
                  {
                    "maximum": 1000000,
                    "minimum": -1000000,
                    "type": "number"
                  },
                  {
                    "type": "boolean"
                  }
                ]
              },
              "default": {},
              "description": "Overrides must name unique top-level scalar literal assignments, not derived expressions or reserved names.",
              "maxProperties": 64,
              "propertyNames": {
                "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$"
              },
              "type": "object"
            },
            "preserve": {
              "default": [],
              "description": "Constraints the revision must not violate: an edit must not target a named parameter, a bounding-box axis must stay within a toler

This page as JSON