Jade
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JADE_JSON | No | Set to '1' to emit machine-readable JSON instead of plain text. | 0 |
| JADE_STATE_DIR | No | Keep the telemetry log outside the workspace, one subdirectory per workspace. | |
| JADE_TELEMETRY | No | Set to '0' to disable local usage recording entirely. | 1 |
| JADE_UPDATE_CHECK | No | Set to '0' to turn off the daily check for a newer release. | 1 |
| JADE_METALS_IMPORT | No | Set to '1' to let metals import an sbt build so Scala edits get diagnostics. Runs sbt; creates .bloop/ and .metals/. | 0 |
| JADE_WORKSPACE_ROOT | No | Repository to operate on. Overridden by --root. Defaults to the working directory if neither is set. |
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 |
|---|---|
| jade.read_rangeA | Read a file verbatim, whole or by line range — the replacement for |
| jade.findA | Locate declarations by name AND return their source in one call — the fused search-and-read that replaces |
| jade.insertA | Add text to a file without replacing anything — a new function, a new section, an extra case. Use this for additive work instead of rewriting a surrounding symbol. With no anchor it appends to the end of the file; with one it places the text before or after that anchor, refusing if the anchor is absent or matches more than once. Several additions or edits at once belong in apply. |
| jade.replace_textA | Replace an exact, unique string in a file. An anchor string does not move when the lines around it do, which is why follow-up edits address text rather than line numbers. Refuses when the anchor is absent or matches more than once — extend it with surrounding context to disambiguate. For several sites, use apply: atomic, one validation, no diagnostics from half-done intermediate states. |
| jade.create_fileA | Create a brand-new file, and any missing parent directories. Refuses to overwrite an existing one — use replace_text or apply to modify existing content. |
| jade.applyA | Apply several edits as one atomic unit: all land or none do. Ops: replace_text, replace_range, replace_symbol, delete_symbol, insert. Anchors are validated before anything is written, touched files are formatted, and one validation runs at the end instead of one per edit. Prefer this over several single edits when changing more than one site. |
| jade.delete_fileA | Delete a file, not a directory; fails if it does not exist. Reverting to an earlier checkpoint recreates it. To edit content use replace_text or apply. |
| jade.checkA | Run a validation command on demand and wait for the verdict: kind build (default), typecheck or tests. Uses the repository's own Makefile target, npm script or cargo command when present. Waits by default and returns pass/fail directly. Every result names the command that ran; dryRun names it without running anything. In a repository with several projects, pass target to check one; with no command at the root, the answer lists the projects. |
| jade.grepA | Literal or regex text search across the workspace, returning path:line matches with optional trailing context — the replacement for |
| jade.run_commandA | Run a command the repository declares, by name, and wait for the verdict: pass/fail with the decisive output. Use it instead of a shell for anything check does not cover. No name lists the declared commands. Nothing fits? declare_command it once. |
| jade.declare_commandA | Declare a named command in .jade/commands.json — a reproduction, a benchmark — to run with run_command in this and later sessions; the file is reviewed like any change. Declaring an existing name replaces it; do not redeclare one just to run it. |
| jade.run_testsA | Rerun a failing test, a test file, or changed files' tests; waits for pass/fail and the first failure. Full suite: check kind tests. |
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 12 tools
Each tool targets a distinct operation: file creation/deletion/reading, text replacement/insertion/atomic batch edits, declaration lookup vs. general grep, and command execution vs. test running. Even closely related tools like replace_text and insert are clearly separated by their use cases and the apply tool explicitly aggregates them. No ambiguity among the 12 tools.
All tool names follow a consistent snake_case verb_pattern (delete_file, read_range, find, create_file, grep, declare_command, run_tests, apply, check, insert, replace_text, run_command). While some verbs lack explicit noun objects, the pattern is uniform and predictable across the entire set.
With 12 tools, the server is well-scoped for its purpose as a code editing and validation assistant. Each tool covers a necessary operation without redundancy, fitting comfortably within the typical 3-15 range for a focused toolset.
The tool surface covers the core lifecycle: file creation, deletion, reading, editing (replace/insert/apply), searching (grep/find), and command execution (check/run_tests/run_command/declare_command). Minor gaps exist, such as no explicit file listing or rename operation, but these are likely out of scope and do not create workflow dead ends for typical coding tasks.