Skip to main content
Glama

Compare artifact versions

artifact_version_diff
Read-onlyIdempotent

Read a complete text or CSV version diff, as GET /v0/diffs: versionId (by its own id), or artifactId alone (its current version), against the version before it; with fromVersionId (a version of the same artifact, not later), everything the versions from fromVersionId on changed, against the version before fromVersionId; with baseVersionId instead (a version of the same artifact, not later), against that version itself, as a draft artifact compares with its base (task_get latestRound.draft.artifacts[].base.versionId). Large diffs use a hash-guarded resource; deleting the base version invalidates continuations.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "artifact_version_diff"
  }
}

Input Schema

NameRequiredDescriptionDefault
versionIdNoThe version to diff, by its own id. Not with artifactId.
artifactIdNoThe artifact whose current version to diff: its id, alias or page URL. Not with versionId.
baseVersionIdNoDiff against this version (of the same artifact, not later): a draft artifact against its base, the version a review round names. Not with fromVersionId.
fromVersionIdNoDiff the range: every change from this version (of the same artifact, not later) up to the diffed one, against the version before it. Not with baseVersionId.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / baseVersionId
      Added value: +{
      +  "description": "Diff against this version (of the same artifact, not later): a draft artifact against its base, the version a review round names. Not with fromVersionId.",
      +  "format": "uuid",
      +  "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      +  "type": "string"
      +}
    • changedInput schema / properties / fromVersionId / description
      Previous value: -"Diff the range: every change from this version (of the same artifact, not later) up to the diffed one, against the version before it."New value: +"Diff the range: every change from this version (of the same artifact, not later) up to the diffed one, against the version before it. Not with baseVersionId."
  2. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely useful behavior the annotations lack: large diffs use a hash-guarded resource and deleting the base version invalidates continuations. It stops short of describing pagination or continuation handling in depth.

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?

Front-loaded and information-dense, but delivered as a single semicolon-chained run-on sentence that is difficult to parse. The content earns its place, but structure and scannability suffer.

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?

Output schema exists, so return values need not be described, and all four parameters are covered. Combined with annotations and the mode semantics, an agent has everything needed to invoke correctly.

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 and the schema already documents each parameter. The description nevertheless adds value by framing the parameters as three named modes and giving the practical base-relative recipe (task_get latestRound.draft.artifacts[].base.versionId), which the schema does not.

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 and resource ('Read a complete text or CSV version diff') and enumerates the three distinct diffing modes keyed to different parameter combinations. An agent can distinguish this from artifact_versions or artifact_get_content without opening the 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 maps each mode to its trigger: versionId/artifactId for a plain prior-version diff, fromVersionId for a range, baseVersionId for base-relative comparison including the draft-base workflow. Mutual exclusivity is stated inline ('not with fromVersionId').

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.