Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PORTNoPort of the Streamable HTTP server. Default 8098.8098
JEV_MODELNoModel to use. Default `jev-latest`.jev-latest
JEV_PROVIDERNoProvider to use: `typesafe`, `openrouter`, or `local`. Default `typesafe`.
JEV_HTTP_HOSTNoHost for the Streamable HTTP server. Default `127.0.0.1`; `0.0.0.0` only inside a container.127.0.0.1
JEV_LOG_LEVELNoLog level: `error`, `warn`, `info`, `debug`. Default `warn`.warn
JEV_PROVIDERSNoComma-separated list of providers clients may select per request. Default unset: only `JEV_PROVIDER` is used.
JEV_HTTP_TOKENNoToken for Streamable HTTP server (at least 32 characters). Required for `npm run start:http`.
JEV_IMAGE_DIRSNoAbsolute directories for image `path`, separated by `;` on Windows and `:` elsewhere. Default unset: image `path` disabled.
JEV_TIMEOUT_MSNoMilliseconds per provider request attempt. Default 30000 (1000 to 600000).30000
JEV_MAX_RETRIESNoMaximum retries (0 to 10; 0 disables). Default 2.2
TYPESAFE_API_KEYNoYour TypeSafe API key. Required when JEV_PROVIDER=typesafe.
JEV_LOCAL_API_KEYNoAPI key for local provider. Default unset: no Authorization header.
TYPESAFE_BASE_URLNoBase URL for TypeSafe API. Default `https://api.typesafe.ai`.https://api.typesafe.ai
JEV_LOCAL_BASE_URLNoServer root for local provider, without `/v1`. Default `http://127.0.0.1:8097`.http://127.0.0.1:8097
OPENROUTER_API_KEYNoYour OpenRouter API key. Required when JEV_PROVIDER=openrouter.
JEV_MAX_CONCURRENCYNoProvider requests at a time in `jev.evaluate_batch`. Default 4 (1 to 16).4
JEV_MAX_INPUT_CHARSNoCharacters of `state` plus `questions` per request; `0` disables. Default 256000.256000
OPENROUTER_BASE_URLNoAPI root for OpenRouter, without `/v1`. Default `https://openrouter.ai/api`.https://openrouter.ai/api

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
jev.evaluateA

Ask TypeSafe Jev typed questions about a piece of state and get calibrated probabilities back.

Send the content to judge as state (a string, or a JSON object/array for structured data) and a map of questions keyed by IDs you choose. All questions are answered in parallel against the same state, in one request, and cannot see each other's answers.

Question types:

  • noul: a yes/no question. Returns noul, the probability of yes (0..1). Optional criteria { true, false } describes what yes and no mean.

  • choice: pick one option. criteria maps option names to descriptions (or null), up to 255 options. Returns choice, probabilities per option and confidence.

  • score: rate along ordered levels. criteria is an array of 2-10 level descriptions, lowest first. Returns score (a probability-weighted level index from 0, may fall between levels), legend, probabilities and confidence.

Question IDs are not shown to the model, so instructions must state the full question. Refer to parts of structured state with backticked paths such as ticket.messages[0].text. Ask one narrow judgment per question. model is optional and defaults to the server's configured model.

images (optional, up to 4 PNG, JPEG or WebP, 4 MiB each) are judged together with state; each is either { "path": "" } for a local file inside a directory the server allows (JEV_IMAGE_DIRS), or { "data": "data:image/png;base64,..." }. Only image-capable models accept images (for example cloudflare/clef or cloudflare/clef-flash through OpenRouter); other models reject them. Never put images inside state.

provider is optional; this server offers only "typesafe".

jev.evaluate_batchA

Ask TypeSafe Jev the same typed questions about many items (up to 100) in one call, for example to classify a list of tickets or to score every search result and sort them.

items is a list of { "state": ..., "id"?: "...", "images"?: [...] }; each item is judged on its own. questions and the optional model work exactly as in jev.evaluate and apply to every item. Use a choice question to classify, a score or noul question to rank, and several questions to tag.

Each item is a separate provider request and is billed separately. Every item is checked before anything is sent; one invalid item rejects the whole call. Returns results in input order: status "ok" with answers and usage, "error" with the item's own error, or "skipped" when an earlier error (for example authentication or no credits) would also have hit it. summary counts each status and usage adds up the successful items.

images (optional, up to 4 PNG, JPEG or WebP, 4 MiB each) are judged together with the item's state; each is either { "path": "" } for a local file inside a directory the server allows (JEV_IMAGE_DIRS), or { "data": "data:image/png;base64,..." }. Only image-capable models accept images (for example cloudflare/clef or cloudflare/clef-flash through OpenRouter); other models reject them. Never put images inside state.

provider is optional; this server offers only "typesafe".

jev.modelsA

List the model names and aliases each provider accepts in the model field, tagged with their provider. Pass provider to list one provider only. A provider that cannot be reached appears in errors instead of failing the whole list. provider is optional; this server offers only "typesafe".

jev.noulA

Ask TypeSafe Jev one yes/no question about some state. Returns answer.noul, the probability of yes (0..1); 0.5 means equally likely, not "medium". Optional criteria { true, false } describes what yes and no mean.

state is the content to judge (a string, or a JSON object/array). instructions must state the full question; refer to parts of structured state with backticked paths such as ticket.messages[0].text. model is optional. images (optional, up to 4 PNG, JPEG or WebP, 4 MiB each) are judged together with state; each is either { "path": "" } for a local file inside a directory the server allows (JEV_IMAGE_DIRS), or { "data": "data:image/png;base64,..." }. Only image-capable models accept images (for example cloudflare/clef or cloudflare/clef-flash through OpenRouter); other models reject them. Never put images inside state. To ask several questions about the same state, use jev.evaluate instead: it answers them in one request. provider is optional; this server offers only "typesafe".

jev.choiceA

Ask TypeSafe Jev to pick one option for some state. criteria maps option names to descriptions (or null), up to 255 options; include a "none" option when nothing may fit. Returns answer.choice, answer.probabilities per option and answer.confidence.

state is the content to judge (a string, or a JSON object/array). instructions must state the full question; refer to parts of structured state with backticked paths such as ticket.messages[0].text. model is optional. images (optional, up to 4 PNG, JPEG or WebP, 4 MiB each) are judged together with state; each is either { "path": "" } for a local file inside a directory the server allows (JEV_IMAGE_DIRS), or { "data": "data:image/png;base64,..." }. Only image-capable models accept images (for example cloudflare/clef or cloudflare/clef-flash through OpenRouter); other models reject them. Never put images inside state. To ask several questions about the same state, use jev.evaluate instead: it answers them in one request. provider is optional; this server offers only "typesafe".

jev.scoreA

Ask TypeSafe Jev to rate some state along ordered levels. criteria is an array of 2-10 level descriptions, lowest first. Returns answer.score (a probability-weighted level index from 0, may fall between levels), answer.legend, answer.probabilities and answer.confidence.

state is the content to judge (a string, or a JSON object/array). instructions must state the full question; refer to parts of structured state with backticked paths such as ticket.messages[0].text. model is optional. images (optional, up to 4 PNG, JPEG or WebP, 4 MiB each) are judged together with state; each is either { "path": "" } for a local file inside a directory the server allows (JEV_IMAGE_DIRS), or { "data": "data:image/png;base64,..." }. Only image-capable models accept images (for example cloudflare/clef or cloudflare/clef-flash through OpenRouter); other models reject them. Never put images inside state. To ask several questions about the same state, use jev.evaluate instead: it answers them in one request. provider is optional; this server offers only "typesafe".

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.4/5.0

Scored across 6 tools

Disambiguation4/5

The boundaries are mostly clear: `evaluate` handles multiple questions over one state, `evaluate_batch` handles many items, and `noul`/`choice`/`score` are single-question shortcuts per question type. However, `noul`, `choice`, and `score` are strict subsets of `evaluate`'s capability, so an agent could justifiably always use `evaluate` and ignore the other three; the descriptions acknowledge this overlap but don't fully eliminate the redundancy.

Naming Consistency4/5

All names are namespaced under `jev.` and use consistent snake_case (`evaluate_batch` matches `evaluate`). The only deviation is that `evaluate`/`evaluate_batch` are verbs while `models`, `noul`, `choice`, and `score` are nouns naming question types, which is readable but not a single uniform verb_noun pattern.

Tool Count5/5

Six tools is well-scoped for an LLM-judge service: one general evaluate, one batch, one discovery tool, and three typed convenience wrappers. Every tool maps to a distinct use case and none feels like filler.

Completeness4/5

The surface covers the full evaluation lifecycle: single state, batch, model discovery, and all three question types (yes/no, choice, score), including image and structured-state support. Minor gaps exist—no tool to inspect the configured provider/model default, check credit or usage status ahead of a run, or resume partially failed batches.

Maintenance

ActivityMaintained
ResponsivenessNo issues