io.github.DrBaher/contract-ops-mcp
NPM · CONTRACT-OPS-MCP · SCANNED SEP 20
One MCP server for the contract-ops suite: all nine local-first CLIs as agent tools.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security98
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- No install/post-install scripts declared.Pass
- 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to DrBaher/contract-ops-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 66 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability78
- AI-judged instruction clarity (excellent).Pass
- Tool/resource definitions use about 3122 tokens (~62/item across 50 items; 50 tools + 0 resources), lean.Pass
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 99% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 50 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 50 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the io.github.DrBaher/contract-ops-mcp server?
io.github.DrBaher/contract-ops-mcp runs locally as an npm package, launched with npx -y contract-ops-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
npm · contract-ops-mcp
claude mcp add drbaher-contract-ops-mcp -- npx -y contract-ops-mcp
{
"mcpServers": {
"drbaher-contract-ops-mcp": {
"command": "npx",
"args": [
"-y",
"contract-ops-mcp"
]
}
}
} {
"servers": {
"drbaher-contract-ops-mcp": {
"command": "npx",
"args": [
"-y",
"contract-ops-mcp"
]
}
}
} codex mcp add drbaher-contract-ops-mcp -- npx -y contract-ops-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"drbaher-contract-ops-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"contract-ops-mcp"
],
"enabled": true
}
}
} openclaw mcp add drbaher-contract-ops-mcp --command npx --arg -y --arg contract-ops-mcp
mcp_servers:
drbaher-contract-ops-mcp:
command: "npx"
args: ["-y", "contract-ops-mcp"] {
"McpServers": {
"drbaher-contract-ops-mcp": {
"Transport": "stdio",
"Command": "npx",
"Arguments": [
"-y",
"contract-ops-mcp"
]
}
}
} assistant mcp add drbaher-contract-ops-mcp -t stdio -c npx -a -y contract-ops-mcp
{
"mcpServers": {
"drbaher-contract-ops-mcp": {
"command": "npx",
"args": [
"-y",
"contract-ops-mcp"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 20 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 16 Sept 26 −3
- Stability: pass → 0.80 functional
- 15 Sept 26 +1
- Stability: 0.97 → pass security
- 13 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 11 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 9 Sept 26 −3
- Security disclosure: unverified → fail ▼ functional
- Stability: pass → 0.80 functional
- 8 Sept 26 +1
- Stability: 0.97 → pass security
- Security disclosure: fail → unverified ▼ functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 20 Sept 2026 · Analysed npm/contract-ops-mcp@0.3.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | npm |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | DrBaher/contract-ops-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/DrBaher/contract-ops-mcp/.github/workflows/publish.yml@refs/tags/v0.3.0 |
| Rekor log index | 2173983859 |
| Predicate type | https://slsa.dev/provenance/v1 |
| Subject digest | sha512:9287e33d0d9751f6b8a02a4e9d9208f43ce729f53991d2d6a08e3a987faf6c4cbf4facf1979c76a63be18d6beb5c19bdacb5eea33515b70146a1a57db |
Background: How many MCP packages publish verified provenance →
Dependencies 95 packages
| Packages resolved | 95 |
|---|---|
| Stale | 31 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
audit_show ~35
Show the hash-chained audit log for a sign request. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| request_id | string | yes | The sign request id. |
No output schema declared.
No examples provided.
catalog ~48
Return a CLI's full machine-readable command/flag catalog (`<cli> --catalog json`). Use this to discover the long tail beyond the curated tools.
| Name | Type | Req | Description |
|---|---|---|---|
| cli | string | yes | Which suite CLI. |
No output schema declared.
No examples provided.
compare_versions ~70
Clause-aware drift detection between two contract versions. exitCode: 0 clean · 2 substantive drift · 3 cosmetic · 4 clauses moved · 1 I/O error.
| Name | Type | Req | Description |
|---|---|---|---|
| base | string | yes | Path to the agreed/base version. |
| candidate | string | yes | Path to the version to check. |
No output schema declared.
No examples provided.
contract_vault_accept ~74
Mark register field(s) as manually verified (single, or bulk via a file). Writes to the register.
| Name | Type | Req | Description |
|---|---|---|---|
| deal | string | – | Deal id. |
| field | string | – | Field name. |
| from_file | string | – | Path to a bulk-accept file. |
| value | string | – | Verified value. |
No output schema declared.
No examples provided.
contract_vault_at_risk ~57
Renewal exposure: missed / imminent auto-renewal notice deadlines and expirations. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | – | As-of date. |
| within | string | – | Window, e.g. 30d. |
No output schema declared.
No examples provided.
contract_vault_due ~48
Project upcoming renewal / notice / payment deadlines from the signed-contract register.
| Name | Type | Req | Description |
|---|---|---|---|
| within | string | – | Window, e.g. 30d / 90d (default 30d). |
No output schema declared.
No examples provided.
contract_vault_export ~73
Export the register as csv | md | json (for spreadsheets / reports). Returns the export; writes no file. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| expiring_before | string | – | Only rows expiring before this date. |
| format | string | – | Export format. |
| needs_review | boolean | – | Only rows needing review. |
No output schema declared.
No examples provided.
contract_vault_ingest ~63
Register a contract into the vault from an extract_contract JSON file. Writes to the register.
| Name | Type | Req | Description |
|---|---|---|---|
| counterparty | string | – | Counterparty name. |
| file | string | yes | Path to an extract_contract JSON file. |
| name | string | – | Deal name. |
No output schema declared.
No examples provided.
contract_vault_obligation ~94
Track one obligation's lifecycle (status / owner / recurrence / reminder days). Writes to the register.
| Name | Type | Req | Description |
|---|---|---|---|
| deal | string | yes | Deal id. |
| id | string | yes | Obligation id. |
| owner | string | – | Assign an owner. |
| recurrence | string | – | Recurrence. |
| reminders | string | – | Reminder lead days, e.g. 30. |
| status | string | – | New status. |
No output schema declared.
No examples provided.
contract_vault_obligations ~87
Project upcoming date/obligation actions from the register. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | – | As-of date (YYYY-MM-DD). |
| owner | string | – | Filter by owner. |
| status | string | – | Filter by status. |
| type | string | – | Filter by obligation type. |
| within | string | – | Window, e.g. 90d. |
No output schema declared.
No examples provided.
contract_vault_query ~60
Query the register of signed contracts (read-only): list | find | get | show | stats | history.
| Name | Type | Req | Description |
|---|---|---|---|
| action | string | yes | Read-only action. |
| arg | string | – | Argument for find/get/show/history (query or deal id). |
No output schema declared.
No examples provided.
contract_vault_remind ~76
Obligations whose reminder window is open right now — a digest for agents/cron. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| as_of | string | – | As-of date (YYYY-MM-DD). |
| owner | string | – | Filter by owner. |
| status | string | – | Filter by status. |
| type | string | – | Filter by type. |
No output schema declared.
No examples provided.
contract_vault_review ~42
List register fields needing review (unidentified / LLM-derived / low-confidence). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| threshold | string | – | Confidence threshold (0-1). |
No output schema declared.
No examples provided.
contract_vault_risk ~50
Renewal-exposure analysis: missed/imminent auto-renewal notice deadlines and expirations.
| Name | Type | Req | Description |
|---|---|---|---|
| within | string | – | Window, e.g. 30d (default 30d). |
No output schema declared.
No examples provided.
contract_vault_verify ~26
Integrity check of the register (source sha256 + git state). Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
convert_to_pdf ~54
Convert a Word document to PDF (needs a PDF backend such as LibreOffice on the host).
| Name | Type | Req | Description |
|---|---|---|---|
| input | string | yes | Path to the .docx. |
| output | string | – | Output .pdf path (optional). |
No output schema declared.
No examples provided.
draft_nda ~211
Draft a new NDA from a built-in template into `out` (markdown; optional .docx). Deterministic. If placeholders are missing the result lists them — fill and retry. Needs nda_setup first.
| Name | Type | Req | Description |
|---|---|---|---|
| disclosing_party | string | – | Disclosing party (one-way). |
| effective_date | string | – | Effective date. |
| governing_law | string | – | Governing law. |
| out | string | yes | Output markdown path. |
| out_docx | string | – | Optional Word .docx output path. |
| party_a | string | – | Party A name (mutual). |
| party_a_address | string | – | Party A address (mutual). |
| party_b | string | – | Party B name (mutual). |
| party_b_address | string | – | Party B address (mutual). |
| purpose | string | yes | Purpose / deal description. |
| receiving_party | string | – | Receiving party (one-way). |
| template | string | – | Which built-in template (default mutual). |
No output schema declared.
No examples provided.
extract_contract ~75
Ingest any contract (.md/.txt/.html/.docx/.pdf) into structured JSON — parties, dates, term, governing law, a clause map, defined terms — each with a confidence + source. Deterministic, no network.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path to the contract file (within the base dir). |
No output schema declared.
No examples provided.
fill_template ~64
Fill placeholders in a markdown/.docx template with parameter values (deterministic; no LLM). Returns the filled document on stdout.
| Name | Type | Req | Description |
|---|---|---|---|
| params | object | – | Parameter values (snake_case keys), passed as JSON. |
| template | string | yes | Path to the template. |
No output schema declared.
No examples provided.
generate_redlines ~85
Generate a clause-ready redline draft from a review_nda JSON report. Writes redline markdown to `out`. Deterministic; no org policy needed.
| Name | Type | Req | Description |
|---|---|---|---|
| mode | string | – | Redline format (default classic). |
| out | string | yes | Output path for the redline markdown. |
| review_json | string | yes | Path to a saved review_nda JSON report. |
No output schema declared.
No examples provided.
lint_contract ~78
Lint one contract for internal-consistency defects — leftover placeholders, broken cross-references, undefined/unused defined terms, numbering gaps, party/date inconsistencies. Returns findings (rule, severity, line).
| Name | Type | Req | Description |
|---|---|---|---|
| fail_on | string | – | Severity threshold for the exit code (default: error). |
| path | string | yes | Path to the document. |
No output schema declared.
No examples provided.
nda_setup ~43
One-time: generate the org NDA policy + default playbook in the workspace (needed before draft_nda / negotiate_*). Idempotent; writes config into the workspace.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
negotiate_accept ~58
Accept the current negotiated text, SIGNING convergence on your side. Signs a binding acceptance.
| Name | Type | Req | Description |
|---|---|---|---|
| as | string | – | Which side. |
| out | string | – | Optional output path. |
| state | string | yes | Path to the negotiation state file. |
No output schema declared.
No examples provided.
negotiate_analyze ~43
Post-hoc negotiation dashboard: trajectory, per-clause winners, source breakdown, outcome. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| state | string | yes | Path to the negotiation state file. |
No output schema declared.
No examples provided.
negotiate_counter ~127
Sign a counter-round with amendments — either from a JSON amendments file you provide, or deterministic --auto with a stance. Signs a negotiating commitment.
| Name | Type | Req | Description |
|---|---|---|---|
| amendments_file | string | – | Path to a JSON amendments file (drafted by you). |
| as | string | – | Which side you're countering as. |
| auto | boolean | – | Use the deterministic auto-amender instead of an amendments file. |
| out | string | – | Optional output path for the round. |
| stance | string | – | Deterministic stance when using auto. |
| state | string | yes | Path to the negotiation state file. |
No output schema declared.
No examples provided.
negotiate_diff ~62
Clause-by-clause changes between two negotiation rounds (defaults to the last two). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| from_round | string | – | From round number. |
| state | string | yes | Path to the negotiation state file. |
| to_round | string | – | To round number. |
No output schema declared.
No examples provided.
negotiate_finalize ~88
Finalize a converged negotiation: emit the final .md and .docx. The legal SIGNATURE stays with the human — no e-signature is applied here; hand off to sign-cli.
| Name | Type | Req | Description |
|---|---|---|---|
| out_docx | string | yes | Final .docx output path. |
| out_md | string | yes | Final markdown output path. |
| state | string | yes | Path to the negotiation state file. |
No output schema declared.
No examples provided.
negotiate_init ~149
Start a negotiation: draft from a template + parties, SIGN as Party A, and write the state file. Signs a negotiating commitment. Needs nda_setup first.
| Name | Type | Req | Description |
|---|---|---|---|
| effective_date | string | – | Effective date. |
| governing_law | string | – | Governing law. |
| out | string | yes | Output path for the negotiation state file. |
| party_a_address | string | – | Party A address. |
| party_a_name | string | – | Party A name. |
| party_b_address | string | – | Party B address. |
| party_b_name | string | – | Party B name. |
| purpose | string | yes | Purpose / deal description. |
| template | string | – | Which built-in template (default mutual). |
No output schema declared.
No examples provided.
negotiate_review ~45
Review the latest negotiation round against your policy. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| as | string | – | Which side's policy view. |
| state | string | yes | Path to the negotiation state file. |
No output schema declared.
No examples provided.
negotiate_status ~38
Show a negotiation's rounds, per-clause status, and signatures. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| state | string | yes | Path to the negotiation state file. |
No output schema declared.
No examples provided.
negotiate_validate ~41
Integrity check on a negotiation state file: schema + hash-chain + per-round shape. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| state | string | yes | Path to the negotiation state file. |
No output schema declared.
No examples provided.
review_nda ~68
Review an NDA against a house playbook — deterministic scoring with evidence per finding. Returns the structured review report (decision, risk_score, findings with evidence).
| Name | Type | Req | Description |
|---|---|---|---|
| file | string | yes | Path to the NDA. |
| playbook | string | – | Path to the house playbook JSON (optional). |
No output schema declared.
No examples provided.
run ~106
Escape hatch: run any suite CLI with raw arguments (no shell). For commands the curated tools don't cover. Call `catalog` first to learn the flags. Note: signing stays human-gated — only sign-cli's read/verify subcommands are reachable here; request-create/send/sign/approve are rejected and must go through sign-cli's own MCP with its per-signer approval tokens.
| Name | Type | Req | Description |
|---|---|---|---|
| args | array | yes | Arguments passed verbatim to the CLI. |
| cli | string | yes | – |
No output schema declared.
No examples provided.
suite_status ~40
Report which suite CLIs are installed (with versions) and how to install any that are missing. Call this first if a tool reports a CLI isn't installed.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
template_vault_clause_library ~41
Find clauses that repeat across the vault (a reusable clause library). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| threshold | string | – | Similarity threshold (0-1). |
No output schema declared.
No examples provided.
template_vault_clauses ~32
List the clauses detected in a template. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | yes | Template reference. |
No output schema declared.
No examples provided.
template_vault_compare_clauses ~60
Compare clauses between two templates (optionally one named clause). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| a | string | yes | First template reference. |
| b | string | yes | Second template reference. |
| clause | string | – | Optional clause name to compare. |
No output schema declared.
No examples provided.
template_vault_compose ~56
Fork a template into a new derived template in the vault. Writes a new versioned template.
| Name | Type | Req | Description |
|---|---|---|---|
| as_ref | string | yes | New template reference to create. |
| base | string | yes | Base template reference to fork from. |
No output schema declared.
No examples provided.
template_vault_diff ~51
Unified diff between two versions of one template. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | yes | Template reference. |
| version_a | string | yes | First version. |
| version_b | string | yes | Second version. |
No output schema declared.
No examples provided.
template_vault_export ~62
Export a template to another format (e.g. .docx) at a workspace path.
| Name | Type | Req | Description |
|---|---|---|---|
| as | string | – | Format, e.g. docx. |
| output | string | – | Output file path. |
| ref | string | yes | Template reference. |
No output schema declared.
No examples provided.
template_vault_find ~36
Search the template vault by category, tag, jurisdiction, or keyword. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| query | string | yes | Search query. |
No output schema declared.
No examples provided.
template_vault_get ~48
Resolve and return a versioned template's text by reference (e.g. nda/house-mutual). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | yes | Template reference: category/name[@version]. |
No output schema declared.
No examples provided.
template_vault_history ~36
Chronological timeline for a template: versions, swaps, and amendments. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | yes | Template reference. |
No output schema declared.
No examples provided.
template_vault_info ~36
Show metadata for a template (category, tags, jurisdiction, versions). Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| ref | string | yes | Template reference. |
No output schema declared.
No examples provided.
template_vault_list ~58
List templates in the vault, optionally filtered by category / tag / jurisdiction. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | Filter by category. |
| jurisdiction | string | – | Filter by jurisdiction. |
| tag | string | – | Filter by tag. |
No output schema declared.
No examples provided.
template_vault_stats ~25
Vault dashboard: template counts, coverage, and last activity. Read-only.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
template_vault_swap ~66
Replace one clause in a template with the same clause from another template. Writes a new version.
| Name | Type | Req | Description |
|---|---|---|---|
| clause | string | yes | Clause name to replace. |
| from_ref | string | yes | Template reference to take the clause from. |
| target | string | yes | Template reference to modify. |
No output schema declared.
No examples provided.
template_vault_verify ~39
Content-level sha256 integrity check of the vault. Read-only (never rewrites hashes).
| Name | Type | Req | Description |
|---|---|---|---|
| strict | boolean | – | Fail on any mismatch. |
No output schema declared.
No examples provided.
verify_receipt ~37
Re-verify a portable signing receipt bundle, fully offline. Read-only.
| Name | Type | Req | Description |
|---|---|---|---|
| bundle | string | yes | Path to the receipt bundle directory. |
No output schema declared.
No examples provided.
verify_signature ~61
Verify a signed PDF matches what was recorded for its request. (Read-only; signing itself stays human-gated behind sign-cli's own MCP.)
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path to the signed PDF. |
| request_id | string | yes | The sign request id. |
No output schema declared.
No examples provided.
What is the io.github.DrBaher/contract-ops-mcp server?
io.github.DrBaher/contract-ops-mcp is listed in the public MCP registry as io.github.DrBaher/contract-ops-mcp. One MCP server for the contract-ops suite: all nine local-first CLIs as agent tools. This page covers its npm package (contract-ops-mcp).
Is the io.github.DrBaher/contract-ops-mcp server safe to use?
io.github.DrBaher/contract-ops-mcp scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the io.github.DrBaher/contract-ops-mcp server expose?
io.github.DrBaher/contract-ops-mcp exposes 50 tools: extract_contract, lint_contract, compare_versions, fill_template, convert_to_pdf, and 45 more. Their descriptions and schemas cost roughly 3,122 tokens of context every time the server is loaded.
Is the io.github.DrBaher/contract-ops-mcp server still maintained?
io.github.DrBaher/contract-ops-mcp is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the io.github.DrBaher/contract-ops-mcp server under?
io.github.DrBaher/contract-ops-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.