# MCP tools

`jdx mcp` serves 21 typed tools over the Model Context Protocol (stdio). This list is what the server itself answers to `tools/list` in the current build.

> jdx — an IDE for AI agents: Java/Kotlin structure, sources, usages and call graphs, one precise question per tool. Every answer carries provenance; ambiguous refs list candidates instead of guessing.

## `jdx_show`

Go to declaration: the class card for a type (kind, supertypes, source, provenance).

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |

## `jdx_members`

List the members of a type — the '.' completion equivalent. Inherited members are included by default, grouped by declaring type.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `kind` | string | Member kind to list: method, field, ctor, property or all (default all). |
| `access` | string | Visibility to list: public, protected, package, private or all (default: public + protected). |
| `static` | boolean | Only static members (mutually exclusive with instance). |
| `instance` | boolean | Only instance members (mutually exclusive with static). |
| `from` | string | Only members inherited from this supertype. |
| `grep` | string | Only members whose name matches this regex. |
| `includeSynthetic` | boolean | Include bridge/synthetic members, hidden by default. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |
| `withDoc` | boolean | Include the first javadoc sentence per member. |
| `sort` | string | Row order: kind (the default), name (flat name-first) or declaring. |
| `view` | string | Declaration projection: kotlin (the default, true Kotlin declarations from @Metadata) or jvm (the raw JVM projection). |
| `declared` | boolean | Only members declared on this exact type (overrides the inherited default). |

## `jdx_outline`

File Structure: one dense line per member declared on a type (never inherited).

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `kind` | string | Member kind to list: method, field, ctor, property or all (default all). |
| `access` | string | Visibility to list: public, protected, package, private or all (default: public + protected). |
| `static` | boolean | Only static members (mutually exclusive with instance). |
| `instance` | boolean | Only instance members (mutually exclusive with static). |
| `from` | string | Only members inherited from this supertype. |
| `grep` | string | Only members whose name matches this regex. |
| `includeSynthetic` | boolean | Include bridge/synthetic members, hidden by default. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |
| `withDoc` | boolean | Include the first javadoc sentence per member. |
| `sort` | string | Row order: kind (the default), name (flat name-first) or declaring. |
| `view` | string | Declaration projection: kotlin (the default, true Kotlin declarations from @Metadata) or jvm (the raw JVM projection). |

## `jdx_body`

Open the method: the source body of one member, sliced verbatim with provenance.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `context` | integer | Extra lines around the body (default 0). |
| `lineNumbers` | boolean | Prefix every line with its 1-based number. |
| `maxLines` | integer | Cap the body slice (default 200). |
| `withSignature` | boolean | Prepend the member signature line. |
| `withDoc` | boolean | Append the member javadoc. |
| `engine` | string | Force a reconstruction engine: vineflower or javap (default: paired sources first). |

## `jdx_source`

Open the file: whole source for a type, or a slice of it, with provenance.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `lines` | string | Line window A:B (1-based, inclusive). |
| `around` | string | Center the slice on this member ref. |
| `context` | integer | Extra lines around the slice (default 0). |
| `lineNumbers` | boolean | Prefix every line with its 1-based number. |
| `maxLines` | integer | Cap the slice (default 200). |
| `engine` | string | Force a reconstruction engine: vineflower or javap (default: paired sources first). |

## `jdx_signature`

Parameter info: one signature line per overload, with real parameter names.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `includeSynthetic` | boolean | Include bridge/synthetic members, hidden by default. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |
| `view` | string | Declaration projection: kotlin (the default, true Kotlin declarations from @Metadata) or jvm (the raw JVM projection). |

## `jdx_doc`

Quick documentation for a type or member, falling back to the nearest documenting supertype like IntelliJ quick-doc.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `inherited` | boolean | Allow the supertype fallback (the default; accepted for explicitness). |
| `no-inherited` | boolean | Only docs written on this exact symbol (mutually exclusive with inherited). |
| `raw` | boolean | Raw javadoc text instead of the rendered form. |
| `maxLines` | integer | Cap the doc text (default 200). |

## `jdx_search`

Search everywhere: symbols by glob, regex or fuzzy name, with did-you-mean.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `kind` | string | Symbol kind: all, type, class, interface, enum, record, annotation, object, companion, method, field, package or module (default all). |
| `regex` | boolean | Treat the pattern as a regex. |
| `fuzzy` | boolean | Levenshtein fallback when nothing matches. |
| `in` | string | Only matches from artifacts whose label matches this glob. |
| `package` | string | Only symbols under this package. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_resolve`

What is this symbol? Short-name resolution with copy-pasteable candidates.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_ls`

External library browser: packages in the workspace roots.

| Parameter | Type | Description |
|---|---|---|
| `query` | string | Package glob (ls) or artifact glob (tree); empty lists everything. |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_tree`

External library browser: artifacts and their package trees.

| Parameter | Type | Description |
|---|---|---|
| `query` | string | Package glob (ls) or artifact glob (tree); empty lists everything. |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `depth` | integer | Tree depth (default 8). |
| `counts` | boolean | Annotate nodes with class counts. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_usages`

Find usages of a type or member across the workspace jars and source dirs.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `kind` | string | Edge kind: all, call, read, write, ref, new, throw (throws declarations, not ATHROW sites) or annotation (default all). |
| `in` | string | Only matches from artifacts whose label matches this glob. |
| `exclude` | string | Skip matches from artifacts whose label matches this glob. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |
| `context` | integer | Snippet lines around each hit (default 0). |

## `jdx_hierarchy`

Type hierarchy: supertypes upward and subtypes downward across the workspace.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `up` | boolean | Walk supertypes (default: both directions unless down is set). |
| `down` | boolean | Walk subtypes (default: both directions unless up is set). |
| `direct` | boolean | Direct parents/children only. |
| `depth` | integer | How many tree levels to walk (default 2147483647). |
| `in` | string | Only matches from artifacts whose label matches this glob. |
| `exclude` | string | Skip matches from artifacts whose label matches this glob. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_implementors`

Who implements this interface or extends this class, transitively.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `direct` | boolean | Direct implementors only. |
| `depth` | integer | How many tree levels to walk (default 2147483647). |
| `in` | string | Only matches from artifacts whose label matches this glob. |
| `exclude` | string | Skip matches from artifacts whose label matches this glob. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_callers`

Call hierarchy in: who calls this method, as a depth-bounded tree.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `depth` | integer | How many tree levels to walk (default 1). |
| `in` | string | Only matches from artifacts whose label matches this glob. |
| `exclude` | string | Skip matches from artifacts whose label matches this glob. |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_calls`

Call hierarchy out: what this method calls, as a depth-bounded tree.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `depth` | integer | How many tree levels to walk (default 1). |
| `in` | string | Only matches from artifacts whose label matches this glob. |
| `exclude` | string | Skip matches from artifacts whose label matches this glob. |
| `externalOnly` | boolean | Prune callees in the target's own artifact (dependency view). |
| `limit` | integer | Maximum rows shown (default 50); the rest become a truncation footer. |

## `jdx_samples`

How is this symbol really used? Ranked call sites with source snippets as evidence.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The symbol reference, type, pattern or glob the command asks about. Quote refs containing # or (). Empty only where the command allows it (ls, tree). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `limit` | integer | Maximum rows shown (default 3); the rest become a truncation footer. |
| `in` | string | Only matches from artifacts whose label matches this glob. |
| `exclude` | string | Skip matches from artifacts whose label matches this glob. |
| `preferSources` | boolean | Rank callers from sources-paired artifacts first. |

## `jdx_diff`

What changed between two artifacts? Public-API diff with named binary-compatibility rules (MEMBER_REMOVED, RETURN_TYPE_CHANGED, ...), most breaking first. `query` is the OLD artifact and `new` the candidate; each is a jar, class dir, glob, or Maven coordinate. Exits 0 whenever the comparison ran.

| Parameter | Type | Description |
|---|---|---|
| `query` (required) | string | The OLD (baseline) artifact: jar file, class directory, glob, or group:artifact:version. |
| `new` (required) | string | The NEW (candidate) artifact, compared against `query`. |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |
| `visibility` | string | public (default: public and protected declarations) or all (every declared type and member). |
| `includeSynthetic` | boolean | Compare bridge/synthetic members too, hidden by default. |
| `severity` | string | How much to print: all (default), suspicious (breaking and suspicious), or breaking only. The tally always describes everything. |
| `failOn` | string | none (default, always 0), breaking (exit 1 on a breaking change) or any (exit 1 on any difference). |
| `limit` | integer | Maximum rows shown (default 200); the rest become a truncation footer. |

## `jdx_version`

The jdx version this server was built as.

| Parameter | Type | Description |
|---|---|---|
| `query` | string | Optional label echoed back in the envelope (empty is fine). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |

## `jdx_doctor`

Environment report. The server refuses this over MCP — it describes the server's machine, not the client's — run `jdx doctor` in a shell instead.

| Parameter | Type | Description |
|---|---|---|
| `query` | string | Optional label echoed back in the envelope (empty is fine). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |

## `jdx_health`

Liveness probe: uptime, workspace served and queries answered.

| Parameter | Type | Description |
|---|---|---|
| `query` | string | Optional label echoed back in the envelope (empty is fine). |
| `workspace` | string | Named workspace to answer from (default: the workspace the server was started with). Stored workspaces only. |

