Skip to content

Tool naming contract ​

Cesium MCP uses one public tool inventory across MCP, WebMCP, and function calling. Tool names therefore need to help a model predict both the operation and the Cesium object affected, without relying on transport-specific context.

Verb rules ​

PrefixMeaningExamples
addCreate and attach a new scene object from structured parametersaddMarker, addPolygon, addGeoJsonPrimitive
loadParse or fetch a named external data formatloadCzml, loadKml
setReplace singleton Viewer state or configurationsetBasemap, setSceneOptions
updateMutate an existing object identified by IDupdateEntity, updateLayerStyle
removeDetach an existing managed objectremoveEntity, removeLayer
get / list / queryRead state without changing the scenegetView, listLayers, queryEntities
save / restorePersist or restore application-owned statesaveViewpoint and the proposed restoreViewpoint
start / stop / control / playOperate a stateful activitystartOrbit, controlClock, playTrajectory

Names use lower camel case. Format acronyms remain readable in the model-facing title and description even when an existing command keeps historical casing.

61-tool audit ​

The current 61 browser-safe contracts cover 12 toolsets. Fifty-five names follow the rules above without a material semantic conflict. Six names need migration review:

Current public nameProposed public nameStable Bridge actionReason
addGeoJsonLayerloadGeoJsonaddGeoJsonLayerIt parses inline or remote GeoJSON through a managed data layer; load aligns it with CZML and KML.
loadViewpointrestoreViewpointloadViewpointIt restores page-local state rather than loading an external resource.
loadTerrainsetTerrainProviderloadTerrainTerrain is singleton Viewer state and the operation replaces the provider.
loadImageryServiceaddImageryLayerloadImageryServiceImagery is appended as a layer and can coexist with other imagery layers.
load3dTilesload3dTilesetload3dTilesThe result is one managed Cesium3DTileset; the proposed noun is more precise.
load3dGaussianSplatload3dGaussianSplatTilesetload3dGaussianSplatThe operation also creates a managed tileset rather than an untyped resource.

addGeoJsonPrimitive intentionally remains an add operation. It converts GeoJSON geometry into Cesium primitives rather than loading a GeoJsonDataSource, so the different prefix communicates a different execution model.

Public name versus Bridge action ​

Each canonical contract contains two identifiers:

ts
interface CesiumToolContract {
  name: string   // exposed to models and protocols
  action?: string // executed by CesiumBridge; defaults to name
}

They currently match for all published tools. Protocol adapters dispatch action, so a future public rename can keep the existing browser command stable:

ts
{
  name: 'loadGeoJson',
  action: 'addGeoJsonLayer',
}

This separation is not permission to rename tools casually. Public names are part of prompts, saved client configurations, evaluations, and user code.

Compatibility sequence ​

No public tool name changes as part of the initial naming-contract work. A later coordinated migration must:

  1. measure the candidate names with the same deterministic and real-model evaluations;
  2. update MCP, WebMCP, function calling, toolsets, localization, examples, and documentation together;
  3. preserve the old Bridge actions;
  4. publish an explicit old-to-new migration table and release note;
  5. avoid exposing duplicate old and new names to models by default, because aliases enlarge the tool surface and create ambiguous choices;
  6. provide an opt-in legacy compatibility surface for clients that still call historical names;
  7. remove legacy public aliases only at an announced compatibility boundary.

The naming audit is therefore a release-safety input, not an immediate breaking rename.

Released under the MIT License.