Skip to main content
Glama

Craft Quantities: construction material calculators

Create a My Project file from a plan

create_project_file_from_plan
Read-onlyIdempotent

Creates one My Project backup file from a room plan: one planned space, or several spaces and a roof. Its lines and its plan are saved as the site's planner saves them; the reader restores the file on craftquantities.com as a new project. Nothing is stored or sent; no prices.

Input Schema

NameRequiredDescriptionDefault
nameNoThe new project's name.
planYesOne planned space, or a planned project of spaces and a roof.
detailNofull (the default): the whole answer. summary: the result lines, the citation line and the page only — fewer tokens to read.full
systemNoThe unit system inputs left out open in, and the one the page link opens in. The answer comes in both.metric

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "drawing": {
      -        "properties": {
      -          "carried": {
      -            "type": "boolean"
      -          },
      -          "note": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "carried"
      -        ],
      -        "type": "object"
      -      },
      -      "engine": {
      -        "type": "object"
      -      },
      -      "file": {
      -        "properties": {
      -          "content": {
      -            "properties": {
      -              "exportedAt": {
      -                "type": "string"
      -              },
      -              "magic": {
      -                "const": "craftquantities.backup"
      -              },
      -              "stores": {
      -                "type": "object"
      -              },
      -              "v": {
      -                "type": "integer"
      -              }
      -            },
      -            "required": [
      -              "magic",
      -              "v",
      -              "exportedAt",
      -              "stores"
      -            ],
      -            "type": "object"
      -          },
      -          "filename": {
      -            "type": "string"
      -          },
      -          "mediaType": {
      -            "const": "application/json"
      -          }
      -        },
      -        "required": [
      -          "filename",
      -          "mediaType",
      -          "content"
      -        ],
      -        "type": "object"
      -      },
      -      "howToImport": {
      -        "type": "string"
      -      },
      -      "licence": {
      -        "properties": {
      -          "attribution": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "url": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "name",
      -          "url",
      -          "attribution"
      -        ],
      -        "type": "object"
      -      },
      -      "notice": {
      -        "type": "string"
      -      },
      -      "project": {
      -        "properties": {
      -          "lines": {
      -            "items": {
      -              "required": [
      -                "label",
      -                "quantity",
      -                "unit",
      -                "from"
      -              ],
      -              "type": "object"
      -            },
      -            "type": "array"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "system": {
      -            "enum": [
      -              "metric",
      -              "imperial"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "name",
      -          "system",
      -          "lines"
      -        ],
      -        "type": "object"
      -      }
      -    },
      -    "required": [
      -      "engine",
      -      "file",
      -      "project",
      -      "howToImport",
      -      "licence",
      -      "notice"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "properties": {
      -      "citation": {
      -        "description": "The one citation line, built from the answer's own data.",
      -        "type": "string"
      -      },
      -      "detail": {
      -        "const": "summary"
      -      },
      -      "lines": {
      -        "description": "The result lines, as the report's table gives them.",
      -        "items": {
      -          "additionalProperties": {
      -            "type": "string"
      -          },
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "more": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "notes": {
      -        "description": "What a professional must decide, when to call one, a false-friend warning, that adoption is local: kept in every summary.",
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "open": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "title": {
      -        "type": "string"
      -      },
      -      "tool": {
      -        "type": "string"
      -      },
      -      "url": {
      -        "anyOf": [
      -          {
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      }
      -    },
      -    "required": [
      -      "detail",
      -      "tool",
      -      "title",
      -      "lines",
      -      "notes",
      -      "citation",
      -      "url",
      -      "open",
      -      "more"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "drawing": {
      +        "properties": {
      +          "carried": {
      +            "type": "boolean"
      +          },
      +          "note": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "carried"
      +        ],
      +        "type": "object"
      +      },
      +      "engine": {
      +        "type": "object"
      +      },
      +      "file": {
      +        "properties": {
      +          "content": {
      +            "properties": {
      +              "exportedAt": {
      +                "type": "string"
      +              },
      +              "magic": {
      +                "const": "craftquantities.backup"
      +              },
      +              "stores": {
      +                "type": "object"
      +              },
      +              "v": {
      +                "type": "integer"
      +              }
      +            },
      +            "required": [
      +              "magic",
      +              "v",
      +              "exportedAt",
      +              "stores"
      +            ],
      +            "type": "object"
      +          },
      +          "filename": {
      +            "type": "string"
      +          },
      +          "mediaType": {
      +            "const": "application/json"
      +          }
      +        },
      +        "required": [
      +          "filename",
      +          "mediaType",
      +          "content"
      +        ],
      +        "type": "object"
      +      },
      +      "howToImport": {
      +        "type": "string"
      +      },
      +      "licence": {
      +        "properties": {
      +          "attribution": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "url",
      +          "attribution"
      +        ],
      +        "type": "object"
      +      },
      +      "notice": {
      +        "type": "string"
      +      },
      +      "project": {
      +        "properties": {
      +          "lines": {
      +            "items": {
      +              "required": [
      +                "label",
      +                "quantity",
      +                "unit",
      +                "from"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "system": {
      +            "enum": [
      +              "metric",
      +              "imperial"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "system",
      +          "lines"
      +        ],
      +        "type": "object"
      +      },
      +      "state": {
      +        "properties": {
      +          "characters": {
      +            "type": "integer"
      +          },
      +          "format": {
      +            "description": "The token's format and version.",
      +            "type": "string"
      +          },
      +          "link": {
      +            "description": "Opens the project on the site from the token, carried in the address fragment, which a browser does not send to any server.",
      +            "type": "string"
      +          },
      +          "note": {
      +            "type": "string"
      +          },
      +          "token": {
      +            "anyOf": [
      +              {
      +                "description": "The project's inputs, deflated and base64url-encoded with a format version and a CRC-32 check (cqp1.…). Compact, not encrypted: anyone who has it can read it.",
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ]
      +          }
      +        },
      +        "required": [
      +          "token",
      +          "format",
      +          "note"
      +        ],
      +        "type": "object"
      +      }
      +    },
      +    "required": [
      +      "engine",
      +      "file",
      +      "project",
      +      "howToImport",
      +      "licence",
      +      "notice"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "properties": {
      +      "citation": {
      +        "description": "The one citation line, built from the answer's own data.",
      +        "type": "string"
      +      },
      +      "detail": {
      +        "const": "summary"
      +      },
      +      "lines": {
      +        "description": "The result lines, as the report's table gives them.",
      +        "items": {
      +          "additionalProperties": {
      +            "type": "string"
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "more": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "notes": {
      +        "description": "What a professional must decide, when to call one, a false-friend warning, that adoption is local: kept in every summary.",
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "open": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "title": {
      +        "type": "string"
      +      },
      +      "tool": {
      +        "type": "string"
      +      },
      +      "url": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "detail",
      +      "tool",
      +      "title",
      +      "lines",
      +      "notes",
      +      "citation",
      +      "url",
      +      "open",
      +      "more"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Added

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description usefully reinforces this with the non-obvious 'Nothing is stored or sent; no prices', which resolves the apparent tension between a verb like 'Creates' and a read-only hint. It adds real behavioral context beyond the annotations, though it does not describe the returned file/response shape.

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?

Three tight sentences, front-loaded with the action and the plan-shape scoping; no filler. The clause about 'the site's planner saves them' is slightly roundabout but still informative.

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 a rich input schema (100% coverage), an output schema, and strong annotations, the description supplies what structured fields cannot: the side-effect profile and the downstream purpose of the file. Missing only the tool-selection guidance that would make it fully self-sufficient.

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 100%, so the baseline is 3. The description's 'one planned space, or several spaces and a roof' mirrors what the schema already states for the 'plan' parameter and adds no format or unit details beyond it.

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?

States a specific verb ('Creates') and resource ('one My Project backup file') plus the input source ('from a room plan'), which is exactly what distinguishes it from create_project_file_from_calculations, _from_drawing, _from_house and _from_takeoffs. It also characterizes the plan shape (one space, or several spaces and a roof). It never explicitly names those siblings, so it falls short of a full 5.

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 never says when to choose this over the other 'create_project_file_from_*' tools or any sibling; there is no when/when-not guidance and no prerequisites. It explains what the output does downstream but leaves tool selection entirely to inference from the name.

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.

Resources