Install
openclaw skills install verfiTCPA consent verification for lead generation. Use when adding consent capture to web forms, verifying lead consent before contact, claiming/managing consent sessions, pulling proof for disputed leads, or integrating with the Verfi API. Covers SDK installation, API authentication, session lifecycle (create → claim → verify → proof), and compliance workflows.
openclaw skills install verfiVerfi captures verifiable proof of consumer consent. Publishers add a script tag to capture sessions; buyers verify consent via API before contacting leads.
Add the SDK to any page with a form:
<script src="https://sdk.verfi.io/v1/verfi.js" data-key="pk_YOUR_PUBLIC_KEY" async></script>
The SDK auto-detects forms, records interactions (mouse, clicks, keystrokes, scroll), and generates a Verfi ID (VF-xxxxxxxx) on form submission.
curl -H "Authorization: Bearer sk_YOUR_SECRET_KEY" \
https://api.verfi.io/tenant/v1/sessions/VF-a1b2c3d4/proof
Returns consent status, interaction metrics, form data, device info, and tamper verification. All PII is SHA-256 hashed.
curl -X POST -H "Authorization: Bearer sk_YOUR_SECRET_KEY" \
https://api.verfi.io/tenant/v1/sessions/VF-a1b2c3d4/claim
Starts 3-year retention. Unclaimed sessions expire in 72 hours.
Two key types:
| Key | Format | Use |
|---|---|---|
| Public | pk_... | SDK script tag (client-side) |
| Secret | sk_... | API calls (server-side, Bearer token) |
Secret keys have scopes: sessions:claim, sessions:unclaim, sessions:search, sessions:proof, sessions:expiration.
Generate keys in the Verfi dashboard under Integration > API Keys.
Base URL: https://api.verfi.io/tenant/v1
All endpoints require Authorization: Bearer sk_... header.
| Method | Path | Scope | Description |
|---|---|---|---|
| GET | /sessions | — | List claimed sessions (paginated) |
| GET | /sessions/{verfiID} | sessions:search | Look up session, verify PII hashes |
| GET | /sessions/{verfiID}/proof | sessions:proof | Machine-readable proof data |
| POST | /sessions/{verfiID}/claim | sessions:claim | Claim session (3-year retention) |
| POST | /sessions/{verfiID}/unclaim | sessions:unclaim | Release session (30-day retention) |
| PUT | /sessions/{verfiID}/expiration | sessions:expiration | Update expiration date |
Full API reference: see references/api-reference.md
</body>)GET /sessions/{verfiID}/proof to check consentconsent.given === true and consent.tcpa_compliant === trueGET /sessions/{verfiID}?email={hash}&phone={hash}POST /sessions/{verfiID}/claim to start retentionGET /sessions/{verfiID}/proof for machine-readable proofproof_url for a human-readable proof pageGET /sessions to list all claimed sessionsGET /sessions/{verfiID}/proofconsent.given === false or verification.tamper_detected === trueFor MCP-compatible agents (Claude Desktop, Cursor, Windsurf):
{
"mcpServers": {
"verfi": {
"command": "npx",
"args": ["-y", "@verfi/mcp-server"],
"env": { "VERFI_API_KEY": "sk_..." }
}
}
}
Auto-discoverable at: https://api.verfi.io/.well-known/openapi.json
Compatible with OpenAI GPT Actions, LangChain, CrewAI, and any framework that generates tools from OpenAPI specs.
| Problem | Fix |
|---|---|
| SDK not recording sessions | Check public key is correct, script loads without errors |
| 401 Unauthorized | Verify secret key, check Authorization: Bearer sk_... format |
| 403 Insufficient permissions | API key missing required scope — update in dashboard |
| Session not claimable (409) | Session already claimed or status isn't "recorded" |
Proof shows consent.given: false | Form may not have consent language/checkbox detected by SDK |