Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
JEV_HOMENoDirectory for switch and ledger files. Defaults to ~/.claude/jev-think.
JEV_MODELNoModel id. Defaults to jev-latest.jev-latest
JEV_LEDGERNoOptional. Path to a JSONL ledger file. Defaults to $JEV_HOME/ledger.jsonl.
JEV_API_KEYNoAlternative to TYPESAFE_API_KEY. Your TypeSafe API key.
JEV_RG_PATHNoPath to ripgrep binary. Defaults to 'rg' on PATH.rg
JEV_KEY_FILENoPath to the API key file. Defaults to $XDG_CONFIG_HOME/jev/api_key.
JEV_MAX_ITEMSNoItems per jev_triage, paths per jev_ask, windows per jev_locate. Defaults to 50.50
JEV_FILE_ROOTSNoDirectories that file-reading tools may access. Defaults to the working directory; 'off' disables file reads.
JEV_TIMEOUT_MSNoPer-attempt timeout. Defaults to 5000.5000
JEV_ALLOW_HOSTSNoComma-separated hosts that may be fetched even if they resolve to private addresses. Empty by default.
JEV_CONCURRENCYNoParallel requests within one jev_triage call. Defaults to 4, capped at 16.4
JEV_MAX_RETRIESNoSDK retries after a failed attempt. Defaults to 0.0
JEV_SWITCH_FILENoOptional. Path to a JSON file containing the switch state. Defaults to $JEV_HOME/state.json.
TYPESAFE_API_KEYNoRequired. Your TypeSafe API key.
JEV_MAX_QUESTIONSNoQuestions per jev_ask or jev_triage. Defaults to 64.64
TYPESAFE_BASE_URLNoBase URL override for the TypeSafe API. Defaults to https://api.typesafe.ai.
OPENROUTER_API_KEYNoAlternative API key. Your OpenRouter API key.
TYPESAFE_LOG_LEVELNoSDK verbosity. Safe at any level; all output goes to stderr.
JEV_MARKITDOWN_PATHNoPath to markitdown binary. Defaults to 'markitdown' on PATH.markitdown
JEV_MAX_STATE_CHARSNoLargest state accepted. Defaults to 200000.200000
JEV_TRAFILATURA_PATHNoPath to trafilatura binary. Defaults to 'trafilatura' on PATH.trafilatura

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_classifyA

Pick exactly one option from a set you define. Returns the chosen option, the probability of every option, a confidence value, and a recommended action gated on confidence. Use when the answer is one of a fixed set. The options must be supplied by you: Jev selects among them and cannot invent a new one. Up to 255 options.

jev_scoreA

Rate the state along an ordered scale you define. Returns a probability-weighted score that can land between levels, the distribution, confidence, and a recommended action. Use for degree or severity, not for picking a category.

jev_checkA

Ask a yes/no question. Returns the probability that the answer is yes, from 0 to 1, plus a verdict. There is no separate confidence: a value near 0.5 means yes and no are close to equally likely, not that the answer is 'medium'. Use one check per label when several labels may apply at once.

jev_askA

Ask several independent questions about the same state in ONE request. Jev prefills the state once and scores every question in a single forward pass, so extra questions add almost no latency. Prefer this over repeated single-question calls: on a document-dominated workload it is dramatically cheaper and faster with no change in answers. Questions cannot see each other's answers, so state any speculative premise explicitly and let your own logic decide which answers apply. Pass 'paths' instead of 'state' to ask about files without reading them yourself: the server reads them, Jev sees them as one state keyed by path, and only the answers enter your context. Name the file in a question with its path in backticks.

jev_triageA

Ask the same question set about many items in one call and get one result per item, in input order. Pass a file path per item and the server reads it, so the contents reach Jev without ever entering your context: you see only the answers. Use it to decide which of many files, documents, or candidates deserve a closer look before opening any. Give a plain 'query' for a single relevance check, or 'questions' for typed judgments. Each item is its own request; a failed item reports its error in place and the others still return. Nothing is truncated: an oversized file fails, it is not cut.

jev_locateA

Find which lines of a large file (a log, a long doc, a big source file) answer or address a question, without reading the file yourself. Returns line numbers only, ranked, plus the probability the file answers the question at all. Jev reads the lines in windows of up to 254 with their neighbours, so each line is judged in context. Then open just the returned line ranges. Across a whole directory, use jev_search. Pass every question you have about the file in one call: the file is read once for all of them.

jev_searchA

Find the lines across a whole directory that answer a question, instead of reading pages of grep hits. The server runs ripgrep (honouring .gitignore and .ignore, skipping hidden, binary and credential files), keeps lines matching an optional regex 'pattern' as candidates, and Jev ranks them with their neighbouring lines. Returns path, line number and the line's text for the best hits, per question. Use a broad pattern to narrow cheaply (e.g. 'retr|backoff'), then let Jev judge meaning. Without a pattern every non-empty line is a candidate, so also set include or a small dir. Pass every question you have about this area in one call, with a pattern covering all of them: the candidates are read once for all questions.

jev_extractA

Get short values out of a file (a port, a version, a URL, a date, a quoted setting) without reading the file. Code finds every value of each requested kind; Jev picks the one that answers each question, so it can pick wrong but never invent a value. Pass every value you need from the file in one call: the file is read once for all of them. Returns, per question, the value verbatim with its line, a confidence-gated action, and whether the file answers at all. value is null when it does not.

jev_screenA

Check a web page, issue, email, or file you did not write for prompt injection BEFORE reading it into your context. Asks fixed yes/no signals (instructions aimed at an AI, attempts to override your instructions, requests to exfiltrate data, hidden instructions) and counts invisible Unicode characters in code. Returns verdict 'suspicious', 'uncertain' or 'clean' with every signal's probability. A clean verdict lowers the risk; it does not prove the text safe.

jev_rank_pagesA

After a web search, pass every result URL and every question you have. The server fetches the pages itself (https only, never private addresses; markdown when offered, HTML reduced to its main content, PDF and Office via markitdown), and Jev ranks the pages per question and picks the lines of the best page that answer it. Returns, per question, the top pages and those lines verbatim, so you usually need no WebFetch at all; fetch a page only when its lines are not enough. Lines from a page that looks like it tries to steer an agent are withheld. It answers each question from the best page, not from every page: to summarise each result separately (a survey of papers, say), WebFetch each with a prompt instead.

jev_modelsA

List the models this API key can use, with their release dates. Use it to confirm the key works and to find a model id for JEV_MODEL before assuming one exists. With an OpenRouter key it sends one minimal request instead and reports the model version that answered.

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 11 tools

Disambiguation5/5

Each tool has a clearly identified job: classification, scoring, yes/no checks, batched questions, batched files, directory line search, single-file line search, short-value extraction, injection screening, web ranking, and model listing. Even the similar pair jev_search and jev_locate are explicitly split by directory versus single-file use, so an agent should not misselect.

Naming Consistency4/5

All tools share the jev_ prefix and nearly all use a simple verb form, creating a predictable pattern. The only minor deviation is jev_models, which is a noun rather than a verb like list_models, but it is still recognizable and does not break the overall convention.

Tool Count5/5

Eleven tools is within the ideal range and each tool addresses a distinct need in the Jev workflow, from asking questions of files to ranking web pages to screening for prompt injection. The count feels deliberate rather than padded.

Completeness5/5

The surface covers the full read-and-analyze lifecycle: single questions, batched questions, many-file triage, directory search, large-file location, short extraction, classification, scoring, web ranking, and security screening. No obvious dead ends or missing operations stand out for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues