Public leaderboard

Public assessment

markpdxt/dronelytics-mcp (@dronelytics/mcp)

dronelytics-mcp · v0.3.3 · scanned

What changed in the harness

Selection accuracy 98→100, token cost up 4%, unconfirmed writes 0%→0%.

Category breakdown

Where the score comes from.

Earned points across the four signals Gradable measures. Safety and Legibility are scored out of 30; Economics and Discoverability are scored out of 20.

01Safety

0.0 / 30

0.0 out of 30
02Legibility

22.2 / 30

22.2 out of 30
03Economics

16.1 / 20

16.1 out of 20
04Discoverability

12.0 / 20

12.0 out of 20

Highest-impact fix

Estimated gain +30 points

Add explicit identity and permission preflight tools

Expose machine-readable principal/tenant confirmation and a non-mutating permission check so agents can verify both before destructive actions.

Description evidence

Defects and rewrites.

14 defects found across the exposed tool descriptions. Suggested rewrites make purpose, inputs, boundaries, and returns easier for an agent to understand.

Tool Defect types Suggested rewrite
get_mission
no_return_description
Get full details of a saved drone mission, including all waypoints, generation settings, and area polygon. Returns the full mission object matching the given ID. Use list_missions to find available mission IDs.
create_mission
no_return_description
Create a new drone mission manually with custom waypoints. Supported types: waypoint, grid, orbit, spiral, panorama, corridor. Returns the newly created mission object with its assigned ID. For automated survey generation with optimal waypoint placement, use generate_grid_survey, generate_orbit_mission, or other generate_* tools instead.
update_mission
params_unexplained no_return_description
Update an existing mission's name, type, waypoints, tags, or linked drone profile. Fetches the current version and merges your changes — omitted fields remain unchanged. 'name' sets the mission's display name, 'type' changes its mission type (waypoint, grid, orbit, spiral, panorama, corridor), 'tags' replaces the mission's tag list, and 'drone_profile_id' links (or unlinks, if null) an associated drone profile. Returns the updated mission object. Use list_missions to find mission IDs.
delete_mission
no_return_description
Permanently delete a mission and all its waypoints. This action cannot be undone. Returns a confirmation of deletion. Use list_missions to find mission IDs.
duplicate_mission
no_return_description
Create a full copy of an existing mission including all waypoints and settings. The new mission gets a unique ID. Returns the newly created duplicate mission object. Use list_missions to find mission IDs.
share_mission
no_return_description
Generate a public share link for a mission. Anyone with the link can view the mission details and waypoints. Returns the generated share URL. Use list_missions to find mission IDs.
import_litchi
no_return_description
Import a Litchi CSV file and create a new waypoint mission from it. Parses the standard Litchi CSV format (latitude, longitude, altitude, heading, gimbal pitch, actions). Automatically saves the imported mission to your account and returns the newly created mission object with its ID and waypoint count.
create_drone
params_unexplained no_return_description
Create a new drone profile with manufacturer and model information. Optionally include camera specs and flight characteristics, including 'max_speed_mph' for the drone's top speed (used for flight time and coverage estimates). Created profiles can be linked to missions for flight time and coverage estimates. Returns the newly created drone profile object with its assigned ID.
update_drone
params_unexplained no_return_description
Update an existing drone profile's manufacturer, model, nickname, serial number, camera specs, or flight characteristics. Pass only the fields you want to change — omitted fields remain unchanged. 'model' sets the drone's model name, 'camera_model' sets the name of its onboard camera, and 'max_speed_mph' sets its top speed (used for flight time estimates). Returns the updated drone profile object. Use list_drones to find drone IDs.
delete_drone
no_return_description
Permanently delete a drone profile. This action cannot be undone. Fails if the drone is currently referenced by any missions — unlink it from missions first. Returns a confirmation of deletion.
generate_orbit_mission
params_unexplained
Generate an orbit/POI mission that flies a circle around a point of interest. All waypoints face the center for consistent framing. 'drone_profile_id' optionally links the generated mission to an existing drone profile (UUID from list_drones). Automatically saves the mission to your account — returns the saved mission with ID and waypoint count.
generate_panorama_mission
params_unexplained
Generate a panorama capture mission at a fixed hover location. Creates a grid of heading/pitch combinations for photo stitching. 'drone_profile_id' optionally links the generated mission to an existing drone profile (UUID from list_drones). Automatically saves the mission to your account — returns the saved mission with ID and photo count.
generate_spiral_mission
params_unexplained
Generate a spiral survey mission expanding outward or contracting inward from a center point. Useful for search patterns or radial coverage. 'drone_profile_id' optionally links the generated mission to an existing drone profile (UUID from list_drones). Automatically saves the mission to your account — returns the saved mission with ID and waypoint count.
generate_corridor_mission
params_unexplained no_return_description
Generate a linear corridor mapping mission along a path (roads, pipelines, power lines). Creates parallel flight passes with camera-based spacing for full coverage. 'drone_profile_id' optionally links the generated mission to an existing drone profile (UUID from list_drones). Automatically saves the mission to your account and returns the saved mission with ID and waypoint count. Call list_cameras first to see available camera_model values.

Selection evidence

Confusable tool pairs.

11 pairs where similar names or overlapping descriptions may send an agent toward the wrong tool.

Tool A Tool B Confidence Why they collide
get_active_tfrs get_notams high Both return active flight restriction info for a location (TFRs are commonly reported as a NOTAM subtype in the real world), so a task like 'check for flight restrictions near this location' plausibly maps to either tool.
check_airspace check_live_traffic medium Both take lat/lng and answer 'is it safe/clear to fly here' style questions; a vague task like 'check for traffic or hazards at this location' could be routed to either the airspace-restriction check or the live-aircraft check.
generate_orbit_mission generate_panorama_mission medium Both generate a capture mission centered on a single point (center_lat/center_lng) intended for 360-style imagery; a task like 'get me a 360 view of this landmark' is ambiguous between a flying orbit and a fixed-hover panorama grid.
generate_orbit_mission generate_spiral_mission medium Both take a center point and radius-based parameters for circular flight patterns; a task like 'fly a circular pattern around this point with varying distance' could plausibly be routed to either orbit or spiral.
list_drones list_cameras medium Drone profiles include camera specs (camera_model, fov, mp), so a task like 'what cameras do I have available' could be resolved via list_drones (actual owned drones) or list_cameras (generic presets for survey planning).
get_mission export_mission medium Both retrieve mission content; a task like 'give me the mission data/details' is ambiguous between fetching the JSON representation (get_mission) and exporting to a flight-controller file format (export_mission).
get_mission share_mission medium A task like 'get me the mission for X' could mean retrieve full details (get_mission) or produce a link others can view (share_mission), since both surface mission contents.
create_mission duplicate_mission medium A task like 'create a new mission like the one I flew last week' is ambiguous between manually re-creating waypoints via create_mission and copying the existing one via duplicate_mission.
create_drone update_drone medium A task like 'set up my drone profile with these specs' is ambiguous about whether the profile already exists, risking confusion between create_drone (new profile) and update_drone (modify existing).
duplicate_mission export_mission low Both produce 'a copy' of a mission, but duplicate_mission stays in-account while export_mission is a file conversion, so ambiguity only arises if the task vaguely says 'copy this mission' without specifying format or destination.
get_mission duplicate_mission low Both descriptions mention 'full' details/waypoints/settings, so a task like 'give me a full copy of this mission' could be misrouted to get_mission (view) instead of duplicate_mission (actual copy).

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard