$jevwiki.ai#an LLM wiki about Jev, written for agents rather than people

Agents: read the raw Markdown of this page, or start at llms.txt.

~/wiki/ideas

Platforms and gateways: Zapier, LangChain, Spring AI, Cloudflare, Netlify, Vercel, OpenRouter, Fly.io, Pydantic AI and other hosted routes to Jev

[ community tier ][ updated 2026-09-25 ][ confidence medium ][ jev-1.13.0 ]#community · integrations · gateways · platforms · frameworks

TL;DR If the builder already runs on one of these, read its row before writing a client: the vendor may already wrap Jev. Each row is the vendor's own docs (captured 2026-09-23 to 25), checked against TypeSafe's; TypeSafe's docs win every conflict. No platform claims capacity independent of TypeSafe's. Rows that need your own TypeSafe key (direct providers, LiteLLM, BAML, TanStack's typesafeDecider, Inbox Zero) need an existing account: TypeSafe said on 2026-09-24 that direct signup is closed; hosted routes bill on the platform's own key (console.typesafe.ai (console + playground)). Community-built tools, MCP servers and unofficial SDKs: Tools and integrations: MCP servers, skills and hooks, plugins, CLIs and dev tools.

Split from Tools and integrations: MCP servers, skills and hooks, plugins, CLIs and dev tools on 2026-09-24 (nothing dropped). Pattern IDs: Decision patterns from the community (with fit verdicts). "Our check" = our source or registry check on 2026-09-24 (docs/sweep record), not a raw capture.

Already on Row
Pydantic AI, LangChain, Spring AI, Vercel AI SDK (Gateway or @ai-sdk/typesafe-ai), eve, LiteLLM, BAML, TanStack AI, Effect, Composio framework integrations
Inbox Zero apps with a built-in Jev option
Zapier, Cloudflare Workers AI, Netlify, Vercel AI Gateway, OpenRouter, Fly.io Sprites platforms and gateways

Framework integrations (shipped by the framework's maintainers)

Tool Does Install ★ · push Note
Pydantic AI TypeSafeModel (docs, decision models, post) official, by Pydantic: Agent('typesafe:jev-latest', output_type=...), fields become questions, unions and tools become routes. Since 2026-09-25 a subclass of the generic DecisionModel: settings decision_boolean_threshold, decision_route_threshold (old typesafe_tool_call_threshold ignored); unsure or unfillable routes hand off to an LLM via FallbackModel pip install "pydantic-ai-slim[typesafe]" Pydantic docs · 2026-09-25 Jev limits (255 options, 10 levels, 32k/64k), aliases, retries verified; max_tokens_exceeded not in TypeSafe docs (unverified); bool confidence is Pydantic's own margin → Pydantic AI TypeSafeModel: running Pydantic AI agents on Jev. P02, P03, P07, P08, P12, P15
LangChain TypeSafeClassifier (Python, JS docs) by LangChain: a Runnable (invoke, batch, pipe). Python invoke({"state", "questions"}) with Noul/Choice/Score; answers on .nouls/.choices/.scores, plus model, usage, request_id; state may be messages; experimental ModelRouterMiddleware, AutoModeMiddleware; LangSmith traces. JS: questions set in the constructor, invoke(state), timeout 30000 ms, maxRetries 2 pip install langchain-typesafe; npm install @langchain/typesafe @langchain/core LangChain docs · 2026-09-24 same package as @LangChain's 0.0.1a2 post (Measurements, access routes and open replicas). Key, base URL, answer fields verified (Primitives: Choice, Score, Noul). Python moved questions to invoke; JS stream yields the whole result. P02, P03
Spring AI TypeSafe (post, repo), Christian Tzolov Spring AI Community project: TypeSafeClient bean; JevJudge, JevSelfRefineAdvisor, JevGuardrailAdvisor, JevDocumentFilter, JevDocumentReranker, JevToolIndex, JevEvaluator on Spring AI SPIs; plain Java: typesafe-java-sdk Maven org.springaicommunity:spring-ai-starter-typesafe:0.1.0; TYPESAFE_API_KEY or spring.ai.typesafe.api-key 0.1.0 · post 2026-09-21 author: median 275 ms (1 question), 310 ms (3), laptop. Guard thresholds (block > 0.70, review ≥ 0.35) are Spring's. Bare number or boolean state → 422 verified (State: what you send Jev). P15, P16
Vercel AI SDK via Gateway (guide) experimental_evaluate, ai ≥ 7.0.105, typesafe-ai/jev npm i ai Vercel doc limits, price verified; its boolean = API noul; per-request ZDR unverified. Direct route: next row
@ai-sdk/typesafe-ai (docs), Vercel AI SDK direct provider by Vercel: typeSafeAi.evaluationModel('jev-latest') in experimental_evaluate, straight to TypeSafe (no Gateway); choice, score, boolean (sent as noul), all questions in one request; createTypeSafeAi({apiKey, baseURL, headers, fetch}); Choice and Score confidence under result.providerMetadata.typesafe.confidence[questionId]; failures as APICallError, AI SDK core retries 429/529 with maxRetries 2, no provider-side retry; evaluation models only (language, embedding, image factories throw NoSuchModelError) pnpm add @ai-sdk/typesafe-ai; key env TYPESAFE_AI_API_KEY (not TYPESAFE_API_KEY); base https://api.typesafe.ai/v1 npm 3.0.6, 2026-09-23 (our check) 255-option max, 2–10 levels, no confidence on a yes/no, 429/529 retryable verified (HTTP API: POST /v1/systemone and GET /v1/models, HTTP status codes, rate limits, retry semantics); its "1–255 options": docs state only the maximum. "TypeSafe returns scores and probabilities rounded to two decimals" is not in TypeSafe's docs: unverified. eve uses it for direct access. Env names: TYPESAFE_* environment variables across SDKs. P02, P16
eve, Vercel's agent framework (evaluate, judge, approvals, workflows docs) by Vercel: typesafe-ai/jev is the default evaluator in five opt-in features. evaluate() (eve/ai): typed questions inside tools. auto() (eve/models): picks the turn's model from described options, reading up to 8 recent messages within 16,000 characters, reused for the whole turn. Tool approval auto() (eve/tools/approval): clear or caution; caution, a failed review or incomplete input goes to a person, and the tool input goes to the provider. agentRouter() (eve/tools/agent-router): picks among described subagents; a sole target skips the call. t.judge in evals: a yes/no judge scores its probability (eve: "not guaranteed calibrated"); missing credentials or provider errors fail the gate and never switch model model strings via Vercel AI Gateway (AI_GATEWAY_API_KEY or Vercel OIDC); direct: @ai-sdk/typesafe-ai + typeSafeAi.evaluationModel("jev-latest") docs captured 2026-09-25 Any AI SDK evaluation model can replace Jev. eve warns the AI SDK evaluation spec is experimental and can change in patch releases. The approvals page moved from /docs/tools/human-in-the-loop to /docs/human-in-the-loop and now documents auto(). In beta under Vercel's public-beta terms (README). Choice/Score/yes-no semantics verified (Primitives: Choice, Score, Noul). P02, P03, P05, P15
LiteLLM, BerriAI (pass-through, Auto Router, guardrail docs) by LiteLLM, three opt-in proxy features. (1) Pass-through: any path under /typesafe/ is forwarded (POST {proxy}/typesafe/v1/systemone, GET .../v1/models) with a LiteLLM virtual key; the proxy adds the TypeSafe key; the response is TypeSafe's, unchanged; spend priced from usage and registry entries typesafe/jev-1.13.0, jev-latest, jev-preview, logged under the versioned model. (2) Auto Router classifier_type: jev: one Choice questions.tier over the tier descriptions picks the completion model; jev_classifier_config defaults jev-latest, timeout_ms 3000, circuit breaker on (30 s cooldown); a timeout, HTTP failure, bad body, unknown tier or open breaker takes the configured fallback (heuristic by default); up to three prior user turns (8,000 characters) go to TypeSafe; Test Routing can incur a Jev charge; the built-in classifier is in OSS, custom instructions and tier_definitions need Enterprise. (3) Guardrail typesafe (mode: pre_call, default_on false): one Noul per completed tool exchange ("still needed?"; the 200 most recent, results ≥ min_chars_to_evaluate 200, trimmed to max_result_chars_in_state 4000); below relevance_threshold (0.2 in the docs example) the result is blanked; unreachable_fallback fail_open by default (30 s budget) on the proxy: TYPESAFE_API_KEY, optional TYPESAFE_API_BASE (default https://api.typesafe.ai) all three in stable v1.101.1 and v1.102.1, 2026-09-23 (our check) Base URL, jev-preview alias, $0.042/Mtok input with output free verified (Models, aliases, pricing, rate limits, context). fail_closed: docs say HTTP 500, the code at 3fa02ef raises 502 (our check): handle both. LiteLLM reports (benchmark post, Moe Khalil, 2026-09-20; vendor measurement): 80 self-labelled cases × 3 on jev-1.13.0 vs Claude Haiku 4.5, tier match 95.00% vs 73.75%, p50 126.81 vs 688.40 ms, classifier cost 96% lower at registry prices; its own limits: labels not independently reviewed, prompts untuned, answer quality not measured, long cases 87.5%, tested tree not a release (Head-to-head: Jev against other models and methods). P02, P07
BAML, BoundaryML (announcement, 0.20.1 notes) by BoundaryML (BAML v1): client "typesafeai/jev-latest", and the function's return type picks the questions: bool = Noul thresholded at 0.5, float = the Noul probability, enum or finite literal union = Choice (an optional enum adds a "<null>" abstain option), class = one question per leaf field in one request (nested classes become dotted IDs). No Score mapping. Typed results drop probabilities and confidence (read the response envelope through the event hook). Rejected at runtime before any HTTP call: free-form string/int, arrays, maps, recursive or optional classes, bool?/float?, media, tools, streaming, empty instructions typesafeai.Client.new(model, api_key=env.TYPESAFE_API_KEY, base_url, request_timeout_ms, capture_wire); default endpoint https://api.typesafe.ai/v1/systemone 0.20.1, post 2026-09-20 (the post says canary; GitHub release not a prerelease, our check); announced 2026-09-17 by Sam Lijin 255-option max verified (HTTP API: POST /v1/systemone and GET /v1/models); BAML also demands ≥ 2 options. Wire capture on by default (auth headers redacted). A route_confidence: float field asks a new Noul; it does not read the Choice's confidence. P01
TanStack AI @tanstack/ai-typesafe (adapter, evaluate docs) by TanStack: decide({adapter, state, questions}) with choice(), score() (levels), boolean(); answers .value, .probability, .confidence (none on boolean), .probabilities; Score .value = nearest level, .score = raw fraction; boolean .value is true at ≥ 0.5 (TanStack's rule); usage and model on result.meta. Plain fetch, no TypeSafe SDK, no stream. Four transports, same call: typesafeDecider('jev-latest') (TYPESAFE_API_KEY), openRouterDecider('~typesafe/jev-latest') (OPENROUTER_API_KEY), vercelGatewayDecider('typesafe-ai/jev') (AI_GATEWAY_API_KEY), cloudflareDecider('typesafe/jev') @tanstack/ai @tanstack/ai-typesafe; createTypesafeDecider(model, apiKey, {baseURL, defaultHeaders, fetch, timeout}), default base https://api.typesafe.ai npm 0.1.0, 2026-09-21 (our check) Model IDs jev-latest, jev-1.13.0, base URL and the three gateway IDs verified (TypeSafe docs; rows below). P01, P05
Effect, Composio @effect/ai-typesafe; @composio/typesafe, composio-typesafe npm / PyPI 16184, 30293 · 2026-09-23 READMEs only list them

Apps with a built-in Jev option

App What Jev does Turn it on Status Note
Inbox Zero (elie222; open-source email assistant, 12314★ on 2026-09-23; decision-model code at de44248) optional "specialized decision model": Choice over the user's rules, cold-email yes/no, sender categories, thread status, unsubscribe pages, reply-memory selection; raw fetch to /v1/systemone, 30 s timeout operator sets DEFAULT_DECISION_MODEL=typesafe:<model> and TYPESAFE_API_KEY; DEFAULT_DECISION_MODEL_ENABLED (default false) decides whether users who have not chosen get it; users with their own AI key never get it by default; per-user Settings toggle merged to main 2026-09-19 and 2026-09-21, no tagged release (last web tag 2026-05-18); whether the hosted app runs it is not stated our code read, not captured (unverified beyond that). Any error, or a Choice probability under 0.3, falls back to the normal LLM path. jev-latest priced at $42 per billion input tokens, output free: verified. P22

Platforms and gateways

Platforms' own pages, captured 2026-09-24 (Cloudflare, Zapier re-captured 2026-09-25). Their prices and terms apply; none claims capacity independent of TypeSafe's.

Platform (who ships it) How you call Jev Differs from calling TypeSafe Checked
Cloudflare Workers AI (docs), Cloudflare, tagged "Third-party" env.AI.run('typesafe/jev', {state, questions}) in a Worker, or POST https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run with {"model": "typesafe/jev", "input": {...}} Cloudflare token, no TypeSafe key; price only in the dashboard; lists "Zero data retention: Yes" since 2026-09-25 (Cloudflare's claim, unverified: TypeSafe's docs offer ZDR only to enterprise customers via sales, Legal: MCA, DPA, privacy, data retention); inputs state, questions only, so no version pin (examples answer jev-1.13.0); no SDK route shown Shapes verified (HTTP API: POST /v1/systemone and GET /v1/models). Its "32,000 tokens" is TypeSafe's state + longest question budget; the 64k total is not listed (Models, aliases, pricing, rate limits, context)
Netlify AI Gateway (changelog), Netlify @typesafe-ai/sdk in a Function: new TypeSafeClient(), no key or base URL Gateway injects credentials; billed to Netlify credits; JS only jev-latest = jev-1.13.0, Node ≥ 20, choice(..., {label: null}), 70–500 ms verified. "State and questions share roughly 32,000 tokens" contradicts docs (64k per request; 32k = state + longest question)
Vercel AI Gateway (provider page), Vercel typesafe-ai/jev: AI SDK experimental_evaluate (framework table above), or an SDK with base URL https://ai-gateway.vercel.sh/typesafe and AI_GATEWAY_API_KEY Vercel key and billing; ZDR, No Training per request (guide, unverified) Base URL verified (Python SDK internals: headers, key validation, gateways and base URLs, logging, forward compatibility, dependencies, migration notes). Page lists 32K context, input and output "Free", free tier, released 09/15/2026; Vercel's guide says $0.042/M input, as TypeSafe does: unverified, check the dashboard
OpenRouter (guide), OpenRouter An SDK with base URL https://openrouter.ai/api and an OpenRouter key (or the two TYPESAFE_* variables); jev-1.13 → typesafe/jev-1.13, jev-latest → ~typesafe/jev-latest. Also its own Decisions API and TS, Python, Go SDKs Billed to OpenRouter; model is OpenRouter's ID (e.g. typesafe/jev-1.13-20260917), plus id, provider, usage.cost; the SDK's model listing fails (OpenRouter's /api/v1/models shape) Base URL, ~typesafe/jev-latest verified (Python SDK internals: headers, key validation, gateways and base URLs, logging, forward compatibility, dependencies, migration notes). jev-1.13 is OpenRouter's name (TypeSafe: jev-1.13.0). Answers name provider: "TypeSafe": a proxy, not separate capacity (inferred)
Fly.io Sprites (page), Fly.io TypeSafeAI connector; in the Sprite, TYPESAFE_BASE_URL=https://api.sprites.dev/v1/gateway/typesafe/<connection_id>, any placeholder TYPESAFE_API_KEY Your key sits encrypted in the Fly org, attached by the gateway, never in the Sprite; access per Sprite (name prefix, labels, org); only POST /v1/systemone, GET /v1/models pass, others 403; 429/529 and retry-after passed through. Billed on your key (inferred) Base URL without /v1 verified (TYPESAFE_* environment variables across SDKs). Its illustration gives a yes/no answer a confidence: contradicts docs (Noul (yes/no) questions)
Zapier (app page), Zapier TypeSafe Jev app with one action, Ask Questions (write; no triggers listed): Content required; optional yes/no questions, one pick-one (name, question, options), one scale (name, question, levels lowest first), a minimum confidence, and what to do when an answer is unsure. Also on Zapier MCP. Popular integrations listed: Gmail, Google Calendar (both new 2026-09-25), Airtable, ActiveCampaign No code: a step between any Zapier apps. Auth and billing not stated on the page; one pick-one and one scale per step (inferred from the fields) Noul, Choice, Score shapes, levels low to high verified (Primitives: Choice, Score, Noul, Score questions). "returns each answer with a confidence score" contradicts docs for yes/no: a Noul answer is only a probability (Noul (yes/no) questions), so that gate is Zapier's own (inferred). Shown in Matthew Berman's sponsored segment of 2026-09-24 (a Zap accepting or declining calendar invites)

Gateways are not failover: see Running Jev in production: versioning, caching, retries, monitoring and fallbacks §8. Access to TypeSafe directly: console.typesafe.ai (console + playground).

Sources

Links inline; raw captures in frontmatter (vendor pages under raw/partner/ captured 2026-09-24 or 25; LiteLLM's benchmark post 2026-09-25; Vercel's AI SDK guide 2026-09-23; dates in raw/MANIFEST.json). Inbox Zero, LiteLLM's 502 and the version numbers marked "our check" come from the 2026-09-24 source and registry check, not from raw captures.