Fredenslund workshop tools
Server Details
MFT/3 hole patterns (Shaper-ready SVG) and French cleat wall plans with cut lists. Free, unofficial.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 2 tools
The two tools address completely different domains: a French cleat wall planner and an MFT/3 dog-hole pattern generator. There is no functional overlap whatsoever, so misselection is essentially impossible.
Both names use a clean snake_case noun_topic pattern (french_cleat_plan, mft3_hole_pattern) that is predictable and descriptive. The convention is fully consistent across the set.
Only two tools under a broad 'workshop tools' banner feels thin; the server is really two unrelated niche calculators rather than a coherent workshop toolkit. Two tools is borderline for a server claiming a general domain.
Each tool is internally self-contained, returning cut lists, images, SVGs and editable links, so no obvious in-tool gaps. However, as a 'workshop tools' surface it is minimal, covering only two specific tasks with no broader workshop operations represented.
Available Tools
2 toolsfrench_cleat_planFrench cleat wall planARead-onlyIdempotentInspect
Plan a French cleat wall for a workshop with the Fredenslund cleat system: 90 mm cleat boards and 90 mm gaps (180 mm pitch), hook plate 72 mm including 12 mm material, 30 mm buffer between hangers, a 900 mm table that hangs on its own cleat one hook lower (cleat top 840) with the rows following that cleat, top cleat at least one gap below the ceiling, lowest cleat at least 210 mm above the floor (its underside; rows 300 … 2280 on the default wall). A hanger comes off by lifting it the material + 3 mm, so the hook plate is at most the gap − 3 and the top cleat at least the hook plate + 3 below the ceiling. The default wall is a full plywood sheet, 1220 × 2440 mm. Give the wall size and the hangers to hang (hooks, shelves, boxes, panels: left edge, the cleat row it hangs on, width, extra rows spanned below — a shelf usually spans one row). Returns the cleat rows (cleat top heights from the floor), every hanger with its panel height and whether it fits — and why not (row missing, row off, outside wall, collision) — the cut list with cleat metres, wall coverage, a picture of the wall (a link to a 1200 × 630 PNG) and a link that opens the same plan editable in the tool. All values in mm. Call with no hangers to get the rows for a wall first. Beta.
| Name | Required | Description | Default |
|---|---|---|---|
| system | No | Override the Fredenslund system (all in mm). Leave out to use the defaults | |
| hangers | No | Hangers to place. Each hangs on one cleat row, given by the height of that cleat's top edge from the floor | |
| rows_off | No | Cleat rows to switch off, by cleat top height from the floor | |
| wall_width_mm | No | Wall width in mm (200–8000, default 1220 — a full plywood sheet) | |
| wall_height_mm | No | Wall height in mm (300–4000, default 2440 — a full plywood sheet) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already set readOnlyHint=true and destructiveHint=false, and the description reinforces this by describing a planning/calculation tool. It adds substantial behavioral context: the cleat dimensions, the lifting constraint (hook plate ≤ gap − 3), the table offset logic, and the list of return values (rows, fits, cut list, coverage, PNG, editable link). It explains failure reasons (row missing, row off, outside wall, collision). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense, single paragraph with many numbers and rules. It front-loads the purpose but then flows into a wall of specifications. It is not structured (no bullet points or sections) and includes a trailing 'Beta.' While all information is present, it could be more scannable and concise for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (nested objects, 5 top-level parameters, no output schema), the description covers the full scope: inputs, defaults, constraints, return values, and a usage tip. It explains what the tool does, what it returns, and why hangers might fail. It even notes the default wall size. This is sufficiently complete for an agent to invoke it correctly without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions, so the baseline is 3. The description adds relational meaning beyond the schema: it explains how parameters interact (e.g., hook plate ≤ gap − 3, top cleat ≥ hook plate + 3, table offset = hook plate − material) and provides default values (90, 90, 72, 12, 30, 900) that contextualize the system. It doesn't repeat schema text but enriches understanding of the parameters' roles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it plans a French cleat wall, specifies the exact system (Fredenslund), and enumerates the inputs (wall size, hangers) and outputs (rows, fits, cut list, picture, editable link). It distinguishes itself from the sibling mft3_hole_pattern by focusing on wall planning, not hole patterns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit workflow guidance: 'Call with no hangers to get the rows for a wall first.' It also explains what inputs are expected ('Give the wall size and the hangers to hang') and the purpose of each parameter category. Though it doesn't name alternatives, the sibling is clearly different, and the description gives enough context to select this tool appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mft3_hole_patternMFT/3 hole patternARead-onlyIdempotentInspect
Festool MFT/3 dog-hole pattern for a table top of any size. The requested width and depth snap to the nearest valid MFT/3 size (46 + 96 × n mm, n = 1–20, i.e. 142–1966 mm): Ø20 mm holes on a 96 mm grid with the first hole centred 71 mm from every edge, plus the four corner screw holes (Ø11 through, Ø15 counterbore). Returns the snapped size, hole count, every hole and screw-hole position, the Shaper export depths, the file name, a link to the true-to-scale SVG for Shaper Origin/Studio, a picture of the top (a link to a 1200 × 630 PNG) and a link that opens the size in the tool. When you present the result, link the SVG file (it is what the person cuts from), the picture and the tool. The original MFT/3 top is 1102 × 718 mm (11 × 7 holes). Unofficial hobby tool, not affiliated with Festool or Shaper.
| Name | Required | Description | Default |
|---|---|---|---|
| depth_mm | Yes | Desired top depth in mm; snaps to the nearest valid size (142–1966) | |
| width_mm | Yes | Desired top width in mm; snaps to the nearest valid size (142–1966) | |
| include_svg | No | Also return the SVG markup itself (2–15 KB). By default only the link to the SVG is returned | |
| thickness_mm | No | Board thickness in mm (default 19). Through cuts are encoded at thickness + 1 mm overcut | |
| counterbore_mm | No | Counterbore depth in mm for the Ø15 screw-hole rings (default 6; 0 omits them; never deeper than the thickness) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds meaningful behavior beyond that: the input-snapping rule (requested size is not honored verbatim), the origin reference (1102 × 718 example), the Shaper export framing, and an unofficial-tool disclaimer. It does not discuss limits on the SVG payload or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and snapping rule are front-loaded, and the long 'Returns ...' enumeration is justified because no output schema exists. The result is a dense single paragraph with a few long clause chains, so it is efficient but not maximally scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the full burden of describing return values and it does so thoroughly (snapped size, hole count, positions, depths, file name, SVG/picture/tool links). Nothing an agent needs to call or relay results is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description exceeds it by spelling out the snapping formula (46 + 96 × n mm, n = 1–20) and the actual hole geometry that width/depth imply, which the terse schema descriptions do not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource combination ('MFT/3 dog-hole pattern for a table top of any size') with concrete geometric detail. It is immediately distinguishable from the single sibling french_cleat_plan without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear context (generating a table-top pattern of any size, with the snapping range documented) and even gives post-call presentation guidance. It stops short of naming when NOT to use it or contrasting against the sibling tool, so it is clear context without explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
french_cleat_plan2 fields changed- changed
Input schema / properties / hangers / items / properties / cleat_top_mm / descriptionPrevious value: -"Height from the floor of the top edge of the cleat the hanger hangs on; must be one of the wall's rows (e.g. 660, 840, 1020, 1200 … with default settings)"New value: +"Height from the floor of the top edge of the cleat the hanger hangs on; must be one of the wall's rows (300, 480, 660, 840, 1020, 1200 … 2280 with default settings)" - changed
Input schema / properties / system / properties / bottom_limit_mm / descriptionPrevious value: -"The lowest cleat keeps its underside this far above the floor (default 450)"New value: +"The lowest cleat keeps its underside this far above the floor (default 210)"
1 tool update
- Changed
french_cleat_plan8 fields changed- changed
Input schema / properties / system / properties / board_mm / descriptionPrevious value: -"Cleat board height (default 90; gap = board, pitch = 2 × board)"New value: +"Cleat board height (default 90). The gap equals the board unless gap_mm is given" - added
Input schema / properties / system / properties / gap_mmAdded value: +{ + "description": "Gap between cleat boards (default = board_mm, as in the Fredenslund system); pitch = board + gap", + "maximum": 200, + "minimum": 40, + "type": "integer" +} - changed
Input schema / properties / system / properties / hook_plate_mm / descriptionPrevious value: -"Hook plate incl. material (default 72)"New value: +"Hook plate incl. material (default 72); at most the gap − 3, so a hanger can be lifted off" - changed
Input schema / properties / system / properties / top_clearance_mm / descriptionPrevious value: -"Clearance below the ceiling (default 90)"New value: +"Clearance below the ceiling (default = the gap, 90); at least the hook plate + 3, so a hanger on the top row can be lifted off" - changed
Input schema / properties / wall_height_mm / defaultPrevious value: -2400New value: +2440 - changed
Input schema / properties / wall_height_mm / descriptionPrevious value: -"Wall height in mm (300–4000, default 2400)"New value: +"Wall height in mm (300–4000, default 2440 — a full plywood sheet)" - changed
Input schema / properties / wall_width_mm / defaultPrevious value: -3000New value: +1220 - changed
Input schema / properties / wall_width_mm / descriptionPrevious value: -"Wall width in mm (200–8000, default 3000)"New value: +"Wall width in mm (200–8000, default 1220 — a full plywood sheet)"
1 tool update
- Changed
french_cleat_plan2 fields changed- changed
Input schema / properties / hangers / items / properties / width_mm / descriptionPrevious value: -"Width in mm (snap grid is the buffer, 30 mm)"New value: +"Width in whole mm (the planner drags in 10 mm steps; the palette sizes are 50–550)" - changed
Input schema / properties / system / properties / buffer_mm / descriptionPrevious value: -"Buffer between hangers, also the snap grid (default 30)"New value: +"Buffer between hangers and above the floor (default 30)"
1 tool update
- Changed
french_cleat_plan3 fields changed- changed
Input schema / properties / hangers / items / properties / cleat_top_mm / descriptionPrevious value: -"Height from the floor of the top edge of the cleat the hanger hangs on; must be one of the wall's rows (e.g. 900, 1080, 1260 … with default settings)"New value: +"Height from the floor of the top edge of the cleat the hanger hangs on; must be one of the wall's rows (e.g. 660, 840, 1020, 1200 … with default settings)" - changed
Input schema / properties / system / properties / table_height_mm / descriptionPrevious value: -"Table height — the top of a cleat that anchors the rows (default 900)"New value: +"Table height — the top of the table (default 900). The table hangs on a cleat table_offset_mm lower, and that cleat anchors the rows" - added
Input schema / properties / system / properties / table_offset_mmAdded value: +{ + "description": "How far below the table height the table's own cleat has its top edge (default 60 = hook plate − material, so the tabletop hangs like a hanger; 0 makes the table height the top of a cleat)", + "maximum": 1000, + "minimum": 0, + "type": "integer" +}
1 tool update
- Changed
french_cleat_plan1 field changed- changed
Input schema / properties / hangers / items / properties / rows_below / descriptionPrevious value: -"Extra cleat rows spanned below the hook row (0 = one cleat; each adds one pitch, 180 mm, to the panel height)"New value: +"Extra cleat rows spanned below the hook row (0 = one cleat; each adds one pitch, 180 mm, to the panel height). Typical: hooks 0; shelves and boxes 1 (a shelf hangs on its row and rests on the cleat below); deep boxes and panels 2; tall panels 3"
1 tool update
- Changed
french_cleat_plan7 fields changed- added
Input schema / properties / hangers / items / properties / cleat_top_mm / maximumAdded value: +4000 - added
Input schema / properties / hangers / items / properties / extension_mm / maximumAdded value: +4000 - added
Input schema / properties / hangers / items / properties / rows_below / maximumAdded value: +49 - added
Input schema / properties / hangers / items / properties / width_mm / maximumAdded value: +8000 - changed
Input schema / properties / hangers / items / properties / x_mm / descriptionPrevious value: -"Left edge, mm from the wall's left edge"New value: +"Left edge, mm from the wall's left edge (x + width at most 8000, the widest wall)" - added
Input schema / properties / hangers / items / properties / x_mm / maximumAdded value: +7990 - changed
Input schema / properties / system / properties / top_clearance_mm / maximumPrevious value: -1500New value: +4000
2 tool updates
- First observed
french_cleat_plan - First observed
mft3_hole_pattern
Related MCP Connectors
Find drawer presets and create printer-aware Gridfinity baseplate configurations.
37 cutting and woodworking calculators: cut lists, sheet nesting, timber volume, kiln drying
Cutlist optimization for sheet, linear and roll stock, with grain, kerf, nesting and saw exports.
Search thousands of free SVG cut files & clipart. Free for commercial use, no attribution.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables professional furniture design from dimensions and type to a complete manufacturing package, including structural validation, cut optimization, BOM generation, assembly instructions, interactive HTML report with 3D viewer, and optional FreeCAD export.1MIT
- AlicenseAqualityCmaintenanceEnables users to design flat-pack furniture such as bookcases, cabinets, cubes and desks through natural-language conversation, then generates CNC-ready DXFs, cut and hardware lists, printable assembly instructions and a quote request for a fabricator.10MIT

SmartCutofficial
FlicenseNot gradedqualityBmaintenanceSmartCut is a hosted cutting-optimisation API. It turns a list of parts and available stock into machine-ready cutting patterns for sheet materials (plywood, MDF, glass, plastic, sheet metal), linear stock (timber, bar, pipe, extrusion) and roll goods. Guillotine and true-shape nesting modes, with grain direction, per-part orientation locks, edge banding, blade kerf and stock trim.2-- AlicenseNot gradedqualityBmaintenanceEnables 2D irregular polygon nesting (bin-packing) with tools to design, preview, get reports, and export DXF files for laser cutting or CNC routing.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.