Skip to main content
Glama

list_modules

Read-onlyIdempotent

Lists DLLs and program modules loaded by a process with paths, base addresses, and sizes; requires user consent before opening the process.

Instructions

The DLLs and the program a process has loaded, with their paths, base addresses and sizes. OPENS THE PROCESS to read its module list: the first call is refused with the risks; call again with force=true only if the user agreed.

Input Schema

NameRequiredDescriptionDefault
pidYesThe process ID.
forceNoTrue only after the user agreed to the risk this tool described.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a safe, idempotent read, but the description adds a crucial trait they do not convey: the tool opens the target process, which is refused on the first call and requires an explicit force=true retry after user consent. That two-step consent flow is exactly the kind of behavioral context annotations cannot express, though the nature of the risk itself is left to the refusal message.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste: the return contents come first and the safety-critical consent flow second, with the capitalised 'OPENS THE PROCESS' drawing the eye to the risk. Nothing is repeated from the schema and nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by listing the returned fields, and it fully covers the two-parameter consent workflow. Only minor gaps remain, such as behaviour on an invalid or already-exited pid.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both pid and force are already documented, establishing a baseline of 3. The description goes beyond the schema by explaining the call sequence that makes force meaningful (refused first call, then retry with force=true), which adds real semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource concretely ('The DLLs and the program a process has loaded') and even enumerates the returned fields (paths, base addresses, sizes), so an agent knows exactly what it gets. It does not explicitly contrast itself with nearby siblings like list_handles or get_process, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear operational guidance for the force parameter: the first call is refused and returns the risks, and force=true should be used only after the user agrees. That is an explicit when-to-use rule, though it offers no guidance on choosing this tool over alternative views of a process.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.