Skip to main content
Glama
scarletfantasy

pix-mcp

pix_get_residency_operations

Read-onlyIdempotent

Retrieve GPU memory residency events (MakeResident, Evict, PageIn, PageOut) with timestamps and object names to diagnose video memory oversubscription and page-in stalls.

Instructions

What the GPU made resident, evicted, or paged, and when.

Video memory is oversubscribed when the working set does not fit, and Windows resolves it by evicting an allocation and paging it back over PCIe when the GPU next needs it. The cost lands on a frame that otherwise looks ordinary - the same draws, the same state, several milliseconds longer - so it is invisible in the event list and in every GPU-capture tool here.

Each row names the object that moved, which is what makes it actionable: a texture atlas evicted every frame is a budget problem with an address. residency_count is the running number of resident objects after the operation.

operation filters to one of MakeResident, Evict, PageIn, PageOut; by default all four are queried and merged in time order. An empty result is the normal case for a title comfortably inside its video memory budget.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
end_timeNo
operationNo
capture_idYes
start_timeNo
cursor_positionNo
timeout_secondsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior5/5

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

The description adds substantial behavioral detail beyond the readOnly/idempotent annotations: it explains what each row represents, that residency_count is the running count after the operation, that all four operation types are queried by default and merged in time order, and that an empty result is a meaningful outcome. This gives an agent a clear model of what the tool returns and how to interpret it.

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

Conciseness4/5

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

The description is reasonably concise and well-structured, leading with the core purpose, then adding context, output semantics, and parameter behavior. It is a bit longer than strictly necessary, but each sentence earns its place by explaining why the tool is useful and how to interpret its results.

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?

Given the domain complexity and the existence of an output schema, the description covers the essential context well: what the data means, why it is hard to find elsewhere, how to filter operations, and what an empty result indicates. The main shortfall is incomplete guidance on the time/cursor/limit parameters, but their names are reasonably self-explanatory.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It only explains the operation parameter, listing its valid values and default behavior. It does not clarify start_time, end_time, limit, cursor_position, timeout_seconds, or even capture_id beyond what the schema's names imply. Since most parameters remain undocumented in both schema and description, this is a meaningful gap.

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 clearly identifies the resource ('residency operations' of GPU memory) and the specific information returned: objects that were made resident, evicted, or paged, along with timestamps. It is specific enough about the content and follows the get_* pattern of similar tools, though it does not explicitly contrast itself with related siblings such as pix_get_allocation_moves or pix_get_page_faults.

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?

The description provides a clear use case: diagnosing video memory oversubscription that manifests as invisible frame hitches. It explains why this tool is needed and even sets expectations that an empty result is normal for a title within budget. It does not explicitly name alternatives or state when not to use it, but the context is strongly implied.

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