Skip to main content
Glama
scarletfantasy

pix-mcp

pix_get_page_faults

Read-onlyIdempotent

Retrieve thread page faults from a PIX capture to diagnose memory-pressure hitches, separating expensive hard faults from cheap demand-zero, transition, and copy-on-write faults.

Instructions

One thread's page faults - the stalls that no CPU sample can show.

fault_type is what it cost. HardPageFault is the expensive one: the page was not in memory and the thread waited on the disk. DemandZero is a first touch of new memory, Transition a page reclaimed from the standby list, CopyOnWrite a private copy being made - all cheap, and worth having mainly to tell them apart from the hard kind.

A burst of hard faults on the game thread is a hitch caused by memory pressure rather than by work, and it appears in no other table here. thread_id comes from pix_list_timing_threads.

Like file I/O this needs a provider pix_capture_timing does not enable, so captures taken through this server return nothing; the query is correct and the table is empty.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
end_timeNo
thread_idYes
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

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, but the description adds crucial behavior beyond that: the meaning and relative cost of each fault type, the fact that hard faults indicate disk waits, and the important empty-result behavior when the underlying provider is not enabled. This is exactly the kind of contextual behavioral disclosure that helps an agent trust a query's empty result.

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 longer than average, but nearly every sentence adds distinct value: fault-type taxonomy, diagnostic interpretation, thread_id provenance, and provider limitation. It is front-loaded with the core purpose and avoids redundant restatement of the tool name.

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?

The tool is complex enough to benefit from the provided behavior around fault types and empty captures, and the output schema covers return details. What is still missing is a bit more parameter context, especially how capture_id relates to open captures and what cursor_position means for pagination, but the core invocation path is sufficiently clear.

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 carries the burden for parameter meaning. It does provide useful guidance for thread_id by telling the agent to source it from pix_list_timing_threads, but capture_id, start_time, end_time, limit, cursor_position, and timeout_seconds are left undescribed. Most input parameters still lack semantic explanation beyond their names.

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

Purpose5/5

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

The description clearly states the resource: one thread's page faults, and explicitly frames them as 'the stalls that no CPU sample can show,' which differentiates this from sampling tools like pix_get_cpu_samples. It also explains what fault types mean, grounding the tool in a concrete diagnostic scenario.

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 gives strong context: page faults are for diagnosing memory-pressure hitches that appear in no other table, and thread_id must come from pix_list_timing_threads. It also warns that captures taken without the special provider return an empty table. It stops short of explicitly naming alternative tools to switch to, but the intended use case is clear.

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