Skip to main content
Glama

patch_project_graph

DestructiveIdempotent

Apply a bounded delta to the published graph: upserts and removals against one expected version. Removing a node detaches its edges; the result reports exactly what was applied. The publishing agent must manually write the four plain-language changeNarrative sections.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
projectIdYesOwned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.
sessionIdNoOwned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL.
upsertEdgesYes
upsertNodesYes
removeEdgeIdsYes
removeNodeIdsYes
idempotencyKeyYesCaller-generated retry key. Reuse the same key and identical payload only to retry the same mutation; use a new key for a new action.
mappedRevisionNo
changeNarrativeYes
expectedProjectVersionYesCurrent hosted project version from get_project_status; guards against overwriting a newer graph publication.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / expectedProjectVersion / description
      Added value: +"Current hosted project version from get_project_status; guards against overwriting a newer graph publication."
    • addedInput schema / properties / idempotencyKey / description
      Added value: +"Caller-generated retry key. Reuse the same key and identical payload only to retry the same mutation; use a new key for a new action."
    • addedInput schema / properties / projectId / description
      Added value: +"Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL."
    • addedInput schema / properties / sessionId / description
      Added value: +"Owned project ID returned by list_linked_projects or map_project; do not use a local path or repository URL."
  2. First observed

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true, and readOnlyHint=false, so the safety profile is covered. The description adds genuinely non-derived behavior: node removal cascades to detach edges, and the result reports exactly what was applied. It does not, however, say what happens on a version mismatch, which is the main behavioral unknown for an optimistic-concurrency patch.

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

Conciseness5/5

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

Three sentences, all front-loaded and all earning their place: scope, then destructive cascade behavior, then the response report, then the narrative obligation. No repetition of annotation or title content.

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 high-stakes mutation tool with no output schema, the description compensates well by describing the result ('reports exactly what was applied') and the cascade behavior. The remaining gap is the failure mode on version conflict and the size/limit semantics of the large upsert arrays.

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 only 40% across 10 params, so the description must carry more weight. It clarifies that upserts create-or-update, that removals detach edges, that the version parameter bounds the patch to one expected version, and that changeNarrative has four required plain-language sections — but it says nothing about the many undocumented nested node/edge fields (type, label, status, tags, parentId), leaving the bulk of the payload semantics to 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?

States a specific verb and resource ('Apply a bounded delta to the published graph') and the scope of the operation (upserts and removals against one expected version). That distinguishes it in kind from the full-graph siblings publish_project_graph, clear_project_graph, and validate_project_graph, though none are named explicitly.

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?

Usage is implied rather than stated: 'a bounded delta to the published graph ... against one expected version' tells the agent this is the incremental-edit path rather than a full publication, but it never names alternatives or the conditions that should route the agent elsewhere.

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