# Proof CLI (unofficial) (oci · ghcr.io/tsarlewey/proof-cli)

Notarize, e-sign, and verify identity with the Proof API. Unofficial; not affiliated with Proof.

- Trust score: 52/100 (low)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-23

## Components

- oci · `ghcr.io/tsarlewey/proof-cli`: 52/100 (this document), [markdown](https://verifymcp.io/servers/tsarlewey-proof-cli/ghcr-io-tsarlewey-proof-cli.md), [page](https://verifymcp.io/servers/tsarlewey-proof-cli/ghcr-io-tsarlewey-proof-cli)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/tsarlewey/proof-cli`
- Version: `0.3.1`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-23.

- **Supply Chain Security**: 0/100
  - No malware scan is available for this kind of package: the supply-chain vendors we use do not cover it. This is a permanent gap in our coverage, not a finding about the package.
  - Known CVEs could not be checked: this image's dependency list comes from an SBOM its publisher attached, which nothing verifies, so we will not report it as a clean result.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this image's dependency list comes from an SBOM its publisher attached. It names packages and versions but not whether each is deprecated, still maintained or linked to its source, so there is nothing we can fairly grade.
- **Provenance & Transparency**: 45/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 23 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 74/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 6362 tokens (~106/item across 60 items; 60 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 80/100
  - Stability observed for 24 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 60 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the Proof CLI (unofficial) MCP server?

Proof CLI (unofficial) runs locally as a container image, launched with docker run --rm -i -e PROOF_API_KEY -e PROOF_API_ENDPOINT ghcr.io/tsarlewey/proof-cli:0.3.1. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add tsarlewey-proof-cli -- docker run --rm -i -e PROOF_API_KEY -e PROOF_API_ENDPOINT ghcr.io/tsarlewey/proof-cli:0.3.1
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Cursor

```json
{
  "mcpServers": {
    "tsarlewey-proof-cli": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "PROOF_API_KEY",
        "-e",
        "PROOF_API_ENDPOINT",
        "ghcr.io/tsarlewey/proof-cli:0.3.1"
      ]
    }
  }
}
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### VS Code

```json
{
  "servers": {
    "tsarlewey-proof-cli": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "PROOF_API_KEY",
        "-e",
        "PROOF_API_ENDPOINT",
        "ghcr.io/tsarlewey/proof-cli:0.3.1"
      ]
    }
  }
}
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Codex

```bash
codex mcp add tsarlewey-proof-cli -- docker run --rm -i -e PROOF_API_KEY -e PROOF_API_ENDPOINT ghcr.io/tsarlewey/proof-cli:0.3.1
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tsarlewey-proof-cli": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "-e",
        "PROOF_API_KEY",
        "-e",
        "PROOF_API_ENDPOINT",
        "ghcr.io/tsarlewey/proof-cli:0.3.1"
      ],
      "enabled": true
    }
  }
}
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Hermes

```yaml
mcp_servers:
  tsarlewey-proof-cli:
    command: "docker"
    args: ["run", "--rm", "-i", "-e", "PROOF_API_KEY", "-e", "PROOF_API_ENDPOINT", "ghcr.io/tsarlewey/proof-cli:0.3.1"]
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Netclaw

```json
{
  "McpServers": {
    "tsarlewey-proof-cli": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "-e",
        "PROOF_API_KEY",
        "-e",
        "PROOF_API_ENDPOINT",
        "ghcr.io/tsarlewey/proof-cli:0.3.1"
      ]
    }
  }
}
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

### Other

```json
{
  "mcpServers": {
    "tsarlewey-proof-cli": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        "PROOF_API_KEY",
        "-e",
        "PROOF_API_ENDPOINT",
        "ghcr.io/tsarlewey/proof-cli:0.3.1"
      ]
    }
  }
}
```

This image reads PROOF_API_KEY and PROOF_API_ENDPOINT. Set them in your client's env block for this server; docker run -e passes each one through to the container.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-23 (score 52, +1)

No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-21 (score 51, +1)

No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-19 (score 50, +1)

No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-17 (score 49, +1)

No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-15 (score 48, +1)

No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-13 (score 47, +1)

No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-10 (score 46, +1)

No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-09 (score 45, +1)

No change was recorded against any check on this day. Stability & Change Management went from 27 to 33. That category is still filling its 30-day observation window: 8 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.

## MCP tools (60)

### `business_documents_add` (~303 tokens)

Add a document to a transaction

Add a document to an existing transaction

CLI equivalent: proof business documents add

Input parameters:

- `authorization-header` (string): Header for fetching doc URLs (format: header_name:header_value)
- `bundle-position` (integer): Position in document bundle
- `customer-can-annotate` (boolean): Whether signer can add annotations
- `esign-required` (boolean): Whether e-signature is required
- `file-path` (string, required): Positional argument file-path
- `filename` (string): Plain language name for the document
- `identity-confirmation-required` (boolean): Whether identity confirmation is required
- `notarization-required` (boolean): Whether notarization is required
- `pdf-bookmarked` (boolean): Whether document is bookmarked PDF (splits by bookmarks)
- `requirement` (string): Completion requirement (notarization, esign, identity_confirmation, readonly, non_essential)
- `signing-requires-meeting` (boolean): Whether signing requires a meeting
- `template-id` (string): Apply this template's designations instead of automatic matching (see: business templates list)
- `text-tag-syntax` (string): Syntax used by text tags
- `tracking-id` (string): External tracking identifier
- `transaction-id` (string, required): Positional argument transaction-id
- `vaulted` (boolean): Whether to store authoritative copy in eVault
- `witness-required` (boolean): Whether additional witness must be present

### `business_documents_delete` (~41 tokens)

Delete a document

Delete a document from a transaction

CLI equivalent: proof business documents delete

Input parameters:

- `document-id` (string, required): Positional argument document-id

### `business_documents_get` (~82 tokens)

Get a document

Get a document from a transaction

CLI equivalent: proof business documents get

Input parameters:

- `document-id` (string, required): Positional argument document-id
- `encoding` (string): Can be 'base64' or 'uri'. 'uri' returns hosted URL (only after transaction completion)
- `transaction-id` (string, required): Positional argument transaction-id

### `business_integrations_create` (~77 tokens)

Create an integration

Create a new integration for your organization

CLI equivalent: proof business integrations create

Input parameters:

- `account-id` (string): Integration account ID
- `environment` (string): Integration environment
- `name` (string): Integration name (ADOBE or DOCUTECH)
- `org-id` (string): Organization ID

### `business_notaries_create` (~95 tokens)

Create a notary

Create a new notary for your organization

CLI equivalent: proof business notaries create

Input parameters:

- `email` (string): Notary's email address
- `first-name` (string): Notary's first name
- `last-name` (string): Notary's last name
- `middle-name` (string): Notary's middle name
- `state` (string): Two-letter state abbreviation

### `business_notaries_delete` (~48 tokens)

Delete a notary

Delete a specific notary from your organization

CLI equivalent: proof business notaries delete

Input parameters:

- `notary-id` (string, required): Positional argument notary-id

### `business_notaries_get` (~47 tokens)

Get a notary

Get details of a specific notary

CLI equivalent: proof business notaries get

Input parameters:

- `notary-id` (string, required): Positional argument notary-id

### `business_notaries_list` (~52 tokens)

List notaries

List all notaries for your organization

CLI equivalent: proof business notaries list

Input parameters:

- `org-id` (string): Organization ID
- `state` (string): Two-letter state abbreviation

### `business_referrals_create` (~119 tokens)

Create a referral campaign

Create a new referral campaign for your organization

CLI equivalent: proof business referrals create

Input parameters:

- `cover-payment` (boolean): Will the organization pay for these referred transactions?
- `name` (string): Name of the new campaign (required)
- `organization-id` (string): ID of organization to create the campaign for (child orgs only)
- `redirect-url` (string): URL that customers will be sent to from the referral
- `use-branding` (boolean): Will the referred transactions display the orgs branding?

### `business_referrals_generate_code` (~79 tokens)

Generate a referral code

Generate a single use referral link for a campaign

CLI equivalent: proof business referrals generate-code

Input parameters:

- `expires-at` (string): ISO 8601 timestamp for when the code should expire (default: 3 months from creation)
- `referral-campaign-id` (string, required): Positional argument referral-campaign-id

### `business_templates_list` (~65 tokens)

List templates

List all document templates for your organization

CLI equivalent: proof business templates list

Input parameters:

- `limit` (integer): How many results to return (default: 100, max: 1000)
- `offset` (integer): Number of results to skip for pagination

### `business_transactions_activate` (~87 tokens)

Activate a draft transaction

Activate a draft transaction to send it to the signer

CLI equivalent: proof business transactions activate

Input parameters:

- `require-new-signer-verification` (boolean): Require the signer to verify email ownership
- `suppress-email` (boolean): Don't email the signer on activation (you must supply transaction_access_link yourself)
- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_cancel` (~34 tokens)

Cancel a transaction

CLI equivalent: proof business transactions cancel

Input parameters:

- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_create` (~613 tokens)

Create a business transaction

Create a new transaction with signers and documents

CLI equivalent: proof business transactions create

Input parameters:

- `activation-time` (string): ISO-8601 datetime when signer can connect with notary
- `allowed-notary-states` (array): Two-letter state codes the notary may be commissioned in
- `auth-requirement` (string): Authentication requirement (sms or none)
- `cc-recipient-emails` (array): Email addresses to CC on transaction notifications
- `config-id` (string): Transaction configuration ID
- `cosigner-first-name` (string): Cosigner's first name
- `cosigner-last-name` (string): Cosigner's last name
- `cosigner-signing-requirement` (string): Cosigner signing requirement (esign, identify, or verify)
- `document` (array): Path to a document file; repeat for multiple (required)
- `draft` (boolean): Create transaction as draft
- `email` (string): Primary signer's email address (required on create)
- `expiry` (string): ISO-8601 datetime after which transaction expires
- `external-id` (string): External system ID
- `first-name` (string): Signer's first name
- `idv-use-case` (string): Identity verification use case (STANDARD or ACCOUNT_RECOVERY)
- `last-name` (string): Signer's last name
- `message-signature` (string): Signature block appended to notification emails
- `message-subject` (string): Email subject line
- `message-to-signer` (string): Message to signer (GitHub Flavored Markdown)
- `middle-name` (string): Signer's middle name
- `name` (string): Transaction name
- `notary-id` (string): Assign a specific notary by ID
- `notary-meeting-time` (string): Scheduled notary meeting time (RFC 3339)
- `notary-note` (array): Instruction note for the notary; repeat for multiple
- `organization-id` (string): Act on behalf of a child organization
- `payer` (string): Who pays for the transaction (signer or sender)
- `pdf-bookmarked` (boolean): Split the uploaded PDF into documents by its bookmarks
- `phone-number` (string): Signer's phone number
- `recipient-details-config` (array): Recipient field display rule as field=display (e.g. name=locked)
- `redirect-message` (string): Message shown to the signer before redirecting
- `redirect-url` (string): URL to send the signer to after completion
- `require-new-signer-verification` (boolean): Require the signer to verify email ownership
- `require-secondary-photo-id` (boolean): Require two forms of photo ID
- `signers-file` (string): Path to a JSON file holding an array of additional signer objects (max 10)
- `suppress-email` (boolean): Don't send notification email on activation
- `type` (string): Transaction type

### `business_transactions_delete` (~40 tokens)

Delete a business transaction

Delete a specific transaction

CLI equivalent: proof business transactions delete

Input parameters:

- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_eligible_notaries` (~53 tokens)

Get eligible notaries for a transaction

Get all eligible notaries for a specific transaction

CLI equivalent: proof business transactions eligible-notaries

Input parameters:

- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_get` (~42 tokens)

Get a business transaction

Get details of a specific transaction

CLI equivalent: proof business transactions get

Input parameters:

- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_list` (~135 tokens)

List business transactions

List all transactions for your organization

CLI equivalent: proof business transactions list

Input parameters:

- `created-end` (string): Filter by created date end (YYYY-MM-DD)
- `created-start` (string): Filter by created date start (YYYY-MM-DD)
- `last-updated-end` (string): Filter by last updated date end (YYYY-MM-DD)
- `last-updated-start` (string): Filter by last updated date start (YYYY-MM-DD)
- `limit` (integer): Number of transactions to return
- `offset` (integer): Offset for pagination
- `status` (string): Filter by transaction status

### `business_transactions_patch` (~653 tokens)

Update individual fields on a draft transaction

Update a draft transaction in place (HTTP PATCH).

Only the parameters you pass are sent; everything else keeps its current
value. Use "update" to replace the whole transaction.

CLI equivalent: proof business transactions patch

Input parameters:

- `activation-time` (string): ISO-8601 datetime when signer can connect with notary
- `allowed-notary-states` (array): Two-letter state codes the notary may be commissioned in
- `auth-requirement` (string): Authentication requirement (sms or none)
- `cc-recipient-emails` (array): Email addresses to CC on transaction notifications
- `config-id` (string): Transaction configuration ID
- `cosigner-first-name` (string): Cosigner's first name
- `cosigner-last-name` (string): Cosigner's last name
- `cosigner-signing-requirement` (string): Cosigner signing requirement (esign, identify, or verify)
- `document-order` (array): Reposition an attached document as id=position (e.g. doc_abc123=1)
- `email` (string): Primary signer's email address (required on create)
- `expiry` (string): ISO-8601 datetime after which transaction expires
- `external-id` (string): External system ID
- `first-name` (string): Signer's first name
- `idv-use-case` (string): Identity verification use case (STANDARD or ACCOUNT_RECOVERY)
- `last-name` (string): Signer's last name
- `message-signature` (string): Signature block appended to notification emails
- `message-subject` (string): Email subject line
- `message-to-signer` (string): Message to signer (GitHub Flavored Markdown)
- `middle-name` (string): Signer's middle name
- `name` (string): Transaction name
- `notary-id` (string): Assign a specific notary by ID
- `notary-meeting-time` (string): Scheduled notary meeting time (RFC 3339)
- `notary-note` (array): Instruction note for the notary; repeat for multiple
- `organization-id` (string): Act on behalf of a child organization
- `payer` (string): Who pays for the transaction (signer or sender)
- `pdf-bookmarked` (boolean): Split the uploaded PDF into documents by its bookmarks
- `phone-number` (string): Signer's phone number
- `recipient-details-config` (array): Recipient field display rule as field=display (e.g. name=locked)
- `redirect-message` (string): Message shown to the signer before redirecting
- `redirect-url` (string): URL to send the signer to after completion
- `require-new-signer-verification` (boolean): Require the signer to verify email ownership
- `require-secondary-photo-id` (boolean): Require two forms of photo ID
- `signers-file` (string): Path to a JSON file holding an array of additional signer objects (max 10)
- `suppress-email` (boolean): Don't send notification email on activation
- `transaction-id` (string, required): Positional argument transaction-id
- `type` (string): Transaction type

### `business_transactions_recall` (~56 tokens)

Recall a transaction

Recall a transaction with an optional reason

CLI equivalent: proof business transactions recall

Input parameters:

- `reason` (string): Optional reason for recalling the transaction
- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_resend_email` (~59 tokens)

Resend transaction email

Resend the transaction email with an optional message

CLI equivalent: proof business transactions resend-email

Input parameters:

- `message` (string): Optional message to signer
- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_resend_sms` (~64 tokens)

Resend transaction SMS

Resend the transaction SMS with optional phone parameters

CLI equivalent: proof business transactions resend-sms

Input parameters:

- `phone-number` (string): Optional phone number to send SMS to
- `transaction-id` (string, required): Positional argument transaction-id

### `business_transactions_update` (~655 tokens)

Replace a draft transaction

Replace a draft transaction with the values you supply (HTTP PUT).

Any parameter you don't pass is cleared to the API's default. Use "patch" to
change individual fields and leave the rest alone.

CLI equivalent: proof business transactions update

Input parameters:

- `activation-time` (string): ISO-8601 datetime when signer can connect with notary
- `allowed-notary-states` (array): Two-letter state codes the notary may be commissioned in
- `auth-requirement` (string): Authentication requirement (sms or none)
- `cc-recipient-emails` (array): Email addresses to CC on transaction notifications
- `config-id` (string): Transaction configuration ID
- `cosigner-first-name` (string): Cosigner's first name
- `cosigner-last-name` (string): Cosigner's last name
- `cosigner-signing-requirement` (string): Cosigner signing requirement (esign, identify, or verify)
- `document-order` (array): Reposition an attached document as id=position (e.g. doc_abc123=1)
- `email` (string): Primary signer's email address (required on create)
- `expiry` (string): ISO-8601 datetime after which transaction expires
- `external-id` (string): External system ID
- `first-name` (string): Signer's first name
- `idv-use-case` (string): Identity verification use case (STANDARD or ACCOUNT_RECOVERY)
- `last-name` (string): Signer's last name
- `message-signature` (string): Signature block appended to notification emails
- `message-subject` (string): Email subject line
- `message-to-signer` (string): Message to signer (GitHub Flavored Markdown)
- `middle-name` (string): Signer's middle name
- `name` (string): Transaction name
- `notary-id` (string): Assign a specific notary by ID
- `notary-meeting-time` (string): Scheduled notary meeting time (RFC 3339)
- `notary-note` (array): Instruction note for the notary; repeat for multiple
- `organization-id` (string): Act on behalf of a child organization
- `payer` (string): Who pays for the transaction (signer or sender)
- `pdf-bookmarked` (boolean): Split the uploaded PDF into documents by its bookmarks
- `phone-number` (string): Signer's phone number
- `recipient-details-config` (array): Recipient field display rule as field=display (e.g. name=locked)
- `redirect-message` (string): Message shown to the signer before redirecting
- `redirect-url` (string): URL to send the signer to after completion
- `require-new-signer-verification` (boolean): Require the signer to verify email ownership
- `require-secondary-photo-id` (boolean): Require two forms of photo ID
- `signers-file` (string): Path to a JSON file holding an array of additional signer objects (max 10)
- `suppress-email` (boolean): Don't send notification email on activation
- `transaction-id` (string, required): Positional argument transaction-id
- `type` (string): Transaction type

### `business_webhooks_create` (~95 tokens)

Create webhook v2

Create a new webhook v2

CLI equivalent: proof business webhooks create

Input parameters:

- `events` (array): Event subscriptions to subscribe to
- `header` (string): Header value to pass through every request (e.g. X-Custom-Header:X-Custom-Key)
- `name` (string): Webhook name (deprecated, use subscriptions)
- `url` (string): Webhook URL

### `business_webhooks_delete` (~43 tokens)

Delete webhook v2

Delete a webhook v2

CLI equivalent: proof business webhooks delete

Input parameters:

- `webhook-id` (string, required): Positional argument webhook-id

### `business_webhooks_events` (~47 tokens)

Get webhook v2 events

Get events for a specific webhook v2

CLI equivalent: proof business webhooks events

Input parameters:

- `webhook-id` (string, required): Positional argument webhook-id

### `business_webhooks_get` (~31 tokens)

Get webhook URL

Retrieve the webhook URL for your organization

CLI equivalent: proof business webhooks get

### `business_webhooks_get_v2` (~51 tokens)

Get webhook v2 details

Get details of a specific webhook v2

CLI equivalent: proof business webhooks get-v2

Input parameters:

- `webhook-id` (string, required): Positional argument webhook-id

### `business_webhooks_list` (~35 tokens)

List webhooks v2

List all webhooks v2 for your organization

CLI equivalent: proof business webhooks list

### `business_webhooks_subscriptions` (~34 tokens)

Get webhook v2 subscriptions

Get available webhook v2 event subscriptions

CLI equivalent: proof business webhooks subscriptions

### `business_webhooks_update` (~105 tokens)

Update webhook v2

Update an existing webhook v2

CLI equivalent: proof business webhooks update

Input parameters:

- `events` (array): Event subscriptions to subscribe to
- `header` (string): Header value to pass through every request (e.g. X-Custom-Header:X-Custom-Key)
- `name` (string): Webhook name (deprecated)
- `url` (string): Webhook URL
- `webhook-id` (string, required): Positional argument webhook-id

### `certificates_create` (~74 tokens)

Create a certificate (Proof-generated key)

Create a certificate where Proof generates the key pair, identified by a common name

CLI equivalent: proof certificates create

Input parameters:

- `common-name` (string, required): CN field of the subject - required
- `profile` (string): Certificate profile: organization_authenticity_al1 through _al4

### `certificates_create_from_csr` (~83 tokens)

Create a certificate from a CSR (bring your own key)

Create a certificate from a PEM-encoded Certificate Signing Request you generated yourself

CLI equivalent: proof certificates create-from-csr

Input parameters:

- `csr` (string, required): PEM-encoded Certificate Signing Request - required
- `profile` (string): Certificate profile: organization_authenticity_al1 through _al4

### `certificates_get` (~39 tokens)

Get a certificate

Get details of a specific certificate

CLI equivalent: proof certificates get

Input parameters:

- `certificate-id` (string, required): Positional argument certificate-id

### `certificates_list` (~46 tokens)

List certificates

List the organization's certificates with optional pagination

CLI equivalent: proof certificates list

Input parameters:

- `limit` (integer): Page size
- `offset` (integer): 0-based offset

### `certificates_revoke` (~55 tokens)

Revoke a certificate

Revoke a certificate, optionally recording a reason

CLI equivalent: proof certificates revoke

Input parameters:

- `certificate-id` (string, required): Positional argument certificate-id
- `reason` (string): Reason for revocation

### `certificates_sign` (~100 tokens)

Sign digests with a certificate

Sign up to 25 base64-encoded SHA256 digests with the given certificate

CLI equivalent: proof certificates sign

Input parameters:

- `algorithm-oid` (string): Signing algorithm OID (only ECDSA with SHA256 is supported)
- `certificate-id` (string, required): Positional argument certificate-id
- `digest` (array, required): Base64-encoded SHA256 digest (repeatable, max 25) - required

### `credentials_authorize_url` (~245 tokens)

Build the Verifiable Credential presentation authorize URL

Build the URL that requests a Verifiable Credential presentation from an End-User.

This endpoint is a browser redirect, not a server-to-server API call — the CLI
prints the URL rather than following it. Send the End-User to the printed URL;
Proof returns the vp_token to your redirect_uri or response_uri.

CLI equivalent: proof credentials authorize-url

Input parameters:

- `client-id` (string, required): Your Proof OAuth Application Client ID - required
- `login-hint` (string, required): Email address of the End-User to request a presentation from - required
- `nonce` (string, required): Opaque client-generated value bound to the response to prevent replay - required
- `redirect-uri` (string): Redirect URI receiving the vp_token fragment (required for fragment mode)
- `response-mode` (string): How the presentation is returned: fragment or direct_post
- `response-uri` (string): URI Proof POSTs the vp_token to (required for direct_post mode)
- `scope` (string, required): Space-separated scopes that translate to DCQL queries - required
- `state` (string): Opaque value echoed back on the callback

### `logs_list` (~125 tokens)

List security events

List security events with optional filtering and cursor-based pagination

CLI equivalent: proof logs list

Input parameters:

- `class-uid` (integer): Filter by OCSF event class identifier
- `cursor` (string): Pagination cursor from a previous response's next_cursor
- `limit` (integer): Number of events per page (1-1000, default 100)
- `severity-id` (integer): Filter by OCSF severity identifier
- `since` (string): ISO 8601 timestamp; only events at or after this time (max 90 days back)

### `real_estate_documents_get` (~76 tokens)

Get a real estate document

Get details of a specific real estate document

CLI equivalent: proof real-estate documents get

Input parameters:

- `document-id` (string, required): Positional argument document-id
- `encoding` (string): Encoding format (base64 or uri)
- `transaction-id` (string, required): Positional argument transaction-id

### `real_estate_documents_list` (~51 tokens)

List real estate documents for a transaction

List real estate documents for a specific transaction

CLI equivalent: proof real-estate documents list

Input parameters:

- `transaction-id` (string, required): Positional argument transaction-id

### `real_estate_documents_upload` (~75 tokens)

Upload a document to a real estate transaction

Upload a document file to a real estate transaction

CLI equivalent: proof real-estate documents upload

Input parameters:

- `file-path` (string, required): Positional argument file-path
- `filename` (string): Document filename
- `transaction-id` (string, required): Positional argument transaction-id

### `real_estate_templates_list` (~70 tokens)

List templates

List all real estate templates for your organization

CLI equivalent: proof real-estate templates list

Input parameters:

- `limit` (integer): How many results to return (default: 100, max: 1000)
- `offset` (integer): Number of results to skip for pagination

### `real_estate_transactions_cancel` (~40 tokens)

Cancel a real estate transaction

CLI equivalent: proof real-estate transactions cancel

Input parameters:

- `transaction-id` (string, required): Positional argument transaction-id

### `real_estate_transactions_create` (~73 tokens)

Create a real estate transaction

Create a new real estate transaction

CLI equivalent: proof real-estate transactions create

Input parameters:

- `draft` (boolean): Create as draft
- `file-number` (string): File number
- `loan-number` (string): Loan number
- `type` (string): Transaction type

### `real_estate_transactions_get` (~49 tokens)

Get a real estate transaction

Get details of a specific real estate transaction

CLI equivalent: proof real-estate transactions get

Input parameters:

- `transaction-id` (string, required): Positional argument transaction-id

### `real_estate_transactions_list` (~199 tokens)

List real estate transactions

List real estate transactions with optional filtering

CLI equivalent: proof real-estate transactions list

Input parameters:

- `created-date-end` (string): ISO-8601 DateTime - transactions created before this time
- `created-date-start` (string): ISO-8601 DateTime - transactions created after this time
- `document-url-version` (string): Document URL version (v1 or v2)
- `last-updated-date-end` (string): ISO-8601 DateTime - transactions updated before this time
- `last-updated-date-start` (string): ISO-8601 DateTime - transactions updated after this time
- `limit` (integer): Limit number of results
- `loan-number` (string): Find transactions associated with loan number
- `offset` (integer): Offset for pagination
- `organization-id` (string): Organization ID of child account
- `status` (string): Filter by transaction status

### `real_estate_transactions_place_order` (~95 tokens)

Place order for a real estate transaction

Place an order for a real estate transaction

CLI equivalent: proof real-estate transactions place-order

Input parameters:

- `require-new-signer-verification` (boolean): Require the signer to verify email ownership
- `suppress-email` (boolean): Don't email the signer on order placement (you must supply transaction_access_link yourself)
- `transaction-id` (string, required): Positional argument transaction-id

### `real_estate_verify_address` (~97 tokens)

Verify a street address

Verify a street address and get recording jurisdiction information

CLI equivalent: proof real-estate verify-address

Input parameters:

- `city` (string, required): City (required)
- `line1` (string, required): Street address line 1 (required)
- `postal-code` (string): Postal/ZIP code
- `state` (string, required): State abbreviation (required)
- `transaction-type` (string): Transaction type for eligibility check

### `real_estate_webhooks_create` (~72 tokens)

Create a real estate webhook

Create a new real estate webhook

CLI equivalent: proof real-estate webhooks create

Input parameters:

- `header` (string): Custom header to include in webhook requests
- `subscriptions` (array): Webhook event subscriptions
- `url` (string, required): Positional argument url

### `real_estate_webhooks_list` (~50 tokens)

List real estate webhooks

CLI equivalent: proof real-estate webhooks list

Input parameters:

- `limit` (integer): Limit number of results
- `offset` (integer): Offset for pagination

### `scim_schemas_resource_types` (~50 tokens)

Get resource types

Get the supported SCIM resource types for an organization

CLI equivalent: proof scim schemas resource-types

Input parameters:

- `organization-id` (string, required): Positional argument organization-id

### `scim_schemas_service_provider_config` (~53 tokens)

Get service provider configuration

Get the SCIM service provider configuration for an organization

CLI equivalent: proof scim schemas service-provider-config

Input parameters:

- `organization-id` (string, required): Positional argument organization-id

### `scim_schemas_user` (~47 tokens)

Get user schema

Get the SCIM user schema for an organization

CLI equivalent: proof scim schemas user

Input parameters:

- `organization-id` (string, required): Positional argument organization-id

### `scim_users_create` (~130 tokens)

Create a SCIM user

Create a new SCIM user in an organization

CLI equivalent: proof scim users create

Input parameters:

- `active` (boolean): Whether the user is active
- `email` (string): Email address
- `external-id` (string): External ID from SAML provider
- `family-name` (string): Last name
- `given-name` (string): First name
- `organization-id` (string, required): Positional argument organization-id
- `roles` (array): User roles (can specify multiple)
- `username` (string, required): Username (email address) - required

### `scim_users_delete` (~60 tokens)

Delete a SCIM user

Delete a SCIM user from an organization

CLI equivalent: proof scim users delete

Input parameters:

- `organization-id` (string, required): Positional argument organization-id
- `user-id` (string, required): Positional argument user-id

### `scim_users_get` (~60 tokens)

Get a SCIM user

Get details of a specific SCIM user

CLI equivalent: proof scim users get

Input parameters:

- `organization-id` (string, required): Positional argument organization-id
- `user-id` (string, required): Positional argument user-id

### `scim_users_list` (~76 tokens)

List SCIM users

List SCIM users in an organization with optional pagination

CLI equivalent: proof scim users list

Input parameters:

- `count` (integer): Maximum number of results per page
- `organization-id` (string, required): Positional argument organization-id
- `start-index` (integer): 1-based index of first result

### `scim_users_patch` (~88 tokens)

Patch a SCIM user

Partially update a SCIM user using PATCH operations

CLI equivalent: proof scim users patch

Input parameters:

- `operation` (array, required): PATCH operations in format 'op:path[:value]' (e.g., 'replace:active:false')
- `organization-id` (string, required): Positional argument organization-id
- `user-id` (string, required): Positional argument user-id

### `scim_users_update` (~144 tokens)

Update a SCIM user

Update a SCIM user (replaces all fields)

CLI equivalent: proof scim users update

Input parameters:

- `active` (boolean): Whether the user is active
- `email` (string): Email address
- `external-id` (string): External ID from SAML provider
- `family-name` (string): Last name
- `given-name` (string): First name
- `organization-id` (string, required): Positional argument organization-id
- `roles` (array): User roles (can specify multiple)
- `user-id` (string, required): Positional argument user-id
- `username` (string, required): Username (email address) - required

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/tsarlewey-proof-cli/ghcr-io-tsarlewey-proof-cli#diagnostics

## Score history

- 2026-10-23: 52
- 2026-10-22: 51
- 2026-10-21: 51
- 2026-10-20: 50
- 2026-10-19: 50
- 2026-10-18: 49
- 2026-10-17: 49
- 2026-10-16: 48
- 2026-10-15: 48
- 2026-10-14: 47
- 2026-10-13: 47
- 2026-10-12: 46
- 2026-10-10: 46
- 2026-10-09: 45
- 2026-10-07: 44
- 2026-10-04: 43
- 2026-10-03: 42
- 2026-10-02: 42
- 2026-10-01: 41
- 2026-09-30: 41
- 2026-09-29: 40

## Common questions

### What is the Proof CLI (unofficial) MCP server?

Proof CLI (unofficial) is an MCP server listed in the public MCP registry as io.github.tsarlewey/proof-cli. Notarize, e-sign, and verify identity with the Proof API. Unofficial; not affiliated with Proof. This page covers its container image (ghcr.io/tsarlewey/proof-cli).

### Is the Proof CLI (unofficial) MCP server safe to use?

Proof CLI (unofficial) scores 52 out of 100 on VerifyMCP. 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 Proof CLI (unofficial) MCP server expose?

Proof CLI (unofficial) exposes 60 tools: business_documents_add, business_documents_delete, business_documents_get, business_integrations_create, business_notaries_create, and 55 more. Their descriptions and schemas cost roughly 6,362 tokens of context every time the server is loaded.

### Is the Proof CLI (unofficial) MCP server still maintained?

Proof CLI (unofficial) is still listed as active in the MCP registry. We last reached this channel on 23 October 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 Proof CLI (unofficial) MCP server under?

Proof CLI (unofficial) declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- GitHub Container Registry: https://ghcr.io/tsarlewey/proof-cli
- Repository: https://github.com/tsarlewey/proof-cli
- Changelog RSS feed: https://verifymcp.io/servers/tsarlewey-proof-cli/ghcr-io-tsarlewey-proof-cli.xml
- Changelog JSON feed: https://verifymcp.io/servers/tsarlewey-proof-cli/ghcr-io-tsarlewey-proof-cli.json
- HTML version of this page: https://verifymcp.io/servers/tsarlewey-proof-cli/ghcr-io-tsarlewey-proof-cli
