Skip to main content
Glama
AlanOgic

Betaflight MCP Server

by AlanOgic

set_rates

DestructiveIdempotent

Modify roll, pitch, yaw, and throttle rates per axis on a Betaflight flight controller; only provided parameters change. Call get_rates first for units, then save_config after.

Instructions

Modifie les rates par axe. Seuls les paramètres fournis changent. Les valeurs sont dans les unités du rates_type ACTUEL du FC (appeler get_rates d'abord : ex. ACTUAL → rc_rate = Center Sensitivity en °/s, rate = Max Rate en °/s, expo 0-1 ; BETAFLIGHT → rc_rate 0-2.55, rate = super rate 0-1, expo 0-1). Retourne les valeurs relues et max_rate_dps. Appeler save_config ensuite.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
yaw_expoNoyaw : expo / RC Curve, unités du rates_type actif (voir get_rates)
yaw_rateNoyaw : super rate (BETAFLIGHT/KISS), Max Rate °/s (ACTUAL/QUICK) ou Acro+ % (RACEFLIGHT), unités du rates_type actif (voir get_rates)
roll_expoNoroll : expo / RC Curve, unités du rates_type actif (voir get_rates)
roll_rateNoroll : super rate (BETAFLIGHT/KISS), Max Rate °/s (ACTUAL/QUICK) ou Acro+ % (RACEFLIGHT), unités du rates_type actif (voir get_rates)
pitch_expoNopitch : expo / RC Curve, unités du rates_type actif (voir get_rates)
pitch_rateNopitch : super rate (BETAFLIGHT/KISS), Max Rate °/s (ACTUAL/QUICK) ou Acro+ % (RACEFLIGHT), unités du rates_type actif (voir get_rates)
yaw_rc_rateNoyaw : RC Rate (BETAFLIGHT/KISS/QUICK) ou Center Sensitivity °/s (ACTUAL) ou Rate °/s (RACEFLIGHT), unités du rates_type actif (voir get_rates)
roll_rc_rateNoroll : RC Rate (BETAFLIGHT/KISS/QUICK) ou Center Sensitivity °/s (ACTUAL) ou Rate °/s (RACEFLIGHT), unités du rates_type actif (voir get_rates)
throttle_midNoThrottle mid (0.0-1.0)
pitch_rc_rateNopitch : RC Rate (BETAFLIGHT/KISS/QUICK) ou Center Sensitivity °/s (ACTUAL) ou Rate °/s (RACEFLIGHT), unités du rates_type actif (voir get_rates)
throttle_expoNoThrottle expo (0.0-1.0)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true, so the safety profile is covered. The description adds real behavioral context beyond them: only supplied params change, values are interpreted in the FC's CURRENT rates_type units, and the call returns re-read values plus max_rate_dps.

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 paragraph that front-loads the action and partial-update rule before the unit caveats and the save_config follow-up. Slightly redundant with the per-parameter schema text, but every sentence carries operational value.

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?

For an 11-parameter mutation tool with no output schema, the description covers the missing pieces: unit interpretation depends on rates_type, all params are optional, and the return payload (re-read values + max_rate_dps) is disclosed. Only the exact error/failure behavior is unstated.

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?

Schema coverage is 100% (baseline 3), and the description goes further by tying each parameter's meaning and expected range to the active rates_type (e.g. ACTUAL → rc_rate is Center Sensitivity in °/s, BETAFLIGHT → rc_rate 0-2.55, super rate 0-1, expo 0-1), which the schema only alludes to.

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 and resource ('Modifie les rates par axe') and immediately clarifies partial-update semantics ('Seuls les paramètres fournis changent'), which distinguishes it from full-config writers like set_pid_values and from the read-side sibling get_rates.

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 explicit workflow ordering: call get_rates first to learn the active rates_type, then call save_config afterwards to persist. This is exactly the when-to-use / prerequisite guidance an agent needs before invoking a state-mutating tool.

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