Metered by proofs, not by seats

Pay for proofs you actually run.

Every plan runs the same Z3 engine, at the same bound and the same solver timeouts. We don't paywall the strength of a proof — you're paying for volume and for who picks up the phone when the solver returns unknown.

plan: free
Free
$0 forever

For side projects, OSS repos and kicking the tyres on your own migrations.

+ 100 verification runs / month
+ bound 1–6, full SQL coverage
+ workspace, CLI, MCP server
+ API keys for CI/CD
+ unlimited run history
- community support
plan: team
Team
$49 / month

For platform teams gating every schema change in CI, across every service.

+ everything in Individual
+ unlimited runs across the whole team
+ shared support channel
+ onboarding for your migration layout
~ GitHub Action — in development

Limits, side by side

// same solver, same ceilings
limit
free
individual
team
verification runs / month
100
2000
unlimited
max bound (rows / table)
6
6
6
solver timeout — workspace
15s, up to 60s
15s, up to 60s
15s, up to 60s
solver timeout — CI API
60s, up to 120s
60s, up to 120s
60s, up to 120s
SQL coverage
full
full
full
CLI · MCP · API keys
yes
yes
yes
counterexample + LLM explanation
yes
yes
yes
run history
unlimited
unlimited
unlimited
support
community
email, 1 business day
shared channel
GitHub Action
in development

The bound, the timeouts and the supported SQL are identical on every plan. A cheaper plan never buys you a weaker proof — it would make the verdict mean something different depending on what you paid, which is the one thing a verifier can't afford. Paid plans lift the monthly run cap.

Sizing

How many runs will you use?

One run is one verification of one query pair. A rewrite you check twice is two runs — there's no result cache yet, so re-running the same pair counts again.

$ skolem usage --estimate
runs / month52
free allowance100
recommendedfree
within the free tier — no card needed

Questions engineers actually ask

Does Skolem connect to my database?

No. It reads your DDL and your SQL text — there are no credentials to hand over and no rows are ever read from your database. The counterexample is invented by the solver, not sampled from production. Note that the CLI and MCP server do send your DDL and query text to the API to be verified.

What counts as a run?

One verification of one query pair, from any surface — workspace, CLI, MCP or the API. Every run counts against the monthly allowance, including ones that come back unknown or error.

Is a higher bound worth paying for?

It isn't something you pay for — bound 1–6 is available on every plan, including Free. The default of 3 catches the large majority of real semantic bugs; raising it grows the search space by roughly bound^tables, so the practical limit is your patience, not your invoice.

What happens when I hit the free limit?

Verification returns 402 with an upgrade prompt, and the CLI exits 2 — the same code it uses for any infrastructure problem, so a lapsed quota can never be mistaken for a failing query. Nothing is deleted, and your history stays readable.

Start on Free. Upgrade when CI needs it.

No card required for the first 100 runs.

Run your first proof bound 1–6 · cancel anytime from the billing portal