Skip to main content
Glama

threenative-sculpt-mcp

Five fail-closed MCP tools for turning a reference image into user-owned procedural Three.js source. The server evaluates plans, ObjectSculptSpec depth, captured frames, and pass gates; it never generates source or launches a browser.

Run locally

pnpm install --frozen-lockfile
pnpm build
node dist/server.js

The server communicates over stdio. Configure an MCP host to launch ./node_modules/.bin/threenative-sculpt-mcp from the generated project.

Related MCP server: material-workbench

Surface

  • sculpt_plan — validate a reference and return the locked pass order plus relevant grimoire URIs.

  • sculpt_spec_gate — validate the retained ObjectSculptSpec contract and depth minimums.

  • sculpt_compare — compare an existing capture with the reference globally and by normalized region.

  • sculpt_pass_gate — return advance, retry, or stop; uncertainty can never advance.

  • sculpt_grimoire — read a topic; unknown topics fail with the complete valid-topic list.

Every technique-safe page is exposed as sculpt://grimoire/<topic>.

The source repository retains the complete upstream grimoire verbatim. The served resource index is narrower: pages containing concrete fenced GLSL or material recipes are rejected by both resource discovery and sculpt_grimoire. This keeps the MCP surface technique-oriented; the agent authors the game's materials and shaders in src/render/.

Upstream does not contain a standalone JSON Schema for ObjectSculptSpec. This fork documents its explicit MCP runtime subset in schema/object-sculpt-spec.runtime.schema.json and applies the upstream simple/moderate/complex/ultra-complex depth thresholds in code. The eight locked passes are blockout, structural, form, material, surface, lighting, interaction, and optimization.

The nested shapes consumed by sculpt_spec_gate are objects: the tier is preSpecAssessment.complexity.tier, and inventory entries are in preSpecAssessment.detailInventory.details. This complete simple-tier example is also packaged as examples/simple-object-sculpt-spec.json:

{
  "schemaVersion": "2.1",
  "targetName": "Reference object",
  "suitability": "pass",
  "coordinateFrame": {},
  "silhouette": {},
  "componentTree": [{ "id": "root", "level": "macro", "localFeatures": [] }],
  "materials": [{ "id": "base" }],
  "repetitionSystems": [],
  "proceduralStrategy": ["Build the observed silhouette"],
  "preSpecAssessment": {
    "complexity": { "tier": "simple" },
    "detailInventory": {
      "details": [
        { "id": "primary-outline" },
        { "id": "dominant-proportion" },
        { "id": "material-break" }
      ]
    }
  },
  "qualityContract": {
    "minimumSpecDepth": {
      "macroComponents": 1,
      "mesoComponents": 0,
      "microFeatureGroups": 0,
      "materialLayers": 1,
      "repetitionSystems": 0,
      "reviewViewpoints": 2
    }
  },
  "qualityTargets": { "reviewViewpoints": ["front", "three-quarter"] }
}

Deterministic pixel comparison is diagnostic evidence. sculpt_pass_gate requires a semantic review of the same image pair and its critical features; absent or ambiguous review evidence returns retry (or stop at the configured final attempt), never advance. Low deterministic scores and regional confidence produce correction guidance but do not block an otherwise passing semantic review when compareResult.ambiguous is false. An explicitly ambiguous comparison still blocks advancement.

sculpt_compare reads PNG, JPEG, WebP, GIF, AVIF, and TIFF through Node's sharp package. It rejects missing, zero-byte, undecodable, and all-one-colour captures. It does not include Python, uv, Playwright, browser automation, source generation, or runtime game code.

Verify

pnpm typecheck
pnpm test
pnpm pack --dry-run

The retained material, adaptations, ports, and resource-safety filter are described in NOTICE; the package is Apache-2.0.

Available Tools

5 tools
sculpt_compareA
Read-onlyIdempotent

Produce deterministic diagnostic evidence from an existing capture and reference, globally and per normalized region. Never launches a browser and never authorizes advancement.

ParametersJSON Schema
NameRequiredDescriptionDefault
regionsNo
capturePathYes
referencePathYes

TDQS

A3.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint and idempotentHint. The description adds valuable behavioral guarantees: 'deterministic,' 'existing capture and reference,' 'never launches a browser,' and 'never authorizes advancement.' This goes beyond the annotations and clarifies side effects and boundaries. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences. The first states the core function and scope; the second adds safety/behavioral boundaries. Every word earns its place, no repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, safety, and general input semantics, but with no output schema it does not describe the structure or format of the 'diagnostic evidence' returned. It also leaves the region object details implicit. It is adequate for a simple read-only compare-like tool but not fully complete for an agent to invoke it with full confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It adds meaning by referring to 'capture and reference' (capturePath/referencePath) and 'normalized region' (regions), indicating existing inputs and normalized coordinates. However, it does not explain the id field inside regions, the default behavior of regions (global comparison when empty), or file path formats, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('Produce deterministic diagnostic evidence') and the resources ('existing capture and reference'), and it distinguishes the tool from gate/plan siblings by noting it 'never authorizes advancement.' It stops short of explicitly saying 'compare,' though 'capture and reference' plus 'evidence' strongly imply it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives context: use when you need deterministic diagnostic evidence from existing captures/references, not for browser-based actions or advancing a gate. It provides exclusions ('never launches a browser,' 'never authorizes advancement') but does not name alternative sibling tools or explicitly state when this tool should be chosen over them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sculpt_grimoireA
Read-onlyIdempotent

Fetch a technique-safe grimoire page by topic. Unknown and concrete shader/material recipe topics fail and list valid topics.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, covering the safety profile. The description adds valuable behavioral insight: it explicitly states that unknown and concrete shader/material recipe topics cause failures and that valid topics are listed in response. This goes beyond the annotations to explain failure behavior and self-correction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary action, and every sentence earns its place. It is concise, clear, and free of redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is sufficiently complete. It explains the key behavior of failing on invalid topics and listing valid ones, which is critical for correct invocation. Minor absence is the lack of return format details, but the 'grimoire page' concept and failure handling make the tool usable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description carries the full burden of explaining the 'topic' parameter. It clarifies that the topic should be a technique-safe grimoire topic, not a concrete shader/material recipe, and it reveals that valid topics are enumerated on failure. This provides enough semantic guidance despite lacking examples of valid topics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch') and resource ('grimoire page by topic'), which clearly states the tool's action and scope. It also distinguishes this from sibling tools (sculpt_plan, sculpt_spec_gate, sculpt_compare, sculpt_pass_gate) that focus on planning, gating, or comparison rather than retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage by stating that topics must be technique-safe and that unknown or concrete recipe topics fail and list valid topics. However, it does not explicitly mention when to use this tool instead of siblings, nor any alternatives or exclusions beyond the topic constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sculpt_pass_gateC
Read-onlyIdempotent

Return advance, retry, or stop. Semantic review controls advancement; deterministic scores supply corrections, while an explicitly ambiguous comparison blocks advancement.

ParametersJSON Schema
NameRequiredDescriptionDefault
passIdYes
attemptNo
thresholdNo
maxAttemptsNo
compareResultYes
semanticReviewNo
minimumConfidenceNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint, so the tool's safety profile is known. The description adds insight into the decision mechanism—semantic review has authority, deterministic scores correct, and ambiguity blocks—which is beyond the annotations. Yet it stops short of explaining conditions for retry vs stop or the effect of thresholds and maxAttempts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence that front-loads the primary output ('Return advance, retry, or stop'). It packs meaningful logic without unnecessary verbiage, though its density may reduce immediate comprehensibility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with seven parameters, nested objects, and no output schema, this description is far too sparse. It neither describes the inputs' semantics beyond two concepts nor explains return value structure or usage scenarios, leaving significant gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate, but it only hints at semanticReview and compareResult.ambiguous. Critical parameters such as passId, threshold, maxAttempts, and minimumConfidence are not explained in the description, leaving the agent with little context for how to set them.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a decision among advance, retry, or stop, which is a specific action. It further explains the decision logic by referencing semantic review, deterministic scores, and ambiguous comparisons, giving it distinct behavioral framing. However, it does not explicitly differentiate itself from sibling gate tools like sculpt_spec_gate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance on when to use this tool versus alternatives. It implies a gating step in a sculpt pipeline but does not mention sibling tools, prerequisites, or exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sculpt_planB
Read-onlyIdempotent

Validate a reference image and return the locked eight-pass sculpt order plus relevant technique-safe grimoire resources.

ParametersJSON Schema
NameRequiredDescriptionDefault
intentYes
referencePathYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint and idempotentHint, so the agent knows this is a safe, repeatable operation. The description adds that the tool 'validates' an image and returns resources, but it does not disclose any deeper behavioral details (e.g., what 'validate' means, failure modes, or how the result should be consumed). This is acceptable but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that is front-loaded with the primary action ('Validate a reference image') and then lists the output. There is no filler or redundancy, making it highly efficient for the agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with two string parameters and no output schema, the description gives a basic sense of purpose and expected results. However, it does not explain key terms like 'eight-pass sculpt order', 'technique-safe grimoire resources', or how to handle validation failures. Given the sibling tools, the agent may need more context to know if this is the right stage to call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description only hints at one parameter ('reference image' implying referencePath). It does not explain 'intent' at all, and even the referencePath relationship is implicit. With two required parameters and no schema descriptions, the description fails to compensate, leaving the agent guessing about parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool validates a reference image and returns a specific artifact (the locked eight-pass sculpt order plus grimoire resources). This goes beyond a tautology and gives a concrete outcome. However, it does not explicitly differentiate from sibling tools like sculpt_grimoire or sculpt_compare, which also involve validation or grimoire concepts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for planning the sculpt order after validating a reference image, but it never states when to use this over alternatives like sculpt_spec_gate or sculpt_grimoire. There are no explicit 'when to use' or 'when not to use' instructions, leaving the agent to infer the context from the tool name and outcome.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sculpt_spec_gateA
Read-onlyIdempotent

Validate the MCP runtime ObjectSculptSpec contract and canonical complexity depth thresholds before code is written.

ParametersJSON Schema
NameRequiredDescriptionDefault
specYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds meaningful context by specifying that it validates the ObjectSculptSpec contract and complexity depth thresholds, and that this happens before coding. It does not explain failure behavior or return format, but for a read-only gate with annotations this is acceptable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence that immediately conveys the action and target. No unnecessary words or repetitive content, making it highly concise and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a validation tool with no output schema and an undocumented complex parameter, the description is incomplete. It gives purpose and timing but omits what the return value looks like (success/failure, details) and how to construct the 'spec' argument. Given the tool's moderate complexity, this is a significant gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description provides no guidance on the single required 'spec' parameter, which is a complex object with arbitrary properties. The description must compensate for the lack of schema details but fails entirely, leaving agents without any hint of how to structure the spec.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Validate' with a clear resource ('MCP runtime ObjectSculptSpec contract and canonical complexity depth thresholds') and temporal context ('before code is written'). This clearly distinguishes it from sibling tools such as sculpt_pass_gate, which likely serves a different gating purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear timing guidance ('before code is written') which implies when to use this tool in a workflow. It does not explicitly name alternative tools or exclusion scenarios, but the temporal context offers a solid usage signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

Each tool addresses a distinct phase or concern: planning, spec validation, comparison, pass gating, and resource lookup. There is no ambiguity between them; the descriptions clearly separate their roles.

Naming Consistency4/5

All tool names share the sculpt_ prefix, but the suffixes mix verbs (compare) and nouns (plan, grimoire) with compound nouns (spec_gate, pass_gate). This is mostly consistent but not a uniform verb_noun pattern.

Tool Count5/5

5 tools is well within the ideal 3-15 range, and each tool serves a necessary, non-redundant function within the workflow.

Completeness4/5

The core workflow of plan, validate, compare, gate, and fetch resources is well covered. Minor gaps exist, such as no direct way to list all grimoire topics without triggering an error, but the surface is sufficient for the likely use case.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Exposes OpenSCAD CLI as MCP tools for validating, rendering, and exporting parametric 3D models. Enables LLM clients to interactively create and manipulate OpenSCAD designs.
    3
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Exposes procedural material and isometric terrain generation as MCP tools, allowing agents to create deterministic PBR textures and 2:1 isometric tiles from JSON recipes.
    12
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables agent-driven CAD design through deterministic source files (.kcad.ts), including model evaluation, validation, and export to STEP/STL via MCP tools for review and introspection.
    95
    17
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jonit-dev/threenative-sculpt-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server