jev-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | Port of the Streamable HTTP server. Default 8098. | 8098 |
| JEV_MODEL | No | Model to use. Default `jev-latest`. | jev-latest |
| JEV_PROVIDER | No | Provider to use: `typesafe`, `openrouter`, or `local`. Default `typesafe`. | |
| JEV_HTTP_HOST | No | Host for the Streamable HTTP server. Default `127.0.0.1`; `0.0.0.0` only inside a container. | 127.0.0.1 |
| JEV_LOG_LEVEL | No | Log level: `error`, `warn`, `info`, `debug`. Default `warn`. | warn |
| JEV_PROVIDERS | No | Comma-separated list of providers clients may select per request. Default unset: only `JEV_PROVIDER` is used. | |
| JEV_HTTP_TOKEN | No | Token for Streamable HTTP server (at least 32 characters). Required for `npm run start:http`. | |
| JEV_IMAGE_DIRS | No | Absolute directories for image `path`, separated by `;` on Windows and `:` elsewhere. Default unset: image `path` disabled. | |
| JEV_TIMEOUT_MS | No | Milliseconds per provider request attempt. Default 30000 (1000 to 600000). | 30000 |
| JEV_MAX_RETRIES | No | Maximum retries (0 to 10; 0 disables). Default 2. | 2 |
| TYPESAFE_API_KEY | No | Your TypeSafe API key. Required when JEV_PROVIDER=typesafe. | |
| JEV_LOCAL_API_KEY | No | API key for local provider. Default unset: no Authorization header. | |
| TYPESAFE_BASE_URL | No | Base URL for TypeSafe API. Default `https://api.typesafe.ai`. | https://api.typesafe.ai |
| JEV_LOCAL_BASE_URL | No | Server root for local provider, without `/v1`. Default `http://127.0.0.1:8097`. | http://127.0.0.1:8097 |
| OPENROUTER_API_KEY | No | Your OpenRouter API key. Required when JEV_PROVIDER=openrouter. | |
| JEV_MAX_CONCURRENCY | No | Provider requests at a time in `jev.evaluate_batch`. Default 4 (1 to 16). | 4 |
| JEV_MAX_INPUT_CHARS | No | Characters of `state` plus `questions` per request; `0` disables. Default 256000. | 256000 |
| OPENROUTER_BASE_URL | No | API 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| jev.evaluateA | Ask TypeSafe Jev typed questions about a piece of state and get calibrated probabilities back. Send the content to judge as Question types:
Question IDs are not shown to the model, so
|
| 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.
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
|
| jev.modelsA | List the model names and aliases each provider accepts in the |
| jev.noulA | Ask TypeSafe Jev one yes/no question about some state. Returns
|
| jev.choiceA | Ask TypeSafe Jev to pick one option for some state.
|
| jev.scoreA | Ask TypeSafe Jev to rate some state along ordered levels.
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
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.
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.
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.
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.