Proofable SDK
Add verification gates, reusable proof, and agent permissions to your app.
Verify someone once, then reuse that proof on every later check.
Start here
npm install @proofable/sdk
Requires Node.js 20 or later.
Send a person to verify
import { getHostedCheckoutUrl } from '@proofable/sdk';
window.location.assign(getHostedCheckoutUrl({
verifiers: ['proof-of-human'],
returnUrl: 'https://app.example.com/auth/callback',
}));
The person verifies on Proofable and returns to returnUrl with a proof ID (qHash). Store it; later decisions read that proof.
Check the proof on your server
import { ProofableClient } from '@proofable/sdk';
const result = await new ProofableClient().gateCheck({
gate: [{ verifierId: 'proof-of-human' }],
subject: { accountId: user.accountAddress },
});
if (result.satisfied) {
// Allow the action.
}
Docs | SDK | CLI | MCP | API | Examples
Combine checks in a gate
Define a gate when the decision needs several checks.
import { ProofableClient, defineGate } from '@proofable/sdk';
const proofable = new ProofableClient();
const gate = defineGate([
{ verifierId: 'proof-of-human' },
{ verifierId: 'ownership-dns-txt', match: [{ path: 'domain', value: 'acme.com' }] },
]);
const result = await proofable.gateCheck({ gate, subject });
A published gateId is optional; use one when you need a persisted listing, price, or schedule. Never ship access keys in browser code.
Gate a React page
import { VerifyGate } from '@proofable/sdk/widgets';
<VerifyGate gate={[{ verifierId: 'proof-of-human' }]} onVerified={grantAccess} />;
Connect an editor or agent host
Interactive clients add https://mcp.proofable.me/mcp, click Connect, and sign in. Servers and CI send a server key from PROOFABLE_ACCESS_KEY as a Bearer token.
npx -y @proofable/sdk setup
npx -y @proofable/sdk setup --access-key $PROOFABLE_ACCESS_KEY
npx -y @proofable/sdk mount <agentId> --apply <host>
npx -y @proofable/sdk doctor --live
--apply accepts cursor, claude, codex, hermes, openclaw, or opencode. VS Code uses --apply cursor. Setup steps: docs.proofable.me/mcp/setup.
Core methods
import { ProofableClient } from '@proofable/sdk';
const client = new ProofableClient({
apiUrl: 'https://api.proofable.me',
timeout: 30000
});
apiKey (npk_*) is server-side only. appId is optional public attribution for server flows; published gate checkout and gateCheck({ gateId }) work without it.
Issues: github.com/proofable/sdk/issues. Security: SECURITY.md. Contributing: CONTRIBUTING.md.
Apache-2.0. Published by NEUS Network, Inc.