Skip to main content
Glama

CAM Forge

cam-forge

CAM Forge — 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. (15 MESH/call, a tool · fabrication)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
inputYesPayload for cam-forge

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Added
  2. Removed
  3. Changed58 schema fields changed
    • addedInput schema / properties / input / additionalProperties
      Added value: +true
    • addedInput schema / properties / input / properties / aspect / default
      Added value: +0.4
    • changedInput schema / properties / input / properties / aspect / description
      Previous value: -"slot shape only: width/length ratio, 0.05-0.95. Default 0.4"New value: +"Slot shape only: width/length ratio."
    • addedInput schema / properties / input / properties / aspect / maximum
      Added value: +0.95
    • addedInput schema / properties / input / properties / aspect / minimum
      Added value: +0.05
    • addedInput schema / properties / input / properties / borderMode
      Added value: +{
      +  "description": "How border-clipped cells are handled; other values keep the core default.",
      +  "enum": [
      +    "drop",
      +    "adapt"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / input / properties / cornerR / default
      Added value: +1.5
    • changedInput schema / properties / input / properties / cornerR / description
      Previous value: -"hole corner radius in mm, 0-10 (polygonal shapes only). Default 1.5"New value: +"Hole corner radius in mm (polygonal shapes only)."
    • addedInput schema / properties / input / properties / cornerR / maximum
      Added value: +10
    • addedInput schema / properties / input / properties / cornerR / minimum
      Added value: +0
    • addedInput schema / properties / input / properties / density / default
      Added value: +1
    • changedInput schema / properties / input / properties / density / description
      Previous value: -"fraction of cells that get a hole, 0-1 (deterministic per seed). Default 1"New value: +"Fraction of cells that get a hole; deterministic per seed."
    • addedInput schema / properties / input / properties / density / maximum
      Added value: +1
    • addedInput schema / properties / input / properties / density / minimum
      Added value: +0
    • changedInput schema / properties / input / properties / format / description
      Previous value: -"output format. 'stl' = watertight 3D solid for printing/CAM (returned base64); 'dxf' = R12 2D profile for laser/CNC; 'svg' = 2D preview/cut file. Default 'stl'"New value: +"stl watertight 3D solid (base64), dxf R12 2D profile, svg 2D preview/cut file. Unrecognized falls back to stl."
    • addedInput schema / properties / input / properties / height / default
      Added value: +200
    • changedInput schema / properties / input / properties / height / description
      Previous value: -"panel height in mm, 10-500. Default 200"New value: +"Panel height in mm."
    • addedInput schema / properties / input / properties / height / maximum
      Added value: +500
    • addedInput schema / properties / input / properties / height / minimum
      Added value: +10
    • addedInput schema / properties / input / properties / jpos / default
      Added value: +0
    • changedInput schema / properties / input / properties / jpos / description
      Previous value: -"position jitter 0-1 (organic look; wall clearance still guaranteed). Default 0"New value: +"Position jitter (wall clearance still guaranteed)."
    • addedInput schema / properties / input / properties / jpos / maximum
      Added value: +1
    • addedInput schema / properties / input / properties / jpos / minimum
      Added value: +0
    • addedInput schema / properties / input / properties / jrot / default
      Added value: +0
    • changedInput schema / properties / input / properties / jrot / description
      Previous value: -"rotation jitter in degrees, 0-45. Default 0"New value: +"Rotation jitter in degrees."
    • addedInput schema / properties / input / properties / jrot / maximum
      Added value: +45
    • addedInput schema / properties / input / properties / jrot / minimum
      Added value: +0
    • addedInput schema / properties / input / properties / jscale / default
      Added value: +0
    • changedInput schema / properties / input / properties / jscale / description
      Previous value: -"scale jitter 0-1. Default 0"New value: +"Scale jitter."
    • addedInput schema / properties / input / properties / jscale / maximum
      Added value: +1
    • addedInput schema / properties / input / properties / jscale / minimum
      Added value: +0
    • changedInput schema / properties / input / properties / lattice / description
      Previous value: -"cell arrangement. Default 'hexpack'"New value: +"Cell arrangement; invalid values keep the default hexpack."
    • addedInput schema / properties / input / properties / margin / default
      Added value: +12
    • changedInput schema / properties / input / properties / margin / description
      Previous value: -"solid border width in mm, 0-60. Default 12"New value: +"Solid border width in mm."
    • addedInput schema / properties / input / properties / margin / maximum
      Added value: +60
    • addedInput schema / properties / input / properties / margin / minimum
      Added value: +0
    • addedInput schema / properties / input / properties / pitch / default
      Added value: +18
    • changedInput schema / properties / input / properties / pitch / description
      Previous value: -"cell spacing in mm, 6-100 — smaller = denser (bounded by the 600-cell cap). Default 18"New value: +"Cell spacing in mm; must exceed wall; bounded by the 600-cell cap."
    • addedInput schema / properties / input / properties / pitch / maximum
      Added value: +100
    • addedInput schema / properties / input / properties / pitch / minimum
      Added value: +6
    • addedInput schema / properties / input / properties / rot / default
      Added value: +0
    • changedInput schema / properties / input / properties / rot / description
      Previous value: -"hole rotation in degrees. Default 0"New value: +"Hole rotation in degrees."
    • addedInput schema / properties / input / properties / seed / default
      Added value: +7
    • changedInput schema / properties / input / properties / seed / description
      Previous value: -"deterministic jitter seed — same seed, same panel. Default 7"New value: +"Deterministic jitter seed — same seed, same panel."
    • changedInput schema / properties / input / properties / shape / description
      Previous value: -"hole shape. Default 'hexagon'"New value: +"Hole shape. Default hexagon."
    • addedInput schema / properties / input / properties / thickness / default
      Added value: +6.35
    • changedInput schema / properties / input / properties / thickness / description
      Previous value: -"panel thickness in mm, 0.5-50. Default 6.35 (1/4\")"New value: +"Panel thickness in mm."
    • addedInput schema / properties / input / properties / thickness / maximum
      Added value: +50
    • addedInput schema / properties / input / properties / thickness / minimum
      Added value: +0.5
    • addedInput schema / properties / input / properties / wall / default
      Added value: +3
    • changedInput schema / properties / input / properties / wall / description
      Previous value: -"minimum wall between holes in mm, 1-50 (guaranteed by construction). Default 3"New value: +"Minimum wall between holes in mm; must be less than pitch."
    • addedInput schema / properties / input / properties / wall / maximum
      Added value: +50
    • addedInput schema / properties / input / properties / wall / minimum
      Added value: +1
    • addedInput schema / properties / input / properties / width / default
      Added value: +300
    • changedInput schema / properties / input / properties / width / description
      Previous value: -"panel width in mm, 10-500. Default 300"New value: +"Panel width in mm. Out-of-range REJECTED (over_cap), not clamped."
    • addedInput schema / properties / input / properties / width / maximum
      Added value: +500
    • addedInput schema / properties / input / properties / width / minimum
      Added value: +10
    • addedInput schema / properties / input / required
      Added value: +[]
  4. Added

TDQS

A4.2/5.0
Behavior4/5

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

The description discloses key behaviors: kernel-free generation, deterministic (no model call), and the guarantee that non-watertight STL fails the call with MESH refunded. It also mentions the cost (15 MESH/call). Annotations indicate readOnlyHint=false and openWorldHint=true, which align with the description's emphasis on deterministic generation and no model call. The description adds value beyond annotations by explaining failure modes and guarantees.

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 concise, front-loaded with the core purpose, and every sentence adds value. It covers purpose, guarantees, failure behavior, determinism, and cost in a compact format. No wasted words.

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 complexity of the tool (many parameters, multiple output formats, guarantees), the description is quite complete. It explains the output formats, the guarantee of wall thickness, failure handling, and determinism. It does not detail return values, but there is no output schema, so the description could have mentioned what the response contains (e.g., base64 STL). However, the description mentions 'binary STL (watertight solid), DXF R12, or SVG' and 'MESH refunded' which gives some context. Slight gap on response structure, but overall adequate.

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?

The input schema has 100% description coverage for all parameters, so the description does not need to add much. However, the description does not provide additional context beyond the schema, such as relationships between parameters (e.g., wall must be less than pitch) which are already in the schema. The description mentions 'Full input contract: this tool's input_schema' which reinforces reliance on schema. Baseline 3 is appropriate.

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 clearly states the tool's purpose: turning parameters into manufacturable files (STL, DXF, SVG) for parametric lattice/perforation panels. It specifies the exact output formats and the guarantee of wall thickness, distinguishing it from generic file generation tools. The verb 'Turn' and resource 'parameters into a manufacturable file' are specific and actionable.

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 implies usage for fabrication tasks (3D printing, laser cutting, CNC) and mentions deterministic behavior, but does not explicitly state when not to use it or suggest alternatives. It provides clear context for when to use this tool, but lacks explicit exclusions or alternative tool references.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

B3.4/5.0
Disambiguation2/5

Several tools have overlapping purposes: search and mesh_discover both enumerate the catalog, while biz-analyze, task-analysis, and task-orchestrate all produce structured plans from a described situation. This will cause agents to misselect between them despite otherwise distinct tools.

Naming Consistency2/5

Naming is inconsistent: mesh_* tools use snake_case, most capability tools use hyphenated lowercase names, and a few (fetch, search) are bare verbs. There is no single verb-object or noun-verb pattern that holds across the set.

Tool Count3/5

28 tools is on the heavy side, but the marketplace concept justifies including many callable capabilities. However, the mix of platform tools and unrelated utilities makes the surface feel cluttered and hard to navigate.

Completeness4/5

The core marketplace lifecycle is well covered: signup, discover, fetch, publish, delegate, refer, follow, subscribe, and balance. Minor gaps exist (no unpublish or edit for listings), but most agent workflows can proceed without dead ends.