Skip to main content
Glama

Apply Patch

apply_patch

Applies IDB byte patches to a copied input file and exports the patched binary while preserving the original.

Instructions

Apply IDB byte patches to a copied input file and export it.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "apply_patch"
  }
}

Input Schema

NameRequiredDescriptionDefault
timeoutNoTimeout in seconds
overwriteNoOverwrite output_path if it already exists
instance_idNoREQUIRED whenever more than one database is open (from open_database's result or list_databases()); optional only while exactly one instance is live.
output_pathNoOutput file path. Defaults to '<input>.patched<ext>'; relative paths are resolved next to the input file.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.0.1
    • changedInput schema / properties / instance_id / description
      Previous value: -"Instance id override"New value: +"REQUIRED whenever more than one database is open (from open_database's result or list_databases()); optional only while exactly one instance is live."
  2. First observedv0.9.7

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It usefully notes that the original input file is copied rather than modified in place, but it never says where the patches come from (the open instance's in-memory edits?), what happens if no patches exist, whether the output is verified, or whether the export requires the database to be saved first.

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?

A single compact sentence with the outcome front-loaded and no filler. The brevity is appropriate, though it comes at the cost of the missing context noted elsewhere.

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

Completeness2/5

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

For a 4-parameter mutation/export tool with no annotations and no output schema, the description leaves the central operand undefined: there is no patch-set parameter and no explanation that the patches are the pending in-memory byte edits of the open instance. An agent can read the schema and still not know what will actually be written to the output file.

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

Parameters3/5

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

Schema description coverage is 100%, and the schema already explains instance_id, output_path defaults, overwrite and timeout in detail. The description adds nothing beyond the schema, so the baseline 3 applies.

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

Purpose3/5

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

The description names a concrete verb (apply) and a concrete outcome (a patched copy of the input file is exported), which is more than a restatement of the name. But 'IDB byte patches' is unexplained jargon, and the definition never distinguishes this from the sibling write tools patch_bytes and patch_asm, so an agent cannot tell which one to reach for.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus patch_bytes, patch_asm, save_database or save_idb, and no prerequisites (e.g., an open database with pending byte edits) are given. The only implicit guidance is that it is an export-style operation on a copy.

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