Skip to main content
Glama

fakepose-mcp

First-person hands on a gun, posed the way games pose them.

A hold is an authored preset placed on a mark (a socket) of the gun, not solved from anatomy. Each finger closes until it touches. The arms reach the hands by two-bone IK. The one rule is the market's: no clipping the first-person camera can see. Anatomy (wrist, elbow, finger angles) is reported, not enforced.

It runs inside Weapon Lab's Gun Kit hands step, which keys and writes the clips. Gun Kit's job option pose_engine picks the engine: "fakepose" (the default) or "poselab".

What it does, in order

  1. The body at rest. Pelvis, spine, neck, head and collarbones take the rig's rest pose. A first-person template's idle can lift a shoulder above the head; at rest the shoulders sit below the eye, as on a person.

  2. The eye at the head. The camera sits on the head bone with the offset of Unreal Engine 5.6's first-person template (5.89 cm ahead, 2.8 cm down).

  3. The gun at aim. The sights are measured on the gun's mesh (rays down its middle plane). The gun is turned so the sight line runs along the view with no cant, and moved so the sight line passes through the eye. Its distance is the nearest at which both arms reach their holds.

  4. The holds from presets. The firing grip is a captured, approved hand-to-gun pose. The support grip is that grip mirrored across the gun's middle plane, moved forward and down, then set down onto the gun. The other holds (magazine grab, overhand rack, press check) are authored by palm facing and finger direction in the gun's axes.

  5. Curl to contact. Each digit turns toward a fist in equal steps. A segment that touches the gun stops its joint and the ones before it; the stop is found to a tenth of a step by halving.

  6. The clips. Gun Kit's actions drive every frame: the gun's moves, the parts (slide, magazine, release), the hands blending between holds, a part riding a hand.

  7. The eye's check. A ray from the eye through every pixel of the 90 degree, 16:9 view. A pixel clips when the first surface it meets is the gun inside the skin, or the skin inside the gun, deeper than the glove. Every 6th frame of every clip is checked, and a picture of each clip's start, middle and end is drawn.

Related MCP server: Cascadeur MCP

Result on the M1911A1 (the lab model)

All 11 clips written in about 4.5 minutes: idle, walk, run, fire, equip, holster, reload, reload_empty, charge, check_chamber, check_mag. Clipping seen from the eye: 0 pixels on every checked frame and every pictured frame. See docs/results.

Tools (MCP)

Tool

What it does

list_presets

The preset families and their holds, with sources; the captured grips.

show_preset

One hold in full.

set_preset

Adds or replaces an authored hold.

run_hands

Runs Gun Kit's hands step with fakepose on a gun's facts file.

hold_report

The last run's holds: curls, what stopped them, arm angles, set-down distance.

clip_report

The last run's clips: the eye's clipping per clip and the pictures.

Install

pip install -e .

Needs Blender 5.2 (headless) and Weapon Lab with Pose Lab installed; Gun Kit finds fakepose through the installed package.

Limits

  • Pistol presets only so far. A rifle family is next.

  • The eye sits 9.3 cm from the game's own camera place (Shared.json: the camera at the head bone's height). The game is not changed; set its arms offset to match if the clips should line up exactly in game.

  • The idle is the aim pose for now; a lowered idle is the aim pulled down, still to make.

  • Hands set down onto the gun may stand a little off it; hidden contact is allowed and listed, not fixed.

  • On the magazine grab and the overhand rack the index finger closes to a fist without reaching the gun.

Plan and decisions

docs/PLAN.md keeps the owner's words next to the design.

Available Tools

6 tools
clip_reportB

The last run's clips: frames, the eye's clipping per clip (frames checked, frames with clipping, the most pixels, the deepest seen), and the first-person pictures (start, middle, end).

NameRequiredDescriptionDefault
factsYesa Gun Kit facts file (gunfacts.json) of the gun

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full load. It does disclose the content of the response in useful detail (frames checked, frames with clipping, most pixels, deepest seen, start/middle/end pictures), which is real behavioral context. It omits whether the call is purely read-only, what happens if no run has occurred, and whether the returned pictures are large/expensive.

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 dense sentence that front-loads the resource and then enumerates contents, with no filler. Some of the internal jargon ('the eye's clipping', 'the most pixels, the deepest seen') is terse enough to be slightly ambiguous, but nothing is wasted.

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

Completeness3/5

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

With no output schema, the description usefully supplies the return-field inventory, which is its main value. However, for a tool that depends on a prior run and requires a facts file, it omits preconditions and any failure behavior, leaving an agent to discover the invocation context by trial.

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?

The description never mentions the single 'facts' parameter, but schema description coverage is 100%, so the schema already documents that a gunfacts.json file is required. Baseline 3 applies when the schema does the heavy lifting and the description adds nothing further about the parameter.

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?

The description names the specific resource (the last run's clip report) and enumerates what it contains: frames, per-clip clipping stats, and first-person pictures. That is enough for an agent to know this returns diagnostic data about clipping. It stops short of framing the action as a verb or contrasting itself with the sibling hold_report, which appears to be a parallel report tool.

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 guidance on when to call this versus hold_report or run_hands, and no mention of prerequisites (e.g., that a prior run must exist for a 'last run' to be reportable). The phrase 'The last run's' is the only usage signal, and it is implicit.

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

hold_reportB

The last run's holds: each preset's source, the fingers' curls and what stopped them, the arm's angles (reported, not enforced), how far a hand was set down off the surface.

NameRequiredDescriptionDefault
factsYesa Gun Kit facts file (gunfacts.json) of the gun

TDQS

B3.2/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It helpfully discloses the report's contents and the 'reported, not enforced' nuance for arm angles, but never states that the tool is read-only or that it has no side effects, nor does it mention error behavior when no prior run exists.

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 front-loaded sentence with no filler; each clause maps to a reported field. It is dense with domain jargon but structurally efficient.

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

Completeness3/5

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

The description lists return contents but omits prerequisites (a completed run) and the relationship to run_hands/clip_report. For a report tool with no output schema, this leaves a gap in how to invoke it correctly.

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 coverage is 100% and the single 'facts' parameter is documented in the schema as a Gun Kit facts file. The description adds no parameter-level detail, so baseline 3 applies.

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 resource (the last run's holds) and enumerates the report's contents, which distinguishes it from preset-management siblings. However, it does not explicitly differentiate itself from clip_report, the other report tool, so an agent must infer the choice.

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?

No when-to-use guidance, no prerequisites (e.g., a prior run_hands call), and no mention of clip_report as an alternative. The agent is left to infer that this is the report to call after running hands.

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

list_presetsC

The preset families (pistol, rifle ...), each hold in them (side:mark[:kind]) with its source, and the captured grips (a hand-to-gun pose kept from an approved hold).

NameRequiredDescriptionDefault

No parameters

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are supplied, so the description carries the full disclosure burden, yet it never states that this is a read-only enumeration, what the result set looks like, whether it is paginated, or whether it requires anything of the caller. It only glosses domain vocabulary ('side:mark[:kind]', 'a hand-to-gun pose kept from an approved hold'), which is helpful jargon but not behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short, but it is a single grammatically broken sentence fragment with no leading verb, so the key fact (what the call does) is not front-loaded. A parenthetical definition interrupts the core statement rather than following it.

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?

With no annotations and no output schema, the description is the only source of truth about the return value, and it describes the data only in a tangled fragment. An agent cannot confidently predict the shape or size of the response before calling.

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?

The tool takes zero parameters, so per the baseline there is nothing for the description to disambiguate. The explanation of the 'side:mark[:kind]' hold notation does add useful interpretive meaning for the returned data, though it is not parameter guidance.

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 sentence names the resource ('preset families (pistol, rifle ...)') and its contents (holds, gripped poses), so the domain is inferable, but there is no verb describing the operation – an agent must rely on the tool name to know it performs a listing. No sibling differentiation versus show_preset or set_preset.

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?

The description gives no when-to-use guidance, no prerequisites, and no pointer to alternatives, despite four closely related siblings (show_preset, set_preset, run_hands, hold_report) that an agent could easily confuse with this one.

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

run_handsB

Runs Weapon Lab's Gun Kit hands step with fakepose (Blender, at most 10 minutes): the gun at aim, the holds from the presets, every clip keyed and written, the eye's clipping checked. Returns the summary.

NameRequiredDescriptionDefault
clipsNoclip ids to make (default: every clip of the gun's action)
factsYesa Gun Kit facts file (gunfacts.json) of the gun

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It usefully discloses the Blender/fakepose execution context and a 10-minute time bound, and lists what gets produced. However, it does not clarify mutation semantics: whether existing clips or the blend file are overwritten, whether the operation is idempotent, what happens on failure, or whether Blender must already be running.

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?

It is a single dense sentence that front-loads the core action and execution environment, then lists the concrete outcomes and return value. Every clause adds information and there is no filler.

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

Completeness3/5

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

The description covers the action, environment, time bound, outputs, and return summary, which is useful for a tool with no output schema. For a mutating Blender pipeline with no annotations, however, it omits prerequisites, overwrite behavior, error handling, and the exact nature of the returned summary. It is adequate but has clear gaps.

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%, so the schema already documents both parameters. The description implies that the facts file drives the gun configuration and that clips may be selected by default, but it adds no syntax, format, or validation details beyond the schema. Baseline 3 is appropriate when the schema does the heavy lifting.

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?

The description states a specific action ('Runs Weapon Lab's Gun Kit hands step with fakepose') and enumerates concrete outputs: gun at aim, preset holds applied, clips keyed/written, eye clipping checked. It does not explicitly name sibling tools or contrast itself with them, but its pipeline-execution purpose is distinguishable from the report/preset siblings.

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 explicit guidance on when to use this tool versus alternatives such as hold_report or clip_report, nor any stated prerequisites or exclusions. The mention of 'at most 10 minutes' and the default clip behavior gives context, but the agent is left to infer when this step should be run.

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

set_presetA

Adds or replaces one authored hold. The next run_hands uses it.

NameRequiredDescriptionDefault
holdYesside:mark or side:mark:kind
familyYespistol or rifle
presetYesthe hold: source, contact (palm_skin or pinch), palm_into and fingers_toward (weights on forward, up, left), offset_cm, push_out, fingers {digit: {rule, target_deg, other_hand}}

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It usefully discloses overwrite semantics ('adds or replaces') and a downstream coupling to run_hands, but omits permission/validation behavior, error conditions for bad family or hold strings, and whether changes are reversible or persisted across sessions.

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?

Two short sentences, zero filler, with the mutation semantics front-loaded and the runtime consequence second. Nothing could be cut without losing information.

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

Completeness3/5

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

For a write tool with no annotations, no output schema, and a nested object parameter, the description covers the essential write-and-apply model but leaves out validation behavior, success/failure signaling, and error handling. Adequate for correct invocation but not complete for a mutation.

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%, so the baseline is 3: the schema already explains hold format, family enumeration, and the nested preset object. The description adds no parameter-level meaning beyond noting the preset is consumed by the next run_hands.

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 pair and resource: 'Adds or replaces one authored hold,' with the scope narrowed to a single hold. It is distinguishable from list_presets/show_preset by its write semantics, but it never names a sibling and shifts terminology between 'preset' (tool name, param) and 'hold' (description), leaving mild ambiguity.

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?

'The next run_hands uses it' implies the usage context: set this before executing run_hands. However, it gives no explicit when-to-use/when-not guidance, no requirement to inspect with show_preset first, and no note that this mutates stored state versus the read-only siblings.

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

show_presetA

One preset in full: where the hand sits on the mark (palm facing, finger direction, offsets, push out) and each digit's rule (keep, or curl to contact toward the fist).

NameRequiredDescriptionDefault
holdYesside:mark or side:mark:kind, e.g. l:support:palm
familyYespistol or rifle

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description must carry the full behavioral burden. 'Show' and the detailed return fields imply a read-only inspection operation, but the description does not explicitly state read-only behavior, error handling for missing presets, or any other operational traits.

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 a single dense sentence that front-loads the main scope ('One preset in full') and uses the rest to enumerate what is returned. It is efficiently structured, though some domain terms ('mark', 'push out', 'fist') may be opaque without prior context.

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?

There is no output schema, so the description usefully describes the returned preset contents (hand position and digit rules). Combined with the fully documented input schema, an agent has enough to call it correctly, though explicit read-only/error semantics would make it complete.

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%, with both family and hold documented in the schema. The description does not add any parameter-level meaning such as accepted formats or enum expansion, so the baseline of 3 is appropriate.

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?

The description states it returns 'One preset in full' and enumerates the concrete contents: hand placement details and each digit's rule. The resource is clear and distinguishes it from list_presets by scope, though it does not explicitly name the sibling or use a canonical retrieval verb.

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?

The phrase 'One preset in full' implies this is for inspecting a single preset in detail when the summary from list_presets is insufficient. However, there is no explicit when-to-use guidance or mention of alternatives/exclusions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedclip_report
    • First observedhold_report
    • First observedlist_presets
    • First observedrun_hands
    • First observedset_preset
    • First observedshow_preset

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation4/5

Most tools are clearly distinct: list/show/set form an obvious preset CRUD subset, run_hands executes, and hold_report vs clip_report cleanly split hold vs clip diagnostics. Minor overlap exists because list_presets also surfaces captured grips while hold_report reports on holds, which could momentarily blur when to use which for grip data.

Naming Consistency4/5

All names use snake_case and are predictable. The verb_noun pattern holds for list_presets, show_preset, set_preset, and run_hands, but the two report tools use noun_report instead of a verb prefix, a minor deviation.

Tool Count5/5

Six tools is well-scoped for a focused Blender gun-kit hands pipeline: preset listing/inspection/authoring, one execution tool, and two complementary post-run reports. Every tool has a clear role with no filler.

Completeness4/5

The surface covers the main lifecycle: inspect presets, author/replace a hold, execute the hands step, and review hold and clip outcomes. The notable gap is a delete/remove operation for presets or captured grips, plus reports only reflect the last run, but these are workable around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables MCP clients to inspect and edit animation inside a running Cascadeur instance without Computer Use, including scene/object and skeleton rig inspection, bounded joint and Point-target pose edits, snapshots, playback observation, and FBX export.
    4
    37
    2
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables models to pose and measure first-person arms and a rifle in Blender, reporting positions in named frames, clearances, visibility, screen placement, and solving rifle moves against goals.
    17
    58 PyPI
    1
    MIT
  • A
    license
    C
    quality
    B
    maintenance
    Enables AI clients to track first-person weapon bugs as measurable cases, run a game's own probe to gather metrics and screenshots, and compare candidate fixes against a baseline before a change is approved. It also reads posed weapon parts dumps, rebuilds animation clips in Blender, and validates probe contracts.
    67
    2
    MIT