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
| Category | Everything else |
|---|---|
| Provider host | prototype.api.williamrobinson.dev |
| Networks | eip155:8453 |
| Payment schemes | exact |
| Self-reported calls, 30 days | 1 from 1 payers (the provider's figure, not ours) |
Our checks, last 30 days
| Day | Result | HTTP | Asked | Time |
|---|---|---|---|---|
| 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