Compare loads downrange
Workflow. Compares the ammunition loads for one cartridge fired from the same barrel, in a single call. Returns velocity, energy and drop at each distance for every load, ranked by energy at the farthest distance. The flattest and hardest-hitting loads are identified. Provide the caliber slug (use gunspec_cartridge_profile or gunspec_list_calibers to find it) and, optionally, a barrel length, distances, a bullet type and the number of loads. Replaces one ammunition list call plus one ballistics call per load.
Example usage
- 1
A person asks
- Compare three 9mm loads from a 114 mm barrel at 0, 25 and 50 metres.
- 2
The assistant calls the tool
tools/calljson{ "name": "gunspec_load_compare", "arguments": { "caliber_id": "9x19mm-parabellum", "barrel_length_mm": 114, "distances": [ 0, 25, 50 ], "limit": 3 }} - 3
The server answers
Resultjson{ "caliberId": "9x19mm-parabellum", "distancesM": [ 0, 25, 50 ], "loads": [ { "id": "federal-hst-124jhp", "name": "Federal Premium HST 124gr JHP", "bulletType": "JHP", "bulletWeightG": 8.04, "barrelLengthMm": 114, "muzzleVelocityMps": 359, "muzzleEnergyJ": 518, "effectiveRangeM": 185, "trajectory": [ { "distanceM": 0, "velocityMps": 359, "energyJ": 518, "dropCm": 0 }, { "distanceM": 25, "velocityMps": 333, "energyJ": 446, "dropCm": 2.6 }, { "distanceM": 50, "velocityMps": 313, "energyJ": 393, "dropCm": 11 } ], "energyAtFarthestJ": 393, "dropAtFarthestCm": 11 }, { "id": "hornady-critical-duty-135", "name": "Hornady Critical Duty 135gr FlexLock", "bulletType": "FlexLock", "bulletWeightG": 8.75, "barrelLengthMm": 114, "muzzleVelocityMps": 316, "muzzleEnergyJ": 438, "effectiveRangeM": 178, "trajectory": [ { "distanceM": 0, "velocityMps": 316, "energyJ": 438, "dropCm": 0 }, { "distanceM": 25, "velocityMps": 304, "energyJ": 404, "dropCm": 3.2 }, { "distanceM": 50, "velocityMps": 293, "energyJ": 377, "dropCm": 13.3 } ], "energyAtFarthestJ": 377, "dropAtFarthestCm": 13.3 }, { "id": "adi-world-class-124jhp", "name": "ADI World Class 124gr JHP", "bulletType": "JHP", "bulletWeightG": 8.04, "barrelLengthMm": 114, "muzzleVelocityMps": 347, "muzzleEnergyJ": 485, "effectiveRangeM": 181, "trajectory": [ { "distanceM": 0, "velocityMps": 347, "energyJ": 485, "dropCm": 0 }, { "distanceM": 25, "velocityMps": 322, "energyJ": 417, "dropCm": 2.8 }, { "distanceM": 50, "velocityMps": 304, "energyJ": 371, "dropCm": 11.8 } ], "energyAtFarthestJ": 371, "dropAtFarthestCm": 11.8 } ], "leaders": { "mostEnergyAtFarthest": { "id": "federal-hst-124jhp", "name": "Federal Premium HST 124gr JHP", "energyJ": 393 }, "flattest": { "id": "federal-hst-124jhp", "name": "Federal Premium HST 124gr JHP", "dropCm": 11 } }}Captured from the live API on Sep 17, 2026.
Steps
The requests this workflow makes, in order. If your plan does not include an optional step, that step is omitted and listed under gaps in the response, together with the plan it requires.
- 1
List ammunition loads
- 2
Compute a ballistic table
One response
The workflow combines up to 9 requests into a single response for the assistant.
Arguments
| Name | Type | Description |
|---|---|---|
caliber_id (required) | string | The caliber slug, e.g. "9x19mm-parabellum". |
barrel_length_mm | integer | Barrel length for every load, in mm (50 to 2000). Omit for each load's reference barrel. 50 to 2000 |
distances | integer[] | Distances in metres. Defaults to 0, 100, 200 and 300. |
bullet_type | string | Return only loads of this bullet type, e.g. "JHP" or "FMJ". |
limit | integer | Number of loads to compare, from 1 to 8. 1 to 8 Default: 5 |