Skip to main content
Glama

Configure Map

configure_map

Updates map settings on the Territory Solution and refreshes the live map: project_name (map heading), theme (dark | light basemap and UI style), loaded_part_layers ([] hides ZIP/part outlines; builds never load them), active_part_layer, active_tal_id, center and zoom (default view; the live map jumps there), and point symbology. point_layer_classifications entries are {point_layer, field, method: quantile | equal_interval | categorical | manual, class_count 2-12, channel: color | size | shape, optional colors/sizes/shapes/style}; the server computes the breaks and returns per-class counts. One classification per channel per layer; clear:true removes one. Shapes include circle, square, triangle, diamond, star, cross, house, pin, flag, hexagon, pentagon, shield, arrow_up, building, person. classification without point_layer is a project-level setting that does not color points. Input: map_session_id (the live map) or ts_handle.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "configure_map"
  }
}

Input Schema

NameRequiredDescriptionDefault
zoomNoDefault MapLibre zoom (0-24). Persists to map_config.zoom. An open MC jumps when this request includes center and/or zoom.
themeNoMap Component basemap and UI theme ('dark' or 'light'; default 'dark'). Persists to ts.properties.map_config.theme and repaints the open map session live.
centerNoDefault camera center as GeoJSON/MapLibre [longitude, latitude]. Persists to map_config.center. An open MC jumps when this request includes center and/or zoom; later config_changed events without those fields leave the camera where it is.
ts_handleNoTerritory Solution reference (tsh_...) from a build, ingest_accounts, import_geojson, import_designer_project, or get_map_visualization; Territory Solutions are not accepted inline.
presentationNoNamed presentation context stored on map_config and restored when the TS opens.
project_nameNoFirst-class Territory Solution short name shown as the Map Component panel title. Persists to ts.properties.map_config.project_name; when an MC session is open for this TS, configure_map pushes config_changed so the title refreshes without reopening the map.
active_tal_idNoDurable active alignment restored when the Territory Solution opens.
classificationNoProject-level map_config classification (e.g. primary metric context for selection-impact preview). It leaves point colors unchanged; a patch naming a point_layer is routed to point_layer_classifications with a warning.
map_session_idNoOpen map session (msess_...) from get_map_visualization. Its Territory Solution is the input; omit ts_handle when set.
merge_strategyNo
active_part_layerNo
expected_revisionNo
loaded_part_layersNo
expected_content_hashNo
point_layer_classificationsNoApplied point-layer symbology. The server computes breaks from the in-session point features, writes ts.properties.point_layers[].<channel>_classification, and pushes config_changed so an open MC repaints. One entry per layer/channel.

Output Schema

NameRequiredDescriptionDefault
okYes
errorNoPresent when ok is false.
resultNoPresent when ok is true.
warningsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed21 schema fields changed
    • addedInput schema / properties / active_tal_id / description
      Added value: +"Durable active alignment restored when the Territory Solution opens."
    • addedInput schema / properties / center / description
      Added value: +"Default camera center as GeoJSON/MapLibre [longitude, latitude]. Persists to map_config.center. An open MC jumps when this request includes center and/or zoom; later config_changed events without those fields leave the camera where it is."
    • changedInput schema / properties / classification / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": true,
      +    "properties": {
      +      "bins": {
      +        "minimum": 1,
      +        "type": "integer"
      +      },
      +      "breaks": {
      +        "items": {
      +          "type": "number"
      +        },
      +        "type": "array"
      +      },
      +      "colors": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "labels": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "method": {
      +        "minLength": 1,
      +        "type": "string"
      +      },
      +      "metric": {
      +        "minLength": 1,
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / classification / description
      Added value: +"Project-level map_config classification (e.g. primary metric context for selection-impact preview). It leaves point colors unchanged; a patch naming a point_layer is routed to point_layer_classifications with a warning."
    • removedInput schema / properties / classification / title
      Removed value: -"Classification"
    • addedInput schema / properties / map_session_id / description
      Added value: +"Open map session (msess_...) from get_map_visualization. Its Territory Solution is the input; omit ts_handle when set."
    • changedInput schema / properties / point_layer_classifications / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": true,
      +      "properties": {
      +        "channel": {
      +          "default": "color",
      +          "enum": [
      +            "color",
      +            "size",
      +            "shape"
      +          ],
      +          "type": "string"
      +        },
      +        "class_count": {
      +          "default": 5,
      +          "maximum": 12,
      +          "minimum": 2,
      +          "type": "integer"
      +        },
      +        "classes": {
      +          "description": "Manual breaks. Each class needs value/values (categorical) or min/max (range) plus the channel value.",
      +          "items": {
      +            "additionalProperties": true,
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "clear": {
      +          "description": "When true, remove this channel's classification and leave the other channels and the base style. field is not required. Group colors stored on classification are removed when that object is this channel.",
      +          "type": "boolean"
      +        },
      +        "colors": {
      +          "description": "Optional explicit color ramp for the color channel; defaults to the shared MC palette.",
      +          "items": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "field": {
      +          "description": "Point property to classify. Required unless the entry only patches style.",
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "filterable": {
      +          "default": true,
      +          "type": "boolean"
      +        },
      +        "label": {
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "max_size": {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "method": {
      +          "description": "Defaults to quantile when every value is numeric, categorical otherwise; manual when classes are supplied.",
      +          "enum": [
      +            "quantile",
      +            "equal_interval",
      +            "categorical",
      +            "manual"
      +          ],
      +          "type": "string"
      +        },
      +        "min_size": {
      +          "exclusiveMinimum": 0,
      +          "type": "number"
      +        },
      +        "point_layer": {
      +          "description": "Target point layer id from ts.properties.point_layers or ingest_accounts.",
      +          "minLength": 1,
      +          "type": "string"
      +        },
      +        "shapes": {
      +          "description": "Required for the shape channel unless every manual class carries a shape. Catalog: circle, square, triangle, diamond, star, cross, house, pin, flag, hexagon, pentagon, shield, arrow_up, building, person (aliases: home, marker/map_pin, hex, arrow/up, warehouse/depot, user/people/tech/technician/rep, plus/x).",
      +          "items": {
      +            "minLength": 1,
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "sizes": {
      +          "items": {
      +            "exclusiveMinimum": 0,
      +            "type": "number"
      +          },
      +          "type": "array"
      +        },
      +        "style": {
      +          "additionalProperties": true,
      +          "description": "Base point symbol for the layer, merged over any existing style. Gives two point layers distinct colors.",
      +          "properties": {
      +            "color": {
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "opacity": {
      +              "maximum": 1,
      +              "minimum": 0,
      +              "type": "number"
      +            },
      +            "shape": {
      +              "description": "Point symbol from the MC catalog: circle|square|triangle|diamond|star|cross|house|pin|flag|hexagon|pentagon|shield|arrow_up|building|person.",
      +              "minLength": 1,
      +              "type": "string"
      +            },
      +            "size": {
      +              "exclusiveMinimum": 0,
      +              "type": "number"
      +            }
      +          },
      +          "type": "object"
      +        }
      +      },
      +      "required": [
      +        "point_layer"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / point_layer_classifications / description
      Added value: +"Applied point-layer symbology. The server computes breaks from the in-session point features, writes ts.properties.point_layers[].<channel>_classification, and pushes config_changed so an open MC repaints. One entry per layer/channel."
    • removedInput schema / properties / point_layer_classifications / title
      Removed value: -"Point Layer Classifications"
    • changedInput schema / properties / presentation / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "debug_panel": {
      +        "description": "Per-request debug modifier. When true, the MC #debug block shows session/mode/TAL/revision/zoom diagnostics and per-row legend meta. It replaces a custom QA template.",
      +        "type": "boolean"
      +      },
      +      "style_overrides": {
      +        "additionalProperties": true,
      +        "description": "Optional style hints forwarded to the MC renderer (may include theme: 'dark' | 'light' or debug_panel).",
      +        "type": "object"
      +      },
      +      "theme": {
      +        "description": "Map Component basemap and UI theme ('dark' or 'light'; default 'dark'). Also accepted at top-level theme or presentation.style_overrides.theme.",
      +        "enum": [
      +          "dark",
      +          "light"
      +        ],
      +        "type": "string"
      +      },
      +      "view_name": {
      +        "description": "Built-in presentation template. Defaults: select mode → selection; empty project → empty; points-only TS → points_only; TAL/review → review. Diagnostics use presentation.debug_panel (or style_overrides.debug_panel), not a separate template.",
      +        "enum": [
      +          "empty",
      +          "points_only",
      +          "review",
      +          "selection"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "title": "Optional Presentation View/Style Context",
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / presentation / description
      Added value: +"Named presentation context stored on map_config and restored when the TS opens."
    • removedInput schema / properties / presentation / title
      Removed value: -"Presentation"
    • addedInput schema / properties / project_name / description
      Added value: +"First-class Territory Solution short name shown as the Map Component panel title. Persists to ts.properties.map_config.project_name; when an MC session is open for this TS, configure_map pushes config_changed so the title refreshes without reopening the map."
    • addedInput schema / properties / theme / description
      Added value: +"Map Component basemap and UI theme ('dark' or 'light'; default 'dark'). Persists to ts.properties.map_config.theme and repaints the open map session live."
    • removedInput schema / properties / ts
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "additionalProperties": true,
      -      "type": "object"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Ts"
      -}
    • addedInput schema / properties / ts_handle / description
      Added value: +"Territory Solution reference (tsh_...) from a build, ingest_accounts, import_geojson, import_designer_project, or get_map_visualization; Territory Solutions are not accepted inline."
    • addedInput schema / properties / zoom / description
      Added value: +"Default MapLibre zoom (0-24). Persists to map_config.zoom. An open MC jumps when this request includes center and/or zoom."
    • removedOutput schema / additionalProperties
      Removed value: -true
    • addedOutput schema / properties
      Added value: +{
      +  "error": {
      +    "description": "Present when ok is false.",
      +    "properties": {
      +      "ask_user": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "code": {
      +        "type": "string"
      +      },
      +      "details": {
      +        "type": "object"
      +      },
      +      "do_this_next": {
      +        "type": "object"
      +      },
      +      "message": {
      +        "type": "string"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "ok": {
      +    "type": "boolean"
      +  },
      +  "result": {
      +    "description": "Present when ok is true.",
      +    "properties": {
      +      "camera": {
      +        "type": "object"
      +      },
      +      "map_config": {
      +        "type": "object"
      +      },
      +      "map_push_status": {
      +        "type": "string"
      +      },
      +      "point_layer_classifications": {
      +        "items": {
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "ts_handle": {
      +        "type": "string"
      +      },
      +      "ts_identity": {
      +        "type": "object"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "warnings": {
      +    "items": {
      +      "properties": {
      +        "code": {
      +          "type": "string"
      +        },
      +        "message": {
      +          "type": "string"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "type": "array"
      +  }
      +}
    • addedOutput schema / required
      Added value: +[
      +  "ok"
      +]
    • removedOutput schema / title
      Removed value: -"configure_mapDictOutput"
  2. Changed1 schema field changed
    • addedInput schema / properties / theme
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Theme"
      +}
  3. Changed1 schema field changed
    • removedInput schema / properties / guidance_handle
      Removed value: -{
      -  "anyOf": [
      -    {
      -      "type": "string"
      -    },
      -    {
      -      "type": "null"
      -    }
      -  ],
      -  "default": null,
      -  "title": "Guidance Handle"
      -}
  4. First observed

TDQS

A4/5.0
Behavior5/5

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

Beyond the annotations, the description discloses important behavior: settings persist to map_config or TS properties, config_changed is pushed to open map sessions, the live map jumps when center/zoom are included, and the server computes classification breaks and returns per-class counts. It also explains that classification without point_layer is project-level and does not color points. No contradiction with annotations is present.

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?

The description is front-loaded with the core purpose and then packs in many useful details without obvious fluff. However, it is a single dense paragraph with semicolon-separated clauses, and some material such as the shape catalog overlaps with the schema. Better structural separation would improve readability.

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 a 15-parameter mutation tool with an output schema, the description covers persistence, live-refresh behavior, and classification semantics well. It omits explanation of merge_strategy and expected_revision/expected_content_hash concurrency behavior, which are important for correct use of this mutation tool. Otherwise it is sufficiently complete.

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 67%, and the description meaningfully adds semantics for many parameters, including project_name, theme, loaded_part_layers, center/zoom behavior, point_layer_classifications structure, channels, methods, and clear:true. It does not explain parameters such as merge_strategy, expected_revision, or expected_content_hash, which are relevant for a mutation tool with concurrency controls.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it updates map settings on a Territory Solution and refreshes the live map. It enumerates the major settings affected, so the tool's purpose is clear. It does not explicitly differentiate itself from siblings such as set_map_state or get_map_visualization, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clarifies that the caller should supply either map_session_id or ts_handle, and explains some usage consequences like clear:true removing a classification. However, it does not state when to use configure_map instead of sibling tools such as set_map_state or ensure_map_viewer. Usage is implied rather than explicitly guided.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources