Skip to main content
Glama

Set project origin

set_project_origin
Idempotent

Sets project origin, TrueNorth, georeference or site location. Only origin moves elements, every one in the world: PLAN_REQUIRED gives the plan_id to run. georeference changes the one IfcMapConversion; where the file has none, it creates one with an IfcProjectedCRS in metres when epsg, eastings, northings and orthogonal_height are all named. site sets RefLatitude/RefLongitude (decimal degrees) and RefElevation of one IfcSite. New revision, effect report. A call that succeeds is not a job that's done.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "set_project_origin"
  }
}

Input Schema

NameRequiredDescriptionDefault
noteNoYour note, stored with the new revision
siteNoIfcSite location
originNoPoint in current coordinates that becomes the new origin (0,0,0)
sourceNoWhere the values you write come from: assumption (default, your own estimate, stamped in the file) or user (only what the person named word for word; it then reads as the file does)
dry_runNoPreview: the planned effect and a plan_id, nothing written
plan_idNoExecute exactly the plan a dry_run returned, all or nothing; the plan holds target and fields. Plans that clone the same shared object (type, material) run one after the other: plan the second after the first ran, else PLAN_CHANGED
request_idNoYour id for this call: a repeat answers the first result and writes nothing
georeferenceNoIfcMapConversion values, in the map unit of its CRS
expect_beyondNoWith plan_id: how many elements the plan reaches beyond those named (n_beyond of PLAN_REQUIRED or the dry_run)
true_north_degNoTrueNorth angle, counter-clockwise from +Y

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing side effects: 'New revision, effect report', whole-model scope for origin ('every one in the world'), creation of an IfcProjectedCRS when the file has no map conversion, and the all-or-nothing plan semantics. 'A call that succeeds is not a job that's done' hints at asynchronous completion but is too cryptic to be actionable. Nothing contradicts readOnlyHint=false, idempotentHint=true, or destructiveHint=false.

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

Conciseness3/5

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

Every clause carries information and the purpose leads, but the prose is telegraphic to the point of strain: dropped articles, semicolon-chained conditionals, and a closing line ('A call that succeeds is not a job that's done') that reads as aphorism rather than instruction. Density is high; parseability on first read is not.

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?

For a 10-parameter, nested-object mutation tool with no output schema, the description covers the mode semantics, the dry_run/plan_id lifecycle, revision creation, and conflict codes (PLAN_REQUIRED, PLAN_CHANGED). Gaps are minor: the effect report's shape is not characterized, and true_north_deg's relationship to the origin mode is not stated.

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?

With 100% schema coverage the baseline is 3, and the description earns above that by adding cross-parameter conditions the schema cannot express: georeference only creates an IfcMapConversion when epsg, eastings, northings and orthogonal_height are all named, and it works 'in the map unit of its CRS'. It also ties plan_id back to the PLAN_REQUIRED/dry_run output. true_north_deg and expect_beyond get only glancing coverage.

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?

Opens with a specific verb and resource and then enumerates the four distinct modes (origin, TrueNorth, georeference, site) with what each one actually touches: 'origin moves elements, every one in the world', 'georeference changes the one IfcMapConversion', 'site sets RefLatitude/RefLongitude ... of one IfcSite'. That is far more than a restatement of the name. It stops short of naming a sibling tool to describe against (e.g. move_elements), so mode switching is clear but tool selection is left partly to inference.

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 plan workflow is spelled out: 'PLAN_REQUIRED gives the plan_id to run', and plan_id 'Execute exactly the plan a dry_run returned, all or nothing'. It also sets ordering constraints for clone plans ('plan the second after the first ran, else PLAN_CHANGED'). What is missing is explicit when-not guidance, e.g. when to use this instead of move_elements for repositioning geometry.

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