
schemafit
Lint JSON schemas against LLM provider constraints
What this is
A CLI linter that statically checks JSON schemas against each LLM provider's constraints so they don't fail at runtime.
Our one-line summary — not the founder’s tagline.
- How it works
- A CLI that statically lints JSON schemas/tool definitions against each LLM provider's documented constraints (e.g. Anthropic-rejected keywords, missing additionalProperties), pointing to the exact JSON-Pointer path and reason, with a repair pass that emits a best-effort provider-valid variant.
- What's different
- Makes no model calls, needs no API key, and has zero runtime dependencies.
- Best for
- Teams whose schemas work on one LLM provider but 400 on another.
What we measured
Nobody else publishes this — it comes from knocking on the door every day.
- Watched by us
- 2 days
- Last checked
- 2d ago
Where it shows up
Every group here is a page of its own — each one checked daily.
The numbersIs it still shipping, is it overpriced, where did it land — and what the price is built from.
League price & chart
No money. No seat. It goes on your record — and in 28 days reality settles it.
Calls are closed while we rebuild accounts. You can still read every one of them.
AI. Launched 2d ago on PeerPush, where it placed #208. Today, it's live, but nothing on the site has changed since we started watching.
Quiet for 2 days — no penalty yet, but quiet doesn't stay free.
We check this site every day, ourselves. A founder can post “still working on it” — a claim like that doesn't price. What we price is what we can verify from the outside: evidence, not announcements. The real question isn't “will this be huge?” — it's “will they still be moving in four weeks?”
The market viewHow this launch is priced and ranked in our league — the investor side of the page.
ranked by the reality anchor, not the market price
It placed #208 on PeerPush with 1 votes.
No matter how much money goes in. There is no pump here — you can't make yourself right by buying more. The line only moves on things that actually happened: an award, revenue that grew, a new platform, code that shipped — or silence.
A launch that goes quiet eases down a little at a time — never a cliff you could have run from the night before.
How the launch is moving on its own board, day by day — the crowd's attention.
A flat line is normal: votes stop within a day or two of launch, on every board. What's unusual — and what actually counts — is a launch that keeps pulling votes long after its day is over.
About
01 // THE PROBLEM A JSON Schema / tool definition / response_format that works on OpenAI can 400 on Anthropic or Gemini (and vice-versa): nested oneOf, a missing additionalProperties: false, a default in a property, Anthropic-rejected keywords (minLength, format, pattern), Gemini’s lack of anyOf. The API tells you it failed — not which constraint — so teams hand-port schemas and debug by trial-and-error at runtime. schemafit encodes each provider’s documented constraint surface as a versioned, declarative rule pack and lints your schema statically — pointing at the exact JSON-Pointer path, the keyword, and why — with a non-zero exit code so CI fails the PR instead of prod. A repair pass emits a best-effort provider-valid variant. It makes no model calls, needs no API key, and has zero runtime dependencies. 02 // DEMO lint statically checks your schema against each provider’s rule pack, names the exact violation, and exits non-zero so CI blocks the PR. repair emits a provider-valid variant. (Illustrative schema; the output format is the tool’s real one.) terminal # 1. Lint a schema against all three providers schemafit lint order.schema.json --provider openai,anthropic,gemini openai PASS anthropic FAIL /properties/email keyword: format → Anthropic rejects `format` in tool input schemas gemini FAIL /properties/items keyword: anyOf → Gemini does not support anyOf / union types SCHEMAFIT_STATUS=FAIL (exit 1 — build blocked) # 2. Auto-repair to a provider-valid variant schemafit repair order.schema.json --provider anthropic --out fixed.json wrote fixed.json (1 keyword rewritten, intent preserved) 03 // QUICKSTART On PyPI — pip install and lint your schema. No API key, no model calls; the core has zero runtime dependencies. Install Static, offline CLI pip install schemafit COPY Lint a schema against the providers you ship to schemafit lint my-schema.json \ --provider openai,anthropic,gemini,mistral,cohere COPY Prove the spine (hermetic, no config required) schemafit demo COPY 04 // COMMAND SURFACE lint Lint one or more schemas against one or more providers; reports each violation’s JSON-Pointer, keyword, and reason, and exits non-zero so CI fails the build. repair Emit a best-effort provider-valid variant of a schema — stripping or rewriting the offending keywords while preserving intent. providers List the supported providers and the versioned rule pack backing each (OpenAI, Anthropic, Gemini, Mistral, Cohere). demo Run a hermetic, end-to-end proof from a fresh clone — no API key, no network, deterministic output. 05 // WHY IT IS DIFFERENT Static, pre-ship CI lint Instructor, BAML, LiteLLM and the Vercel AI SDK are excellent runtime clients — they normalize or repair at call-time. schemafit fills the gap they leave: a static lint that fails the build before the schema ever reaches a provider, over the raw schemas you already ship, with no DSL or codegen buy-in. Zero runtime deps, no API key It makes no model calls and needs no key — easy to vendor, audit, and trust in a build pipeline. Runs from a fresh clone or a single pip install, fully offline. Grounded, versioned rule packs — with drift detection Every rule is grounded in a real, cited provider issue. Provider constraints are encoded as declarative, versioned rule packs — so the lint stays honest and reviewable as provider APIs change. New in v0.5: automatic rule-pack drift detection — an opt-in --live-verify run that rejects a schema the static pack passed flags the pack as lagging the provider’s docs, so the packs stay honest as the APIs move. CI-enforceable, with SARIF A non-zero exit fails the PR; lint --format sarif feeds GitHub code-scanning / the Security tab. An opt-in --live-verify can confirm against a real provider, but it is mock-default and never required in CI.
Where it launched
1 platform| Platform | Votes | Counts toward price | Link |
|---|---|---|---|
| PeerPush | 1 | sets the price | ↗ |
The board it did best on sets the price. Every other board only adds to it if the launch also placed high on that board too — because just showing up somewhere isn't an achievement. Listing on twelve directories is free; placing well on them isn't.
Discussion (0)
No thesis posted yet. Be the first.