Skip to main content
Glama

add_dependency

Adds one dependency (arrow) between two existing org blocks. Type 'business' (the default, dashed unless style says otherwise) is a business relation between two blocks, whether or not one is the parent of the other: an ownership share (a stake of any size, including a stake held by a parent in its own child), a lease, a service. Type 'structural' (solid) is a hierarchy link; parent/child arrows are created automatically by add_cell (with parentId) and move_cell, so a hand-made structural arrow is only needed where those do not apply: typically a parent in 'hat' mode, whose children are root blocks without parentId. Not for the relations between ERD fields (add_relation) nor for the flows of arch/process/journey/captable diagrams (connect_kind_nodes). REFUSED, nothing written, when the id already exists, when fromId equals toId, or when either block is unknown. Per-arrow appearance: style, animated, color (ColorKey), strokeWidth, fromAnchor/toAnchor. shares (default 0) is the ownership percentage the arrow carries: the group ownership look-through (compute_group_ownership) reads it on 'business' arrows only, and ignores a value that is zero, negative or greater than one hundred (the percentage is then read from the label). An existing arrow is changed with update_dependency (type included) and removed with delete_dependency.

Input Schema

NameRequiredDescriptionDefault
idYesUnique ID (e.g. 'dep-coretech-aaas')
toIdYesID of the destination block
typeNobusiness = dashed business arrow, structural = solid hierarchy
colorNoStroke color (ColorKey palette)
labelNoText on the arrow
styleNo
fromIdYesID of the source block
sharesNoOwnership percentage carried by the arrow (default 0); read by compute_group_ownership on 'business' arrows only, a value that is zero, negative or greater than one hundred being ignored
animatedNoEnables the 'dash flow' animation on the arrow
toAnchorNoDestination anchor point
fromAnchorNoSource anchor point
strokeWidthNoStroke width in px (≈ 0.5 to 8)
expectedProjectIdNoUUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / shares / description
      Previous value: -"Sharing percentage (for cascades)"New value: +"Ownership percentage carried by the arrow (default 0); read by compute_group_ownership on 'business' arrows only, a value that is zero, negative or greater than one hundred being ignored"
  2. Changed12 schema fields changed
    • changedInput schema / properties / animated / description
      Previous value: -"Active l'animation 'flux de tirets' sur la flèche"New value: +"Enables the 'dash flow' animation on the arrow"
    • changedInput schema / properties / color / description
      Previous value: -"Couleur du trait (palette ColorKey)"New value: +"Stroke color (ColorKey palette)"
    • changedInput schema / properties / expectedProjectId / description
      Previous value: -"UUID du projet visé par CET appel. Cible RÉELLEMENT ce projet au lieu du projet de session. Refusé sans rien modifier si l'accès n'est pas accordé."New value: +"UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted."
    • changedInput schema / properties / fromAnchor / description
      Previous value: -"Point d'ancrage source"New value: +"Source anchor point"
    • changedInput schema / properties / fromId / description
      Previous value: -"ID de la cellule source"New value: +"ID of the source block"
    • changedInput schema / properties / id / description
      Previous value: -"ID unique (ex: 'dep-coretech-aaas')"New value: +"Unique ID (e.g. 'dep-coretech-aaas')"
    • changedInput schema / properties / label / description
      Previous value: -"Texte sur la flèche"New value: +"Text on the arrow"
    • changedInput schema / properties / shares / description
      Previous value: -"Pourcentage de partage (pour cascades)"New value: +"Sharing percentage (for cascades)"
    • changedInput schema / properties / strokeWidth / description
      Previous value: -"Épaisseur du trait en px (≈ 0.5 à 8)"New value: +"Stroke width in px (≈ 0.5 to 8)"
    • changedInput schema / properties / toAnchor / description
      Previous value: -"Point d'ancrage destination"New value: +"Destination anchor point"
    • changedInput schema / properties / toId / description
      Previous value: -"ID de la cellule destination"New value: +"ID of the destination block"
    • changedInput schema / properties / type / description
      Previous value: -"business = flèche tiretée métier, structural = hiérarchie solide"New value: +"business = dashed business arrow, structural = solid hierarchy"
  3. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, and the description adds substantial context beyond them: three explicit refusal conditions (duplicate id, fromId==toId, unknown block) with 'nothing written', and the downstream effect of `shares` on compute_group_ownership with the ignored-value rules. It does not state what a successful response returns, but with no output schema that is a minor gap for a create tool.

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?

Purpose and the primary type distinction are front-loaded, and the later clauses on refusals and alternatives each carry decision-relevant information. The single dense paragraph duplicates the `shares` rules already present in the schema and would read better split into type/refusal/related-tool segments, but there is little true filler.

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 13-parameter mutation tool with no output schema in a domain-specific org-chart model, the description supplies the semantics an agent cannot infer: type meanings, automatic-creation paths, refusal behavior, and which sibling to use instead. The omission of `expectedProjectId`'s project-targeting behavior is the main remaining hole.

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 92%, so the schema already documents nearly every parameter, including the `shares` look-through rules that the description largely repeats. The genuine additions are conceptual: what 'business' vs 'structural' actually mean and how `style` interacts with the default dashed rendering. `expectedProjectId`, the only cross-project switching parameter, is not mentioned at all.

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?

"Adds one dependency (arrow) between two existing org blocks" states a specific verb, resource, cardinality and scope. It immediately differentiates from the nearest lookalikes by naming add_relation (ERD field relations) and connect_kind_nodes (arch/process/journey/captable flows) as out of scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance on which of the two types to use and when: 'business' for ownership/lease/service relations including parent-to-child stakes, 'structural' only where add_cell (parentId) and move_cell do not apply, e.g. hat-mode parents. It also names the alternatives (add_relation, connect_kind_nodes, update_dependency, delete_dependency) with the conditions that select them.

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.