Quick Start

Get from zero to your first verified claim in minutes.

1. Get Your API Key

Choose a plan and complete checkout. Your pl_live_* API key will be provisioned directly to your Dashboard.

2. Install the MCP Server

Ensure you have Node.js installed, then run:

npm install -g proofledger-mcp

3. Add to Claude Code

claude mcp add --scope user \
  --env PROOFLEDGER_API_KEY=<your-api-key> \
  proofledger -- proofledger-mcp

Replace <your-api-key> with your API key. See MCP Setup for other editors (Claude Desktop, Cursor, VS Code).

4. Verify a Claim

Ask your AI agent:

"Verify this revenue arrangement: Entity X enters a 3-year software license agreement for $120,000 with two distinct performance obligations."

You should see a formal verification result with an ED25519-signed certificate within 15–30 seconds.


MCP Setup

ProofLedger integrates with any AI agent that supports the Model Context Protocol.

Claude Code (CLI)

Install the package globally, then register it with Claude Code:

1. Install

npm install -g proofledger-mcp

2. Add to Claude Code

claude mcp add --scope user \
  --env PROOFLEDGER_API_KEY=<your-api-key> \
  proofledger -- proofledger-mcp

Replace <your-api-key> with your ProofLedger API key (starts with pl_live_).

3. Verify connection

claude mcp list

You should see proofledger with status ✓ Connected.

To remove

claude mcp remove --scope user proofledger

To get your API key: log in to your ProofLedger account and find it in the API / settings section.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "proofledger": {
      "command": "proofledger-mcp",
      "env": {
        "PROOFLEDGER_API_KEY": "pl_live_your_key_here"
      }
    }
  }
}

Cursor

.cursor/mcp.json

{
  "mcpServers": {
    "proofledger": {
      "command": "proofledger-mcp",
      "env": {
        "PROOFLEDGER_API_KEY": "pl_live_your_key_here"
      }
    }
  }
}

VS Code (Copilot)

.vscode/mcp.json

{
  "servers": {
    "proofledger": {
      "command": "proofledger-mcp",
      "env": {
        "PROOFLEDGER_API_KEY": "pl_live_your_key_here"
      }
    }
  }
}

OpenAI Codex CLI

codex mcp add proofledger -- proofledger-mcp

Then set your API key in ~/.codex/config.toml:

[mcp_servers.proofledger]
command = "proofledger-mcp"
[mcp_servers.proofledger.env]
PROOFLEDGER_API_KEY = "pl_live_your_key_here"

Environment Variables

VariableRequiredDescription
PROOFLEDGER_API_KEYYesYour API key (starts with pl_live_)
PROOFLEDGER_API_URLNoOverride API URL (default: https://api.proofledger.space)

Tools Reference

3 tools available through the Model Context Protocol.

verify_batch

Async

Submit one or more claims for parallel verification. Supports per-claim standard and optional document linking via source_ref.

// Input — simple strings (defaults to asc606)
{
  "claims": [
    "Entity X enters a contract for $120,000.",
    "The arrangement has two distinct performance obligations."
  ]
}

// Input — structured claims with per-claim standard
{
  "claims": [
    { "text": "Lease liability of $2.1M", "standard": "ifrs16" },
    { "text": "Revenue of $5M recognised over time", "standard": "asc606" }
  ]
}

// Output → { "batch_id": "550e8400-...", "total": 2, "status": "running" }

Supported standards: asc606, ifrs16, ifrs15, asc842, ias36, ifrs9, asc740, asc350, ifrss1, asc815.

batch_status

Async

Poll the progress of a batch verification.

// Input
{ "batch_id": "550e8400-..." }

// Output → { "completed": 2, "passed": 2, "failed": 0, "status": "running" }

get_report

Query

Download the HTML proof certificate for a completed verification.

// Input
{ "id": "550e8400-...", "save_to": "~/Desktop/" }

If save_to is provided, saves the report to the specified directory.

MCP Resources

URIDescription
proofledger://predicatesLists all 280+ predicates (10 standards) in the formal verification library.
proofledger://predicates/{standard}Lists predicates for a specific standard (e.g. ifrs16).
proofledger://usageCurrent plan, verifications used this month, and remaining limit.

API Reference

Direct HTTP access for custom integrations. Base URL: https://api.proofledger.space

Authentication

All requests require an API key in the X-API-Key header:

curl -X POST https://api.proofledger.space/verify \
  -H "Content-Type: application/json" \
  -H "X-API-Key: pl_live_your_key_here" \
  -d '{"claim_text": "3-year software license, $120k"}'
PlanMonthly Limit
Professional500
Enterprise5,000
Platform50,000
POST /verify

Submit a single claim for verification.

Request Body

{
  "claim_text": "Entity X enters a 3-year software license agreement for $120,000.",
  "standard": "asc606"  // optional, defaults to asc606
}

Response 202

{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "message": "Claim submitted for verification"
}
StatusReason
400Missing claim_text
401Missing or invalid API key
429Monthly limit reached
POST /verify/batch

Submit multiple claims for parallel verification. Supports per-claim standard and optional document linking.

Request Body

{
  "claims": [
    "Entity X enters a contract for $120,000.",
    { "text": "Lease liability of $2.1M", "standard": "ifrs16" },
    { "text": "Revenue of $5M", "standard": "asc606", "source_ref": { "page": 12 } }
  ],
  "document": {
    "name": "Q4_financials.pdf",
    "hash": "sha256:abc123..."  // optional
  }
}

Response 202

{
  "batch_id": "550e8400-...",
  "total": 3,
  "status": "running"
}
GET /verify/batch/{id}

Poll batch progress.

// Response 200
{
  "batch_id": "550e8400-...",
  "total": 3,
  "completed": 2,
  "passed": 2,
  "failed": 0,
  "status": "running"  // or "completed"
}
GET /report/{id}

Retrieve the verification report. Returns HTML proof certificate, or JSON if no HTML report available.

Verifying Certificates

The public key is available at api.proofledger.space/.well-known/proofledger.pub

from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey
from cryptography.hazmat.primitives.serialization import load_pem_public_key
import json, base64

pub_key = load_pem_public_key(open("proofledger.pub", "rb").read())

# Reconstruct payload (everything except "certificate")
result = {k: v for k, v in signed_result.items() if k != "certificate"}
payload = json.dumps(result, sort_keys=True, separators=(",", ":")).encode()

# Verify
signature = base64.b64decode(signed_result["certificate"]["signature"])
pub_key.verify(signature, payload)  # Raises InvalidSignature if tampered

ASC 606 Predicate Library

58 predicates covering the 5-step revenue recognition model, implemented in Lean 4.

Step 1: Identify the Contract 606-10-25

valid_contract commercial_substance measurable_consideration collectibility_probable approved_contract identified_rights identified_payment_terms contract_combination contract_modification

Step 2: Identify Performance Obligations 606-10-25-19

distinct_obligation series_of_distinct capable_of_being_distinct separately_identifiable customer_can_benefit not_highly_interdependent not_significant_modification not_significant_integration shipping_handling warranty_service_type warranty_assurance_type

Step 3: Determine Transaction Price 606-10-32

variable_consideration constraint_variable significant_financing noncash_consideration consideration_payable expected_value_method most_likely_amount price_concession refund_liability right_of_return

Step 4: Allocate Transaction Price 606-10-32-28

allocate_by_ssp observable_price adjusted_market_assessment expected_cost_plus_margin residual_approach allocate_discount allocate_variable_consideration

Step 5: Recognise Revenue 606-10-25-27

over_time point_in_time output_method input_method control_transferred customer_has_legal_title customer_has_physical_possession customer_has_risks_rewards customer_accepted_asset right_to_payment customer_controls_asset no_alternative_use enforceable_right_to_payment

Licensing 606-10-55

license_right_to_use license_right_to_access recognised_point_in_time recognised_over_time sales_based_royalty usage_based_royalty functional_ip symbolic_ip

IFRS 16 Predicate Library

28 predicates covering lease accounting — identification, classification, measurement, and special topics.

Lease Identification §9–10

is_lease

Recognition Exemptions §5–8

short_term_lease low_value_lease

Classification §61–66

classify_finance_lease classify_operating_lease

Lessee Measurement §22–46

lessee_recognition measure_rou_asset measure_lease_liability depreciate_rou_asset interest_on_lease_liability subsequent_cost_model subsequent_revaluation_model remeasure_lease_liability

Lessor Accounting §67–88

finance_lease_recognition finance_lease_income operating_lease_income lessor_initial_direct_costs

Modifications §44–46

lease_modification_separate lease_modification_remeasure

Sale-and-Leaseback §98–103

sale_leaseback_is_sale sale_leaseback_not_sale sale_leaseback_gain

Special Topics

sublease_classification covid_rent_concession ibor_reform_exemption variable_lease_payment lease_incentive lease_term_assessment

IFRS 15 Predicate Library

Predicates covering IFRS 15 core accounting standards for revenue from contracts with customers.

Core

ifrs15_core

ASC 842 Predicate Library

Predicates covering ASC 842 lease accounting standards.

Core

asc842_core

IAS 36 Predicate Library

Predicates covering IAS 36 impairment of assets standards.

Core

ias36_core

IFRS 9 Predicate Library

Predicates covering IFRS 9 financial instruments standards.

Core

ifrs9_core

ASC 740 Predicate Library

Predicates covering ASC 740 income taxes accounting standards.

Core

asc740_core

ASC 350 Predicate Library

Predicates covering ASC 350 intangibles—goodwill and other standards.

Core

asc350_core

IFRS S1 Predicate Library

Predicates covering IFRS S1 sustainability-related financial disclosures standards.

Core

ifrss1_core