Skip to main content
Glama
JeanExtreme002

PyMemoryEditor

Official

read_value

Read-onlyIdempotent

Fetch a single item from a selected process memory address in an active session. Define whether it resolves as an integer, float, Boolean, string, or raw bytes, setting width for non-numeric cases.

Instructions

Read one value from an address.

:param address: hex string, e.g. "0x7FFD1234". :param value_type: int, float, bool, str or bytes. :param bufflength: width in bytes. Required for str / bytes (nothing else says how far to read); defaults to int→4, float→8, bool→1 for the numeric types.

Numeric widths are restricted to the ones every path agrees on:
1, 2, 4 or 8 for ``int``, 4 or 8 for ``float``, 1 for ``bool``.
Anything else is refused rather than half-supported. Text widths
are capped — see ``server_info().limits``.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
addressYes
bufflengthNo
session_idYes
value_typeNoint

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real behavioral detail beyond that: unsupported widths are 'refused rather than half-supported', text widths are capped via server_info().limits, and default widths vary by value_type.

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?

The purpose sentence is front-loaded, then each parameter is documented in a compact line; the trailing paragraph covers only non-obvious constraints (allowed widths) that an agent could otherwise get wrong. No filler.

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?

A mutation-free read tool with an output schema, so return values need no explanation, and the description covers formats, type-specific defaults, refusal behavior, and limit lookups. Session handling and the exact response shape are the only omissions, and the output schema likely covers the latter.

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 description coverage is 0%, so the description carries the full burden, and it delivers: address format with a hex example, the five accepted value_type strings, and bufflength semantics including per-type defaults and validity ranges. Only session_id is left undocumented, which keeps it from a 5.

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?

States a specific verb and resource ('Read one value from an address'), which cleanly separates it from write_value, scan_value, and the pointer tools. It does not explicitly name a sibling or boundary condition, so it falls 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 Guidelines3/5

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

Usage is implied rather than stated: the parameter docs reveal when bufflength is mandatory (str/bytes) and point to server_info().limits for text caps, which is a useful cross-tool routing hint. But there is no explicit statement of when to prefer read_value over scan_value, refine_scan, or resolve_pointer_chain.

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