Public leaderboard

Public assessment

Cesium MCP Runtime (cesium-mcp-runtime, Smithery popular)

cesium-mcp-runtime · v1.143.4 · scanned

What changed in the harness

Selection accuracy 94→98, token cost up 2%, 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

25.0 / 30

25.0 out of 30
03Economics

14.2 / 20

14.2 out of 20
04Discoverability

13.1 / 20

13.1 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.

9 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
addPolygon
params_unexplained
Draw a polygon area from geographic coordinate tuples. Set clampToGround to true (default) to lay the polygon flat on the terrain surface; when false, the polygon is positioned at the coordinates' heights instead. outlineColor sets the border color in CSS format (default #FFFFFF). Returns { success, data: { entityId }, message? }; keep entityId for removeEntity.
addPolyline
params_unexplained
Draw a path or route from geographic coordinate tuples. Set clampToGround to true (default) so the line snaps to and follows the terrain surface; when false, the line stays at the heights given in the coordinates. Returns { success, data: { entityId }, message? }; keep entityId for removeEntity.
updateEntity
params_unexplained
Update the position, appearance, label, or visibility of an existing entity. Pass show: false to hide the entity while keeping it in the scene, or show: true to make it visible again. Returns { success: boolean, data?: unknown, message?: string, error?: string }.
setLayerVisibility
params_unexplained
Show or hide a managed layer without deleting it. Set visible to true to display the layer in the scene or false to hide it; the layer and its data remain managed and can be re-shown later. Returns { success: boolean, data?: unknown, message?: string, error?: string }.
updateLayerStyle
params_unexplained
Update vector, imagery, primitive, or 3D Tiles styling for the layer identified by layerId, the unique identifier of an existing layer in the scene whose style is being modified. Returns { success: boolean, data?: unknown, message?: string, error?: string }.
highlight
params_unexplained
Highlight one feature or every feature in the GeoJSON layer identified by layerId, the unique identifier of an existing GeoJSON layer whose features are to be highlighted; pass featureIndex to target a single feature or omit it to highlight all features. Returns { success: boolean, message?: string, error?: string }.
list_toolsets
no_return_description
List all available tool groups and their enabled status; call this to discover additional capabilities before asking the user to configure anything. Returns a list of tool groups together with whether each is currently enabled.
enable_toolset
no_return_description
Enable the tool group named toolset (e.g. camera, animation, entity-ext) so its tools become available; call list_toolsets first to see the available groups. Returns a success status indicating whether the tool group was enabled.
listSessions
name_restates_behavior no_return_description
Enumerate the currently connected browser sessions and their connection state so you can pick a sessionId for multi-browser routing. Returns a list of sessions, each with its ID and connection state.

Selection evidence

Confusable tool pairs.

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

Tool A Tool B Confidence Why they collide
addGeoJsonLayer addGeoJsonPrimitive high Both take identical GeoJSON data/url inputs and produce layers; descriptions differ only in rendering approach (styled layer vs large-dataset primitives), so a task like 'add this GeoJSON' is genuinely ambiguous.
addPolygon addPolyline medium Both draw from the same coordinate-tuple format and differ only in minCoordinate count and 'area' vs 'path/route' wording, so a vague task like 'draw this shape from these points' is ambiguous.
addMarker addLabel medium A task like 'add a label at these coordinates' name-matches addLabel, but addLabel requires a full GeoJSON FeatureCollection plus field, while addMarker directly accepts coordinates and a label text field.
updateEntity updateLayerStyle low Both update appearance of on-page content; which tool applies depends on whether the target was created as an entity or as a managed layer, which a task like 'restyle those points' does not state.
removeEntity removeLayer low A task like 'remove the thing I added' is ambiguous between entities (keyed by entityId) and managed layers (keyed by id), since both descriptions have similar remove semantics over disjoint families.
getEntityProperties getLayerSchema low Both read metadata about on-page content; 'get info on that feature' is ambiguous between an entity (entityId) and a layer (layerId), and both descriptions mention properties/metadata.

Compare the field

One score is useful.
The evidence makes it actionable.

Back to the leaderboard