Skip to main content
Glama

find_free_input_key

Read-onlyIdempotent

List unbound input keys to avoid mapping collisions. Filter by keyboard, gamepad, mouse, or touch before binding new shortcuts.

Instructions

Which keys are still FREE: lists every input key not bound by any Enhanced Input mapping context or legacy mapping, filterable by category (keyboard / gamepad / mouse / touch) and substring. The complement of list_all_input_mappings and the tool to run before binding a new keyboard shortcut, since a collision compiles silently and only shows up in play. Trustworthy where the Python route is not: InputMappingContext.mappings is deprecated and returns empty, which makes every taken key look available.

Returns: { free_keys:[{key,display_name,is_gamepad,is_mouse,is_analog}], free_key_count, bound_key_count, bound_keys:[...] }

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filterNoOptional case-insensitive substring matched against the key name or display name.
categoryNoOptional key category filter: one of 'keyboard', 'gamepad', 'mouse', 'touch'. Absent = all categories.
bindable_onlyNoWhen true (default), only keys where FKey::IsBindableInBlueprints() is true are considered (skips AnyKey/gestures/etc.).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.1.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover readOnly/idempotent/non-destructive, yet the description adds real behavioral context: the deprecation warning that InputMappingContext.mappings returns empty (making taken keys look free), and that collisions fail silently. This is exactly the kind of caveat an agent needs and cannot get from annotations.

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?

Front-loaded with the core answer ('which keys are still FREE'), then reasoning and return shape. It is slightly long, with the trustworthiness sentence and return block adding bulk, but each part carries distinct value and nothing is wasted.

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

Completeness5/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 carries the return-value burden and does so by giving the exact response shape (free_keys array fields, counts, bound_keys). Combined with the usage and caveat guidance, an agent has everything needed to call 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%, so the schema already documents filter, category, and bindable_only. The description restates category and substring filtering but adds no syntax or format detail 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.

Purpose5/5

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

States a specific verb+resource ('lists every input key not bound by any Enhanced Input mapping context or legacy mapping') with clear scope. It explicitly positions itself as 'the complement of list_all_input_mappings', letting an agent distinguish it from that sibling without opening a schema.

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?

Gives an explicit trigger: 'the tool to run before binding a new keyboard shortcut', with the reason (a collision compiles silently and only shows in play). It also names the alternative relationship (complement of list_all_input_mappings) and the failure mode avoided by not using the Python route.

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

Deploy Server

Other Tools