Skip to main content
Glama

link_project_to_cell

Destructive

Links ANOTHER OrgGen project to a block of this project — without copying it. The block then shows a chip and lets you DIVE, INLINE on the canvas, into the linked project. Fits when a subject of this schema is handled in depth in a separate project (distinct rights and lifecycle): the content stays where it is, so its changes are visible here immediately, and its owner does not need access to this project. Requires access to the target — a role on the WHOLE project, OR a block shared with you (in this second case, the dive will show ONLY your shared subtree, not the rest of the target project). ⚠️ The INLINE dive opens FULL EDITING of the scene — moving a card (position), opening its configuration panel, modifying or deleting its content — as soon as you hold a real write right on the target (a role that writes, access NOT bounded to a block, no write lock set, link NOT pinned to a version); otherwise it is read-only and editing — position AS WELL AS content — requires opening that project directly (Ctrl/Cmd-click on the chip, or its URL). ⚠️ This is NOT create_nested_project, which CREATES a new, empty project before linking it: here the target project ALREADY exists, and nothing is created. The link can be FLOATING (follows the latest version of the target, the default behavior) or PINNED to a precise numbered version via pinnedVersionNumber — see that parameter. ⚠️ THIS LINK ONLY OPENS ACCESS TO THE OTHER COLLABORATORS OF THIS HOST (sharing cascade) when the caller holds a GOVERNING ROLE (owner or manager) on that host — otherwise it stays usable by the caller alone, and the response says so (cascadeEligible: false). A mere editor or a shared block is enough to set the link, and not to open it to everyone.

Input Schema

NameRequiredDescriptionDefault
labelYesThe label of the link, in the user's language, as it will be shown on the card (e.g. « Architecture cible AWS »). ⚠️ It is YOUR text, not the name of the target project copied over: the live name of the target is resolved at display time, and nothing about the target is stored here.
cellIdYesThe id of the block of THIS project that will carry the link.
projectIdYesThe UUID of the OrgGen project to link. READ access to that project is required: without it the link could not resolve for anyone, and the call is refused. It cannot be the current project.
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.
pinnedVersionNumberNoPins the link to a numbered version of the target project, or leaves it FLOATING. OMITTED = current behavior, floating, no change. `null` = floating CHOSEN explicitly. An integer = pinned to THAT version — it must exist on the target side (checked), otherwise the call is refused and nothing is written.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / cellId / description
      Previous value: -"L'identifiant du bloc de CE projet qui portera le rattachement."New value: +"The id of the block of THIS project that will carry the link."
    • 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 / label / description
      Previous value: -"Le libellé du rattachement, EN FRANÇAIS, tel qu'il s'affichera sur la carte (ex : « Architecture cible AWS »). ⚠️ C'est TON texte, pas le nom du projet cible recopié : le nom vivant de la cible est résolu à l’affichage, et rien de la cible n'est enregistré ici."New value: +"The label of the link, in the user's language, as it will be shown on the card (e.g. « Architecture cible AWS »). ⚠️ It is YOUR text, not the name of the target project copied over: the live name of the target is resolved at display time, and nothing about the target is stored here."
    • changedInput schema / properties / pinnedVersionNumber / description
      Previous value: -"Fige le lien sur une version numérotée du projet cible, ou le laisse FLOTTANT. OMIS = comportement actuel, flottant, aucun changement. `null` = flottant CHOISI explicitement. Un entier = épinglé sur CETTE version — elle doit exister côté cible (vérifiée), sinon l'appel est refusé sans rien écrire."New value: +"Pins the link to a numbered version of the target project, or leaves it FLOATING. OMITTED = current behavior, floating, no change. `null` = floating CHOSEN explicitly. An integer = pinned to THAT version — it must exist on the target side (checked), otherwise the call is refused and nothing is written."
    • changedInput schema / properties / projectId / description
      Previous value: -"L'UUID du projet OrgGen à rattacher. Un accès en LECTURE à ce projet est requis : sans cela le lien ne pourrait se résoudre pour personne, et l'appel est refusé. Ce ne peut pas être le projet courant."New value: +"The UUID of the OrgGen project to link. READ access to that project is required: without it the link could not resolve for anyone, and the call is refused. It cannot be the current project."
  2. Changed1 schema field changed
    • changedInput schema / properties / projectId / description
      Previous value: -"L'UUID du projet OrgGen à rattacher. Tu dois y avoir accès en LECTURE : sans cela le lien ne pourrait se résoudre pour personne, et l'appel est refusé. Ce ne peut pas être le projet courant."New value: +"L'UUID du projet OrgGen à rattacher. Un accès en LECTURE à ce projet est requis : sans cela le lien ne pourrait se résoudre pour personne, et l'appel est refusé. Ce ne peut pas être le projet courant."
  3. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only supply destructiveHint=true/readOnlyHint=false; the description adds substantial context the annotations cannot: conditional full editing via the inline dive, read-only fallback, cascade eligibility tied to a governing role, and the response flag cascadeEligible: false. It never addresses the destructive side the annotation implies — what happens to an existing link on the cell when this is called (replace? refuse?) is unstated, which is the main remaining gap.

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 purpose and the create_nested_project contrast are front-loaded, which is good. But the text is very long, uses emoji warning banners and heavy capitalization, and buries the cascade rule at the end; several clauses restate the same 'content stays where it is' idea.

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?

With no output schema, the description usefully names a response field (cascadeEligible) and explains both refusal conditions (no target access, non-existent pinned version). What it omits is the mutation contract an agent most needs for a destructiveHint=true tool: the effect on a pre-existing link and reversibility via unlink_project_from_cell.

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 baseline is 3. The description only reinforces the floating-vs-pinned default for pinnedVersionNumber, which the schema already states verbatim ('OMITTED = current behavior, floating'). expectedProjectId is not mentioned at all in the description.

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?

States a specific verb+resource: linking another OrgGen project to a block of this project, explicitly 'without copying it'. It also distinguishes itself by name from create_nested_project (which creates) and implicitly from fork_linked_project and unlink_project_from_cell, which an agent can act on without opening another schema.

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?

'Fits when a subject of this schema is handled in depth in a separate project (distinct rights and lifecycle)' gives a concrete selection criterion, and the create_nested_project contrast states when NOT to use this tool. Access prerequisites (role on the whole project or a shared block) are spelled out before the call.

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.