Skip to main content
Glama
MichalisKampouridis

legal-doc-intelligence

README.md
# Legal Doc Intelligence — Pay-Per-Call MCP Server

An MCP server that exposes 8 AI-powered legal document analysis tools, each billed per call in USDC on Base via the [x402 payment protocol](https://x402.org). No accounts, no subscriptions — agents pay only for what they use.

**Live endpoint:** `https://income-machine-production.up.railway.app/mcp`  
**Health check:** `https://income-machine-production.up.railway.app/health`  
**Transport:** HTTP (Streamable HTTP / MCP 2025-11-25)

---

## Tools & Pricing

| Tool | Description | Price |
|------|-------------|-------|
| `extract_clauses` | Extract and categorize all clauses from a contract | $0.02 USDC |
| `identify_risks` | Identify legal risks, red flags, and unfavorable terms | $0.05 USDC |
| `compare_contracts` | Compare two contracts and highlight differences | $0.05 USDC |
| `extract_parties` | Extract all parties, roles, and contact info | $0.01 USDC |
| `summarize_contract` | Generate an executive summary for non-lawyers | $0.02 USDC |
| `check_compliance` | Check compliance with GDPR, CCPA, SOX, and others | $0.05 USDC |
| `extract_obligations` | Extract all obligations, deadlines, and deliverables | $0.02 USDC |
| `calculate_penalty_exposure` | Calculate maximum financial penalty exposure | $0.05 USDC |

Prices auto-adjust downward if call volume drops below the 7-day average.

---

## Payment Protocol (x402)

Payments use the [x402](https://x402.org) HTTP payment standard:

1. Call any tool without a `payment_header` → server returns a `402 Payment Required` response with `PaymentRequirements`
2. Client constructs a USDC payment on **Base** to `0xF4641f6AF6cc32c588Fa948ff64dBC0974F7D290`
3. Client encodes the signed payment as a base64 `payment_header` and retries the call
4. Server verifies and settles on-chain, then returns the result

**Network:** Base (Coinbase L2)  
**Token:** USDC (`0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913`)  
**Receiver:** `0xF4641f6AF6cc32c588Fa948ff64dBC0974F7D290`

---

## Quick Start — Claude Desktop

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "legal-doc-intelligence": {
      "url": "https://income-machine-production.up.railway.app/mcp",
      "transport": "http"
    }
  }
}
```

You will need a Base wallet with USDC to pay for tool calls. Compatible wallets: [Coinbase Wallet](https://wallet.coinbase.com), MetaMask with Base network.

---

## Quick Start — Programmatic (Node.js)

```js
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(
  new StreamableHTTPClientTransport(
    new URL("https://income-machine-production.up.railway.app/mcp")
  )
);

// First call returns payment requirements
const result = await client.callTool("identify_risks", {
  contract_text: "...",
  jurisdiction: "EU",
});

// If result contains x402: true, construct payment and retry with payment_header
```

---

## Self-Hosting

### Requirements

- Node.js 20+
- A Base wallet with ETH (gas) and USDC
- Railway / Fly.io / any Node.js host

### Environment Variables

```env
ANTHROPIC_API_KEY=      # Claude API key for AI processing
CDP_PRIVATE_KEY=        # Private key of the Base wallet (0x...)
WALLET_ADDRESS=         # Public address of the same wallet
KRAKEN_API_KEY=         # Optional: auto-convert USDC → EUR via Kraken
KRAKEN_API_SECRET=      # Optional
KRAKEN_DEPOSIT_ADDRESS= # Optional: your Kraken USDC deposit address on Base
TELEGRAM_BOT_TOKEN=     # Optional: alerts
TELEGRAM_CHAT_ID=       # Optional
DASHBOARD_PASSWORD=     # Password for the private /dashboard endpoint
PORT=3000
BASE_URL=               # Your public URL, e.g. https://your-app.railway.app
```

### Run

```bash
npm install
npm run build
npm start
```

---

## Architecture

- **MCP server** — Express + `@modelcontextprotocol/sdk`, HTTP transport
- **Payment layer** — `x402` npm package for verify + settle on Base
- **Auto-conversion** — Kraken API polls USDC balance and converts to EUR when threshold is met
- **Autopilot** — cron job scans HN for new MCP marketplaces weekly and adjusts prices nightly
- **Alerts** — Telegram bot notifies on payments, errors, and conversions

---

## License

MIT