Skip to main content

Veqtor MCP

Website · Demo · Documentation · PyPI · GitHub Releases

Public technical Alpha: a local MCP server for verifiable DOCX negotiation history and fail-closed tracked-change edits. Supported on macOS and Linux with Python 3.12-3.14.

Veqtor gives MCP-compatible AI clients deterministic tools to inspect a mechanical accepted/current projection of contract wording, read redlines, verify quotations, dry-run complete counterproposal batches, create a new DOCX with real tracked changes, and keep re-checkable local provenance. The model remains the legal-reasoning layer; Veqtor handles document facts and writes.

Veqtor is not legal advice, a generic Word editor, a hosted service, or a tamper-evident audit system. Review the known limitations before using it on a real matter.

This source tree is the release candidate for package 0.4.0 and advertises the nine-tool MCP contract veqtor.mcp.v0.4. All nine candidate tools, including the eight names carried forward from v0.3, report that one contract-wide version; unchanged individual tool schemas do not retain a v0.3 metadata flag. Source, CI, or a development artifact is not publication; only matching public PyPI and immutable GitHub Release entries establish that a version is installable. The immutable public v0.3 release and its MCPB remain a separate eight-tool veqtor.mcp.v0.3 surface. This source tree, CI and candidate artifacts do not themselves establish Desktop or publication acceptance. The closed v0.4 MCPB_REQUIRED_TOOLS inventory contains all nine tools, including trace_paragraph_history.

Before installing, check both the generic PyPI project and the GitHub Releases list, then select one exact version for every command below:

Official state Replace X.Y.Z with
Both sources expose 0.4.0, and the GitHub release contains the complete verified asset set 0.4.0
Otherwise 0.3.0

Do not run the placeholder literally or mix versions within one installation.

Claude Desktop Extension status

veqtor-mcp-X.Y.Z-macos.mcpb is an official public download only when the chosen version appears inside the matching verified immutable vX.Y.Z entry in the live GitHub Releases list with its checksum manifest. Replace the placeholder using the table above. Presence in source, CI, a branch, chat or issue is not publication; if either public verifier is missing v0.4.0, keep using the verified public v0.3.0 extension and never guess a release-asset URL.

Opening an official MCPB requests installation approval and the tracked-change author name. Its first activation may download a compatible Python runtime and locked dependencies. The artifact is checksum-bound by SHA256SUMS.txt, but not digitally signed.

Install a verified published version for Claude Code

Install uv once, replace X.Y.Z using the table above, then register that exact Veqtor version for your user account:

claude mcp add --transport stdio --scope user veqtor -- uvx veqtor-mcp@X.Y.Z

Open a new Claude Code session and verify the registration:

claude mcp get veqtor

--scope user makes the private local registration available to you in every project on this machine. It does not publish the configuration or make Veqtor a network service. To limit Veqtor to the current project instead, use:

claude mcp add --transport stdio --scope local veqtor -- uvx veqtor-mcp@X.Y.Z

For team-managed configuration, Claude Code also supports --scope project, which writes .mcp.json for review and version control. Do not use project scope for secrets or matter-specific paths.

To set the tracked-change author when registering the server:

claude mcp add --transport stdio --scope user veqtor -e VEQTOR_TRACKED_CHANGE_AUTHOR="Your Name" -- uvx veqtor-mcp@X.Y.Z

If unset, the author is Veqtor MCP. The value is fixed when the server starts and cannot be changed by the model per edit.

Run or install from the terminal

Run diagnostics without a persistent installation:

uvx veqtor-mcp@X.Y.Z doctor

For a persistent isolated installation:

uv tool install "veqtor-mcp==X.Y.Z"
"$(uv tool dir --bin)/veqtor-mcp" --version
"$(uv tool dir --bin)/veqtor-mcp" doctor

Using uv tool dir --bin works even before the uv tool directory has been added to the shell PATH. uv tool update-shell can add it for later shells. The versioned wheel and sdist for independent verification are also attached to the matching entry in the generic GitHub Releases list.

Five-minute demo

Create a disposable four-round synthetic negotiation:

uvx --from "veqtor-mcp==X.Y.Z" veqtor-demo-rounds ~/veqtor-demo-rounds

Then ask Claude:

Using the veqtor tools, what happened to the limitation of liability across the rounds in ~/veqtor-demo-rounds?

For a write workflow, ask:

Prepare our counterproposal as round-5-our-counter.docx: restore the 150% affected Work Order liability cap and reinstate the willful misconduct carve-out the counterparty deleted. Verify the wording and preflight the complete batch before applying it.

The expected trust sequence is:

  1. extract the current redlines;
  2. verify every quotation used as evidence;
  3. preflight the complete atomic batch;
  4. apply only when batch_applicable is true — version 0.1.2 reuses the exact edit payload, while contracts veqtor.mcp.v0.2, veqtor.mcp.v0.3, and veqtor.mcp.v0.4 also pass the complete preflight_proof returned by that successful preflight;
  5. re-extract the output and export the decision record.

In MCP contracts veqtor.mcp.v0.2, veqtor.mcp.v0.3, and veqtor.mcp.v0.4, the proof binds the source bytes, canonical edit payload, configured author, producer build and predicted candidate hash so apply can detect drift. It is an unkeyed content binding, not authentication or a digital signature. Version 0.1.2 does not emit or accept this field.

Veqtor never overwrites the source or an existing output file. Use a disposable demo folder for write recordings; a successful write creates a new DOCX and a private .veqtor provenance folder.

Manual Claude Desktop setup

GUI applications may not inherit the shell PATH. First run command -v uvx, then use that absolute path in the macOS Claude Desktop configuration at ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "veqtor": {
      "command": "/absolute/path/to/uvx",
      "args": ["veqtor-mcp@X.Y.Z"],
      "env": {
        "VEQTOR_TRACKED_CHANGE_AUTHOR": "Your Name"
      }
    }
  }
}

Quit Claude Desktop fully and reopen it after changing the executable, version, or environment.

Tool surface

The descriptions below follow release-candidate package 0.4.0 and its nine-tool MCP contract veqtor.mcp.v0.4. They are not an installation promise until both public verifiers expose the version. The current public v0.3 release/MCPB continues to contain only its eight veqtor.mcp.v0.3 tools. For an installed version, use the API file carried by that exact artifact or its matching immutable tag.

  • list_rounds: disclosed lexicographic filename order or a complete explicit ordered_filenames positional manifest; neither is lineage proof.
  • extract_redlines: tracked-change units with hashes, references, bounded paragraph context, conservative manual labels and a revision-inventory partition.
  • inspect_document: bounded outline, literal-search, browse and read views of a mechanical accepted/current projection of main-body text, with every returned paragraph bound to the exact file bytes. This reading mode does not decide which wording has legal effect.
  • map_rounds: a bounded seed-centred map of recorded document-byte derivation, complete exact paragraph equality, navigation candidates and explicit unresolved/ambiguous states. It does not infer chronology, lineage, deletion or restoration.
  • trace_paragraph_history: immutable capture of a complete direct-DOCX set and a seed-first, paginated backward trace of one selected paragraph using only exact current or rejected-pending projection equality. Selected rows include paragraph-scoped change units; literal author/date metadata remains explicitly unverified.
  • preflight_edits: the complete apply pipeline as an in-memory dry-run, with closed position/failure diagnostics and a successful drift-binding proof.
  • apply_edits: atomic tracked replace, delete, counter and reinstate writes; MCP contracts veqtor.mcp.v0.2, veqtor.mcp.v0.3, and veqtor.mcp.v0.4 require the complete successful preflight proof; version 0.1.2 reuses the exact edit payload without that new field.
  • verify_quote: anchored exact, normalized, or not_found verification, with an optional paragraph selector for accepted_current_v1 or pending_text_revisions_rejected_v1 and a closed verification_result.v2 result.
  • export_decision_record: compact privacy-aware local provenance.

The complete request, response and error contract is in the versioned MCP Tool API. The public 0.1.2 API remains available under its immutable release tag.

Privacy and assurance boundary

The server has no embedded model calls and does not upload whole documents in the background. Text returned by a tool enters the MCP client conversation and may be sent to the user's model provider under that provider's terms.

Unless VEQTOR_DISABLE_DECISION_RECORD=1, tools append a private local journal at <matter>/.veqtor/decision-records.jsonl. Read-only calls, including preflight_edits and decision-record export, still normally write provenance there. The path- and search-phrase-omission guarantee applies only to the compact export_decision_record response. The raw journal retains the workspace and caller-supplied paths, and may retain search phrases and other verbatim matter text; do not commit or share it.

trace_paragraph_history is success-only for journaling: a refusal before a valid result writes no history record or sidecar. A later journal-publication failure returns the complete valid result with record_status: write_failed. Its live result may contain bounded paragraph/change-unit text, paths, filenames, headings and literal OOXML author/date strings. Its minimized raw record and compact export omit those values. Numeric or named author metadata does not verify who made a revision, and an OOXML date is not a trusted time.

Decision-record export requires the exact initialized workspace. In the v0.2 contract a wrong parent is refused without creating a second sidecar; one direct child journal yields a path-safe relative suggestion and multiple child journals are reported as ambiguous.

Decision records are best-effort local provenance. Their hashes are re-checkable fingerprints, not authentication. The supported threat model is a single-user local workspace. Veqtor bounds and verifies the actual output of every accepted DOCX/ZIP member (bounded streaming for DEFLATED data and a bounded direct span for STORED data), but this does not turn it into a sandbox for hostile same-user processes.

Supported surface

Surface Public Alpha
Operating systems macOS, Linux
Python 3.12, 3.13, 3.14
Transport local stdio MCP; modern 2026-07-28 and legacy through 2025-11-25
Validated clients Claude Code, Claude Desktop
DOCX part word/document.xml
Writes tracked replace, delete, counter, reinstate
Distribution Versioned PyPI packages with matching immutable GitHub wheel/sdist/checksums; macOS MCPB only when attached to the matching verified release

Windows, hosted MCP, comments/headers/footnotes, accept/reject, semantic cross-round lineage and cryptographic audit guarantees are outside the Alpha. The client row applies only to an exact version whose release artifacts passed the documented client gate; source and CI coverage alone do not establish that status.

Support

Veqtor MCP is a community-supported public Alpha. Use GitHub Issues for reproducible bugs and feature requests, using synthetic documents only. Never post client wording, local paths, .veqtor journals, credentials, or real matter files. Report suspected vulnerabilities privately as described in security policy.

No response-time, compatibility, uptime, or fix-time SLA is provided.

Development and releases

Development checks

Run these checks for ordinary development changes, including development versions such as X.Y.Z.devN:

uv lock --check
uv sync --frozen --all-extras
uv run --frozen pytest -q
uvx ruff==0.15.21 check .
LOCKED_REQUIREMENTS="$(mktemp)"
uv export --frozen --no-dev --no-emit-project \
  --format requirements-txt --output-file "$LOCKED_REQUIREMENTS"
uvx pip-audit==2.10.1 --requirement "$LOCKED_REQUIREMENTS" \
  --require-hashes --disable-pip --progress-spinner off
uv build --clear
uvx twine check dist/*.whl dist/*.tar.gz

Frozen-release checks

After the development checks, run the following only when [project].version exactly matches scripts/release_contract.py::VERSION. The frozen commands intentionally reject a development-only tree whose package and release identities differ. The full immutable publication workflow is documented in the release guide.

uv run --frozen python scripts/build_mcpb.py \
  --source-root . --out-dir dist --stage-dir /tmp/veqtor-mcpb-stage
uv run --frozen python scripts/check_release_artifacts.py \
  --source-root . --commit HEAD dist/*.whl dist/*.tar.gz
uv run --frozen python scripts/check_mcpb_artifact.py \
  --source-root . --commit HEAD dist/*.mcpb
npx --yes @anthropic-ai/mcpb@2.1.2 validate \
  /tmp/veqtor-mcpb-stage/manifest.json

Contributions use DCO sign-off; see the contributing guide. The exact-SHA immutable publication contract is documented in the release guide.

Maintainer

Veqtor MCP is an independent open-source project created and maintained by Ilya Shilov (@JohnDeer-ai).

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

veqtor_mcp-0.4.0.tar.gz (296.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

veqtor_mcp-0.4.0-py3-none-any.whl (199.6 kB view details)

Uploaded Python 3

File details

Details for the file veqtor_mcp-0.4.0.tar.gz.

File metadata

  • Download URL: veqtor_mcp-0.4.0.tar.gz
  • Upload date:
  • Size: 296.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for veqtor_mcp-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ca0b07dc66a1d2a6eada3d49916cb3ac5327d352de05574d1380b02d5fc994d0
MD5 877209fe9d0c18d767602fe008aa60f2
BLAKE2b-256 17002e0aa46f6af3a387938859a1156030f6aa1b54a3647b6eb23abf5d8b6816

See more details on using hashes here.

Provenance

The following attestation bundles were made for veqtor_mcp-0.4.0.tar.gz:

Publisher: release.yml on JohnDeer-ai/veqtor-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file veqtor_mcp-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: veqtor_mcp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 199.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.13

File hashes

Hashes for veqtor_mcp-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3d020d7399e2dec16227e8359377a161ac36955c28b84b57b2de74b50581f366
MD5 c87d8378441096f7f861b60b7e672055
BLAKE2b-256 d57f4fa316e8a89c7d8cfabe58ac24c09f232070523250eab3c26b3b07da316f

See more details on using hashes here.

Provenance

The following attestation bundles were made for veqtor_mcp-0.4.0-py3-none-any.whl:

Publisher: release.yml on JohnDeer-ai/veqtor-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 files

0.3.0

2 files

0.1.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page