Deterministic · Agent-first · No score

The QA gate between AI 3D generators and everything downstream.

POST a GLB or glTF. Get back a machine-readable report card — geometry defects, UV problems, performance-budget violations, plus rendered screenshots. Same file, same profile, same report, byte for byte. An instrument, not an oracle.

curl -X POST https://api.meshcheck.dev/v1/validate \
  -H "X-Api-Key: mc_live_..." \
  -F file=@barrel.glb \
  -F profile=web
POST /v1/validatefail
Three-quarter studio render of a damaged helmet model produced by meshcheck's fixed camera rig
DamagedHelmet.glb
  • SPEC-001glTF conformancepass
  • GEO-002Open boundarieswarn
  • MAT-002GPU texture memoryfail
  • PERF-001Triangle countpass
profile web4 of 32 checksschema 1.1

What gets measured

Eight families of checks. Every result is a measurement.

Each check declares what it measures, its threshold, and a verdict — passwarn fail. Thresholds come from a budget profile you pick (web, mobile, pc, hero) and can be overridden per request. No 0–100 score — a rollup, and the numbers behind it.

SPECFile & spec conformance
SPEC-001 glTF spec conformance (Khronos validator)SPEC-003 External references resolvableSPEC-004 File size vs budget
GEOGeometry integrity
GEO-002 Open boundaries (holes)GEO-003 Inconsistent winding / flipped normalsGEO-004 Degenerate triangles
XFMTransforms & scale
XFM-001 Real-world scale sanityXFM-002 Origin / pivot placementXFM-003 Non-uniform node scale
UVTexture coordinates
UV-001 Missing UVs on textured meshUV-002 UV overlapUV-004 Texel stretch
MATMaterials & textures
MAT-001 Texture resolution vs budgetMAT-002 Estimated GPU texture memoryMAT-004 Material count
PERFPerformance budget
PERF-001 Triangle countPERF-002 Vertex countPERF-003 Draw call estimate
RNDRender checks
RND-001 Renders without errorRND-002 Visible pixelsRND-003 Silhouette coverage
TOPTopology & surface structure
TOP-001 Quad reconstructibilityTOP-002 Vertex valence regularityTOP-004 Hard-edge share

The full catalog — every ID, method, and default severity — is in the Checks reference. Vision checks (VIS-*) are the one non-deterministic surface and live behind a separate /inspect endpoint, always labelled deterministic: false.

Live demo

Drop a model. Read the report.

This runs the real API on a rate-limited demo key. Screenshots are watermarked; uploaded bytes are deleted immediately after processing. Bring your own .glb/.gltf/.zip (up to 4.4 MB here), or try the bundled sample.

demo /v1/demo/validateready · awaiting model
Drop a model here, or click to browse
.glb · .gltf · .zip bundle — up to 4.4 MB · profile: web

For agents

Built to be driven without a human.

Structured JSON, stable check IDs, a versioned schema, and one-fetch orientation. The meshcheck-mcp server hands any MCP client — Claude Code, Claude Desktop, Cursor — the four tools: validate_model, render_model, inspect_model, get_report. It reads models straight off disk by path.

Register in Claude Code

claude mcp addshell
claude mcp add meshcheck -s project \
  -e MESHCHECK_API_KEY=mc_live_... \
  -- npx -y meshcheck-mcp

Or drop into any MCP config

mcp configjson
{
  "mcpServers": {
    "meshcheck": {
      "command": "npx",
      "args": ["-y", "meshcheck-mcp"],
      "env": { "MESHCHECK_API_KEY": "mc_live_..." }
    }
  }
}

Agent orientation in one fetch: llms.txt. Machine contract: openapi.json and the report JSON Schema. Full walkthrough in the MCP guide.

Pricing

Credits, not seats.

A full validation (checks + renderer) costs 2 credits; checks-only costs 1. Free is generous but limiting on purpose; paid plans run on Polar, our merchant of record. The free tier and the demo above need no card.

PlanPriceCredits/mo
Free$0300
Indie$103,000
StudioMost teams$3910,000
Scale$13940,000
See full pricingGet started free

Privacy is a feature

What we keep, and for how long.

These are product commitments — stated here, enforced in code, and repeated verbatim in llms.txt.

  • Uploaded model bytesDeleted immediately after processing completes (success or failure). Never written to logs or backups. retention: 0
  • Reports (JSON)Kept so you can re-fetch a stored report, then hard-deleted.retention: 30 days
  • ScreenshotsServed only via signed URLs bound to report expiry.retention: 30 days