Skip to main content
Glama

ppsspp_breakpoint_add

Add a CPU execution breakpoint at a PSP physical address to halt emulation when execution reaches that point, enabling RE work and HLE intercepts.

Instructions

PURPOSE: Add a CPU execution breakpoint at the given PSP physical address. Emulation halts when PC reaches that address. USAGE: For RE work and HLE intercepts. Combine with ppsspp_resume + (later) ppsspp_get_registers to inspect state at the breakpoint. BEHAVIOR: Modifies PPSSPP's breakpoint table. The breakpoint persists until removed via ppsspp_breakpoint_remove or PPSSPP restarts. Returns an error if the address isn't executable memory. RETURNS: Single line 'Breakpoint added at ADDR_HEX'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
addressYesPSP execution address. Usually in user RAM (0x08800000+) or kernel RAM.

Implementation Reference

  • Handler for ppsspp_breakpoint_add: calls PPSSPP's cpu.breakpoint.add RPC with the address parameter, returns confirmation message with hex address.
    case "ppsspp_breakpoint_add": {
      await pp.call("cpu.breakpoint.add", { address: a() });
      return ok(`Breakpoint added at ${addrHex(a())}`);
    }
  • Schema definition for ppsspp_breakpoint_add: declares the tool's name, description, and input schema requiring an 'address' integer parameter.
    {
      name: "ppsspp_breakpoint_add",
      description:
        "PURPOSE: Add a CPU execution breakpoint at the given PSP physical address. Emulation halts when PC reaches that address. " +
        "USAGE: For RE work and HLE intercepts. Combine with ppsspp_resume + (later) ppsspp_get_registers to inspect state at the breakpoint. " +
        "BEHAVIOR: Modifies PPSSPP's breakpoint table. The breakpoint persists until removed via ppsspp_breakpoint_remove or PPSSPP restarts. Returns an error if the address isn't executable memory. " +
        "RETURNS: Single line 'Breakpoint added at ADDR_HEX'.",
      inputSchema: {
        type: "object",
        required: ["address"],
        properties: {
          address: { type: "integer", minimum: 0, description: "PSP execution address. Usually in user RAM (0x08800000+) or kernel RAM." },
        },
        additionalProperties: false,
      },
  • src/tools.ts:405-406 (registration)
    Registration of all tools via MCP SDK's ListToolsRequestSchema and CallToolRequestSchema handlers; the tool name 'ppsspp_breakpoint_add' is wired in the switch/case inside CallToolRequestSchema.
    export function registerTools(server: Server, pp: PpssppClient): void {
      server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
Behavior4/5

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

Discloses key behaviors: modifies breakpoint table, persistence until removal or restart, error on non-executable memory. No annotations provided, so description carries full burden. Could mention whether duplicate addresses are handled, but overall adequate.

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?

Four short sections with clear labels (PURPOSE, USAGE, BEHAVIOR, RETURNS). No redundant sentences; every line provides unique value.

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?

For a single-parameter tool with no output schema and no annotations, the description covers purpose, usage, behavior, return format, and error case. Missing details like duplicate handling or disabling momentarily, but still complete enough for successful invocation.

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 covers address with description, but description adds context: 'Usually in user RAM (0x08800000+) or kernel RAM.' This extra guidance helps the agent select correct addresses.

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?

Clearly states verb+resource: 'Add a CPU execution breakpoint' with specific location (PSP physical address) and effect (emulation halts when PC reaches). Distinguishes from siblings like ppsspp_breakpoint_list and ppsspp_breakpoint_remove.

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

Usage Guidelines5/5

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

Explicitly describes when to use ('For RE work and HLE intercepts') and suggests combining with specific sibling tools (ppsspp_resume, ppsspp_get_registers), providing clear usage context.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dmang-dev/mcp-ppsspp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server