Skip to main content
Glama
hjamet

doc-version-mcp

by hjamet

πŸ“„ doc-version-mcp

Python 3.10+ FastMCP License: MIT

FastMCP Server for Document Versioning, Content-Addressable Storage (CAS), AST Diffs, and AI-Compliance Auditing.

doc-version-mcp provides a robust, local-first document versioning engine built on top of the Model Context Protocol (MCP). It brings Git-like precision to LLM agents and human authors without cluttering Git commit histories, offering deterministic snapshots, word-level differential AST projections, and collaborative safety rails.


⚑ Quick Start (Windows PowerShell One-Liner)

Install and configure doc-version-mcp automatically with a single command in PowerShell:

irm https://raw.githubusercontent.com/hjamet/doc-version-mcp/main/install.ps1 | iex

The installer automatically:

  1. Detects or creates the target directory (~/Documents/code/doc-version-mcp).

  2. Configures a dedicated Python virtual environment (.venv) with all dependencies.

  3. Initializes the Content-Addressable Storage (CAS) hierarchy at ~/.gemini/antigravity/cas_commits/.

  4. Registers the server into your Antigravity MCP configuration (mcp_config.json).

  5. Copies metadata schemas and installs command-line wrappers (doc-version.cmd, doc-version.ps1).


Related MCP server: Lians Agent Memory

πŸ›οΈ Architecture & Key Features

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                       LLM Agent / User                      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚  FastMCP Stdio Transport
                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      doc-version-mcp                        β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
β”‚  β”‚   CAS Storage Engine      β”‚ β”‚   AST & Diff Generator   β”‚ β”‚
β”‚  β”‚   - SHA-256 Addressing    β”‚ β”‚   - LaTeX & KaTeX Diffs  β”‚ β”‚
β”‚  β”‚   - zlib Level 9 Compress β”‚ β”‚   - Mode 'paper' & 'draft'β”‚β”‚
β”‚  β”‚   - Isolated Commit Trees β”‚ β”‚   - AI Compliance Auditingβ”‚β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚             Local Storage & Workspace Integrity             β”‚
β”‚   ~/.gemini/antigravity/cas_commits/{commits,objects}/       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
  • Content-Addressable Storage (CAS): Documents are stored as immutable, content-addressed blobs compressed via zlib (level 9) and indexed by SHA-256 hashes, keeping disk overhead minimal.

  • Dual Operational Modes:

    • paper Mode: Tailored for scientific manuscripts (LaTeX and Markdown). Analyzes mathematical environments, AST sections, and evaluates AI-stylometry metrics ($P(\text{AI}) < 0.10$).

    • draft Mode: Dedicated to precision editing of drafts. Audits <XXX> uncertainty placeholders and enforces a strict text retention threshold ($\ge 90%$).

  • Deterministic Collaboration:

    • Seamless upstream synchronization (record_git_pull_event) with automatic stashing (--autostash).

    • Strict preservation of co-author contributions with blocking conflict detection.

    • Zero uncontrolled global rewrites: changes are validated block-by-block.

  • Local-First & Portable: Pure local Python package, independent of cloud services and fully compatible with multi-machine setups.


πŸ› οΈ MCP Tools Reference

doc-version-mcp exposes 6 declarative MCP tools:

Tool Name

Description

Key Parameters

commit_document

Creates a timestamped CAS snapshot of a document on disk or in virtual memory.

target (str, req), message (str, req), author (str, default "agent"), content (str, opt), is_pinned (bool, default False), mode (str, default "paper")

get_diff_artifact

Computes surgical word-level diffs and generates an interactive Markdown artifact in Antigravity Brain.

target (str, req), diff_explanation (str, opt), brain_dir (str, opt), artifact_name (str, opt), mode (str, default "paper"), from_commit_id (str, opt), to_commit_id (str, opt)

restore_commit

Restores a document from a historical CAS commit ID. Supports dry-run preview.

commit_id (str, req), target (str, opt), dry_run (bool, default False)

list_commits

Lists stored CAS commits with timestamps, authors, and metadata.

target (str, opt), limit (int, default 10), mode (str, opt)

prune_commits

Purges expired snapshots based on TTL and disk quota, protecting pinned baselines.

ttl_days (int, default 14), max_size_mb (int, default 500), keep_baselines (bool, default True)

record_git_pull_event

Synchronizes a Git repository via git pull --rebase with autostash and creates an upstream snapshot.

repo_path (str, req), autostash (bool, default True)


πŸ”§ Client Configuration Guide

1. Google Antigravity

Add the server to ~/.gemini/antigravity/mcp_config.json:

{
  "mcpServers": {
    "doc-version": {
      "command": "C:\\Users\\<USER>\\Documents\\code\\doc-version-mcp\\.venv\\Scripts\\doc-version.exe",
      "args": [],
      "env": {
        "SystemRoot": "C:\\Windows",
        "PATH": "%PATH%"
      }
    }
  }
}

2. Claude Desktop

Add to %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "doc-version": {
      "command": "C:\\Users\\<USER>\\Documents\\code\\doc-version-mcp\\.venv\\Scripts\\doc-version.exe",
      "args": []
    }
  }
}

3. Cursor

Configure in .cursor/mcp.json or Global Settings:

{
  "mcpServers": {
    "doc-version": {
      "command": "C:\\Users\\<USER>\\Documents\\code\\doc-version-mcp\\.venv\\Scripts\\doc-version.exe",
      "args": []
    }
  }
}

4. Claude Code CLI

claude mcp add doc-version -- C:\Users\<USER>\Documents\code\doc-version-mcp\.venv\Scripts\doc-version.exe

πŸ’» Local Development & Testing

Installation from Source

# Clone the repository
git clone https://github.com/hjamet/doc-version-mcp.git
cd doc-version-mcp

# Create and activate virtual environment
python -m venv .venv
.\.venv\Scripts\Activate.ps1

# Install in editable mode with development dependencies
pip install --upgrade pip
pip install -e ".[dev]"

Running Test Suite

pytest tests/ -v

Manual Inspection & CLI Run

# Verify FastMCP server entry point
doc-version --help

πŸ“„ License

This project is licensed under the terms of the MIT License.

Available Tools

6 tools
commit_documentCommit DocumentA

CrΓ©e un instantanΓ© horodatΓ© d'un document dans le Content-Addressable Storage (CAS). Supporte les fichiers sur disque et les mΓ©moires virtuelles (drafts sans fichier).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNopaper
authorNoagent
targetYes
contentNo
messageYes
is_pinnedNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden. It discloses that the tool creates a timestamped snapshot and stores it in CAS, and it explains supported input types. It does not mention side effects on the draft/source, immutability, idempotency, or permission requirements, so there are clear gaps.

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?

Two sentences, no filler, with the core action front-loaded and the supported input modes stated explicitly. Every sentence adds meaningful information.

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

Completeness2/5

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

The tool has six parameters, zero schema descriptions, and no annotations, yet the description leaves most parameter semantics unexplained. Output schema existence reduces the need to describe return values, but an agent still lacks essential guidance on how to fill parameters correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain the roles of target, message, mode, author, content, or is_pinned. The mention of disk files and virtual memories hints at how target/content might be used, but it is not enough to compensate for the complete lack of parameter documentation.

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?

The description states a specific action: 'CrΓ©e un instantanΓ© horodatΓ© d'un document dans le CAS', identifying both the resource (document) and storage context (Content-Addressable Storage). It also distinguishes this tool from sibling tools like list_commits, restore_commit, and prune_commits by emphasizing creation of a snapshot.

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?

The description gives useful context about when to use the tool: it supports disk files and virtual memories/drafts without a file. However, it does not explicitly state when not to use it or point to an alternative among the sibling tools, leaving selection guidance only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_diff_artifactGet Diff ArtifactB

Génère la vue différentielle chirurgicale AST et produit l'artéfact Markdown Antigravity. Supporte le mode paper (LaTeX/Markdown avec KaTeX) et le mode draft (audit syntaxique balises, rétention >=90%).

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNopaper
targetYes
contentNo
brain_dirNo
to_commit_idNo
artifact_nameNo
from_commit_idNo
diff_explanationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries full behavioral burden. It discloses output type, mode behavior, and a retention threshold. It does not disclose whether artifact generation writes state, requires specific repository context, or has side effects.

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?

Two compact sentences with the main action front-loaded and no filler. Technical jargon ('chirurgicale', 'Antigravity') slightly reduces clarity but not conciseness.

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

Completeness2/5

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

For an 8-parameter, 1-required tool with no annotations and no parameter descriptions, the description covers only modes and output type. The output schema may cover return shape, but input semantics and intended invocation context remain largely incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description only hints at the `mode` values ('paper'/'draft'); the required `target`, plus `content`, `brain_dir`, `to_commit_id`, `from_commit_id`, and `artifact_name`, are left undefined. This is insufficient for a tool with eight parameters.

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?

The description opens with an active verb and concrete resource ('Génère la vue différentielle... AST') and names the produced artifact ('artéfact Markdown Antigravity'). It clearly separates this from sibling commit/list/prune tools, though it never explicitly contrasts with a sibling.

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?

It distinguishes the paper and draft modes with their targets (LaTeX/Markdown with KaTeX vs tag audit/retention >=90%), giving mode-selection guidance. It does not state when to prefer this tool over sibling git-history tools or list prerequisites/exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_commitsList CommitsC

Liste les commits stockΓ©s dans le CAS avec mΓ©tadonnΓ©es d'horodatage et auteur.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
limitNo
targetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals only that commits carry timestamp and author metadata; it does not state whether this is read-only, whether authentication or preconditions are required, how mode/target alter behavior, or what the listing returns. For a tool with zero annotation coverage, this is a significant 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 single sentence is well-formed and front-loads the core action, with no wasted words. However, for a three-parameter tool it is underspecified rather than efficiently concise; brevity here comes at the cost of missing necessary context.

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

Completeness2/5

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

The output schema covers the return format, but all three parameters are undocumented and there are no annotations to fill the gap. mode and target in particular are opaque, leaving an agent unable to invoke the tool meaningfully. Incomplete for a tool of this parameter count.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description explains none of the three parameters (mode, limit, target). The schema only supplies defaults, not semantics, so the agent cannot determine what values to pass. With three undocumented parameters and no compensatory text, this is the weakest dimension.

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 (list commits) plus the storage context (CAS) and what metadata is returned (timestamp, author). It is distinguishable from restore_commit and prune_commits on name alone, though it never explicitly contrasts with commit_document or record_git_pull_event. Clear purpose, minor gap in sibling differentiation.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus the five siblings. There is no mention of when it applies, what scenario routes here, or any exclusions. The presence of siblings like get_diff_artifact and restore_commit makes this omission more consequential.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prune_commitsPrune CommitsA

Purge les snapshots expirés selon le TTL et régule la taille totale sous max_size_mb. Protège les baselines épinglées (is_pinned) si keep_baselines=True.

ParametersJSON Schema
NameRequiredDescriptionDefault
ttl_daysNo
max_size_mbNo
keep_baselinesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses the core destructive behavior (purge) and the conditional protection of pinned baselines, but it does not clarify the selection algorithm for enforcing max_size_mb (e.g., which snapshots are deleted if none are expired) or state that deletion is irreversible. This ambiguity is significant for a destructive tool.

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?

The description is two sentences with no filler. It front-loads the core purpose and then adds a precise condition, making every word count.

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

Completeness3/5

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

For a 3-parameter tool with an output schema, the description covers the main function and parameter roles adequately. However, the underspecified size-overshoot deletion behavior leaves an agent unable to fully predict consequences, and the presence of an output schema does not compensate for that behavioral gap. Overall, the description is usable but not fully complete for a destructive operation.

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 description coverage is 0%, yet the description gives functional meaning to all three parameters: ttl_days relates to TTL-based expiry, max_size_mb to the size cap, and keep_baselines to the protection of pinned baselines. It stops short of explicitly defining TTL in days or the exact behavior when keep_baselines=false, but it provides enough context for an agent to understand parameter roles.

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?

The description states a specific verb ('Purge') and resource ('les snapshots expirΓ©s') with distinct mechanisms (TTL and max_size_mb). It also mentions conditional protection of pinned baselines, clearly differentiating it from sibling tools like list_commits or restore_commit.

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?

The description implies usage for cleanup tasks (pruning expired snapshots and enforcing size limits), but it does not explicitly state when to use this tool vs. alternatives or any exclusions. An agent must infer the intended context from the purpose rather than receiving direct guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

record_git_pull_eventRecord Git Pull EventB

Synchronise un dΓ©pΓ΄t Git via git pull --rebase (--autostash), dΓ©tecte les conflits et enregistre un snapshot CAS horodatΓ© de l'Γ©tat rΓ©cupΓ©rΓ©.

ParametersJSON Schema
NameRequiredDescriptionDefault
autostashNo
repo_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the core actions (pull, detect conflicts, record snapshot) and implies mutability via 'Synchronise', but does not detail side effects, permissions, conflict resolution behavior (only detection), or the nature of the CAS snapshot. It omits important context like what happens on conflict or whether local changes are preserved (though autostash is mentioned, it's not elaborated).

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?

The description is a single sentence that front-loads the primary action (sync via git pull) and then adds details (conflict detection and snapshot recording). It is concise and to the point, though the French wording is dense and could benefit from breaking into two sentences for clarity. It earns high marks for brevity and front-loading.

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

Completeness2/5

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

This is a mutating operation (git pull) with potential side effects, and no annotations are present to cover safety or behavior. The description is brief and does not explain error handling, return values, or what happens when conflicts occur. An output schema exists, which could cover return values, but the description itself does not address completeness for an agent deciding to invoke it safely. Given the complexity and side effects, it is insufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the parameters. It mentions '--autostash' in the command but does not clarify that this maps to the autostash boolean parameter. The repo_path parameter is not described at all. The description fails to compensate for the schema's lack of documentation, leaving agents without sufficient understanding of what each parameter does.

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?

The description clearly states the tool's purpose: it synchronizes a Git repository via git pull --rebase, detects conflicts, and records a timestamped CAS snapshot. This specific verb+resource combination distinguishes it from siblings like commit_document (commit), get_diff_artifact (diff), restore_commit (restore), list_commits (list), and prune_commits (prune). The action is unambiguous.

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?

The description implies usage (when you need to pull and record a snapshot) but provides no explicit when-to-use or when-not-to-use guidance, nor does it mention alternatives or conditions under which another sibling might be preferred. It relies on the obvious distinction from siblings, but lacks explicit routing or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

restore_commitRestore CommitC

Restaure un document depuis son commit ID dans le CAS. Si dry_run=True, prΓ©visualise sans modifier le disque.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNo
dry_runNo
commit_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that dry_run=True previews without modifying the disk, which is useful, but it does not disclose what happens when dry_run=False (e.g., whether it overwrites the current document, whether it is destructive, whether it requires specific permissions). For a restore operation that likely mutates state, this is a significant gap.

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?

The description is very short and front-loaded with the main action. The dry_run clarification is useful and placed second. However, it is so brief that it misses important behavioral details, so it is not maximally effective.

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

Completeness2/5

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

Given the tool has 3 parameters, no annotations, and an output schema, the description should explain the restore behavior, the meaning of target, and the effect of dry_run=False. It only covers dry_run. The output schema exists but the description does not mention what the restore result looks like. This is incomplete for a mutation-capable tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the schema's lack of parameter documentation. The description only explains dry_run's behavior; it does not explain commit_id format, target's purpose, or how they interact. With 3 parameters and zero schema descriptions, this is insufficient.

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?

The description states a specific verb ('restore') and resource ('a document from its commit ID in the CAS'), which clearly identifies the tool's core function. It does not explicitly differentiate from siblings like get_diff_artifact or list_commits, but the restore action is distinct enough that an agent can infer its purpose.

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?

The description implies usage context: restoring a document from a commit ID, with dry_run for previewing. It does not explicitly state when to use this tool versus alternatives like get_diff_artifact or prune_commits, nor does it mention any prerequisites or side effects. The dry_run hint provides some guidance but not full routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedcommit_document
    • First observedget_diff_artifact
    • First observedlist_commits
    • First observedprune_commits
    • First observedrecord_git_pull_event
    • First observedrestore_commit

TDQS

A3.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: git sync, snapshot creation, diff generation, restore, listing, and pruning. No overlapping purposes; descriptions clearly separate responsibilities.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (record_git_pull_event, commit_document, get_diff_artifact, restore_commit, list_commits, prune_commits). Verbs and nouns are clear and predictable.

Tool Count5/5

With 6 tools, the server is well-scoped for a document versioning domain. Each tool covers a core operation without redundancy, striking a balance between minimalism and functionality.

Completeness5/5

The tool surface covers the full lifecycle: create (commit_document), read/restore (restore_commit), list (list_commits), delete (prune_commits), diff (get_diff_artifact), and external integration (record_git_pull_event). No obvious gaps for the stated purpose.

Related MCP Connectors

Related MCP Servers