Skip to main content
Glama

update_dependency

DestructiveIdempotent

Change an existing task dependency's type or lag in place; the link keeps its id. Address it by its row id (dependencyId, from list_dependencies or from the error link_dependency returns when the pair is already linked), or by the two task ids it joins (predecessorId + successorId) when exactly one link joins them. Pass type (FINISH_TO_START, START_TO_START, FINISH_TO_FINISH, START_TO_FINISH), lag, or both; a field left out keeps its value. Lag is in lagUnit, days by default, or hours or minutes for a finer lag; negative values are lead time. Requires the project-level dependency.manage permission on the successor's project, as linking does. A type the pair already holds is refused, since one pair holds each type at most once. When the values sent are already the link's the call succeeds with changed: false and writes nothing. Otherwise the successor and the tasks after it are rescheduled, and rescheduled counts them; in a project with automatic scheduling off it is 0 and the response carries autoScheduleOff: true. previous holds the type and lag the edit replaced. No plan gate.

Input Schema

NameRequiredDescriptionDefault
lagNoThe new lag in lagUnit. Left out: unchanged. Negative for lead time.
typeNoThe new link type. Left out: unchanged.
lagUnitNoUnit for lag: days (default), hours, or minutes. Only with lag.
successorIdNoSuccessor task id. Use WITH predecessorId instead of dependencyId.
dependencyIdNoTaskDependency row id from list_dependencies.
predecessorIdNoPredecessor task id. Use WITH successorId instead of dependencyId.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds concrete substance behind both: the successor and downstream tasks are rescheduled, rescheduled counts them, autoScheduleOff: true when automatic scheduling is off, and identical values yield changed: false with no write. It also discloses the required dependency.manage permission on the successor's project and the absence of a plan gate.

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?

Front-loads the mutation and identity-preservation fact, then parameter rules, then side effects and response shape. Dense and mostly waste-free, though the sentence on refusal/idempotency and the response fields could be tightened without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers addressing, permissions, defaults, refusal semantics, idempotency, rescheduling side effects, and the response fields (rescheduled, autoScheduleOff, previous) even though no output schema exists. An agent has everything needed to call this correctly and anticipate the outcome.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds real meaning: omitted fields retain values, lagUnit defaults to days, negative lag is lead time, and the two addressing modes (dependencyId vs predecessorId+successorId, valid only when exactly one link joins them) are mutually exclusive. This goes beyond the schema text.

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+scope: 'Change an existing task dependency's type or lag in place; the link keeps its id.' This cleanly distinguishes it from link_dependency (create) and unlink_dependency (remove), which an agent can select among without opening a 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?

Explicitly names the alternative creation path ('as linking does'), tells the agent where the identifiers come from (list_dependencies, or the error link_dependency returns), gives a fallback addressing mode, and states a when-not condition ('A type the pair already holds is refused'). Nothing is left to inference.

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.