Source
The new rules of context engineering for Claude 5 generation models — the guidance on designing expressive tool interfaces over prose descriptions.
What to build
The tool prose here is strong (defaults, gates, structured Returns) but it all lives in the docstring Args: block, which FastMCP folds into the tool description — parameter schemas carry no descriptions, and a ctx: ... framework-internal line ships to the model on 20 of 28 tools.
- Emit per-parameter descriptions in
inputSchema (timeout_s default, i_accept_responsibility gate semantics, etc.); stop exposing ctx.
flipperzero_cli_exec's command stays free-form — the runtime risk classifier (rpc/cli_risk.py) is the design and an enum would be wrong here. Keep the streaming/gated command lists in the tool description, but consider trimming them to a pointer at the flipper://reference/cli resource this server already registers, since that's exactly what the resource is for.
Verify with a tools/list snapshot test.
Acceptance criteria
Blocked by
None - can start immediately
Source
The new rules of context engineering for Claude 5 generation models — the guidance on designing expressive tool interfaces over prose descriptions.
What to build
The tool prose here is strong (defaults, gates, structured Returns) but it all lives in the docstring
Args:block, which FastMCP folds into the tool description — parameter schemas carry no descriptions, and actx: ...framework-internal line ships to the model on 20 of 28 tools.inputSchema(timeout_sdefault,i_accept_responsibilitygate semantics, etc.); stop exposingctx.flipperzero_cli_exec'scommandstays free-form — the runtime risk classifier (rpc/cli_risk.py) is the design and an enum would be wrong here. Keep the streaming/gated command lists in the tool description, but consider trimming them to a pointer at theflipper://reference/cliresource this server already registers, since that's exactly what the resource is for.Verify with a
tools/listsnapshot test.Acceptance criteria
inputSchemactxno longer appears in emitted tool descriptionscli_execcommand remains free-form; gated/streaming guidance stays available (description or resource pointer)tools/listoutput added or updatedBlocked by
None - can start immediately