Developers

Three calls to a proof.

A typed SDK, a mock open-banking sandbox, and an on-chain registry you can query. Prove, publish, and verify inclusion without ever touching a circuit.

quickstart.sh
# install the SDK
$ npm i @solva/sdk-ts
# or run the whole pipeline locally against mock open-banking
$ git clone https://github.com/jes-labs/solva && cd solva
$ just demo
✓ prover, orchestrator, and sandbox up · publishing to Testnet

Quickstart

Read and verify in a few lines.

The SDK resolves an institution to its own on-chain registry and reads its latest proof. Proving and publishing run in the orchestrator, so reserves and liabilities never touch your app. An in-browser prover is on the roadmap.

  • Typed end to end (TypeScript)
  • Reads proofs straight from Stellar
  • No circuit knowledge required
read.ts
import { Solva } from "@solva/sdk-ts";
const solva = new Solva({ network: "testnet", tenant: "meridian-bank" });
// read the latest solvency proof, verified on-chain
const proof = await solva.getOnChainLatestProof();
console.log(BigInt(proof.reservesTotal) >= BigInt(proof.liabilitiesTotal)); // true
// a customer confirms their balance was counted
const { included } = await solva.verifyInclusion("cust-001");

The API

Three primitives: run a cycle, read the proof, verify inclusion.

POST/v1/cycles

run a cycle

Fetch signed reserves, generate the zero-knowledge proof, and publish it on-chain. One call runs the full pipeline.

GET/v1/proofs/latest

latest proof

The latest published proof for an institution: reserves, liabilities, root, and timestamp.

GET/v1/proofs/inclusion/{ref}

inclusion

The data a customer needs to confirm their balance was counted in the committed tree.

Sandbox

A mock open-banking world to build against.

Spin up synthetic institutions, ledgers, and customer balances. Generate proofs against fake data, then point the same code at production.

$ curl -X POST $SANDBOX/admin/scenarios/solvent
→ reserves 16,000,000 · liabilities 9,000,000
$ curl -X POST $ORCH/v1/cycles -d '{"tenant_id":"meridian-bank"}'
✓ proof generated and published to Testnet
✓ reserves ≥ liabilities

Solvency oracle · MCP

A solvency feed your agents can trust.

Expose verified solvency over the Model Context Protocol. An autonomous agent can check a counterparty before it moves funds, and get a cryptographic answer rather than a claim.

Read about the oracle →
// MCP tool call
get_solvency({
  institution_id: "meridian-bank"
})
→ {
  solvent: true,
  reservesTotal: "16000000",
  liabilitiesTotal: "9000000",
  verifiedOnChain: true
}

Ship your first proof today.

Free in the sandbox. No customer data, no circuit knowledge.