Skip to main content
Glama

Set relation

set_relation
DestructiveIdempotent

Sets or removes one relation of each named object (guid; guids or a set from find_elements: several to the same to, one revision), named by its inverse attribute on the guid side (ContainedInStructure, IsTypedBy, Decomposes, Nests, ReferencedInStructures, ConnectedTo, AssignedToGroups, ProvidesBoundaries; ports, coverings, systems, assignments, structural and process links: get_guide topic relations names every key with both roles). Cardinality comes from the schema: a new ContainedInStructure replaces the old one, and the report names both. ConnectedTo is written only where both touch; two walls become IfcRelConnectsPathElements with the ends measured, never named. New revision, effect report. A call that succeeds is not a job that's done.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "relation": "<relation>"
    },
    "name": "set_relation"
  }
}

Input Schema

NameRequiredDescriptionDefault
toNoThe other end (GlobalId; storeys also by Name); its role per key: get_guide topic relations
setNoA set id from find_elements or get_selection: writes exactly the elements seen there, nothing that matches later. An element changed since reading is rejected alone; the others are written
guidNoThe object whose relation changes; for AssignedToGroups also a space or a group; keys from the relations guide take any object, node or type their slot admits
noteNoYour note, stored with the new revision
guidsNoThese objects; an executor refusal for one writes none
removeNoRemove the relation to `to` instead of setting it
dry_runNoPreview: the planned effect and its checks, nothing written
boundaryNoProvidesBoundaries: required, stated, never derived; to is the IfcSpace
relationYesInverse attribute
realizingNoRealizingElements: the elements that realize the connection (guid relating, to related), required to set, on remove the set to match
request_idNoYour id for this call: a repeat answers the first result and writes nothing
expect_countNoWith set: how many elements the set holds - guards against a mixed-up set id
connection_typeNoRealizingElements: its ConnectionType label, as stated

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.8/5.0
Behavior5/5

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

Beyond annotations, the description discloses important behavior: cardinality replacement for ContainedInStructure, reporting both sides, ConnectedTo only where objects touch, creation of IfcRelConnectsPathElements for walls, new revisions, and effect reports. It also signals that a successful call is not necessarily the end of the workflow, which is valuable for a destructive mutation tool.

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?

The description is front-loaded with the core action, but it is written as a dense paragraph with long parentheticals and semicolon-separated jargon. The final sentence, "A call that succeeds is not a job that's done", is vague and less actionable than the preceding technical details.

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 complex 13-parameter destructive relation editor with nested boundary data and no output schema, the description covers key special cases and defers relation naming to get_guide. It is fairly complete, though the "effect report" contents and post-call verification workflow remain somewhat under-specified.

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 schema already explains all parameters in detail. The description adds useful high-level context about relation keys, roles, and cardinality, but it largely repeats or references information already present in the schema.

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 opens with a specific verb and resource: "Sets or removes one relation of each named object", then identifies the relation by inverse attribute. It is clear that this edits IFC relationships rather than properties or geometry, though the dense IFC terminology and lack of an explicit sibling contrast keep it from being maximally crisp.

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?

It points the agent to "get_guide topic relations" for relation keys and roles, and gives special-case guidance for ConnectedTo and ProvidesBoundaries. However, it does not explicitly say when to choose this over set_properties or when not to use it, so usage is mostly implied.

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