Skip to main content
Glama

Open Map

get_map_visualization

Opens the interactive territory map (Map Component) and returns map_url and map_session_id. Opens a blank map, or shows the latest state of an existing Territory Solution (e.g. yesterday's work) from ts_handle or a completed job_id. Idempotent per user_id: a second call returns the same map. new_project=true replaces the open workspace with an empty project. theme: dark | light (basemap and UI style; default dark). presentation.view_name: empty | points_only | review | selection. Apps-capable hosts render the map in chat (ui://easyterritory/map-viewer); other clients open map_url in a browser. Later map tools take map_session_id. ensure_map_viewer reports when the person has the map open.

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": "get_map_visualization"
  }
}

Input Schema

NameRequiredDescriptionDefault
modeNoview — read-only map review/share/verification, no selection commits. select — allows transient local selection and committed selection events.view
themeNoMap Component basemap and UI theme ('dark' or 'light'; default 'dark').
job_idNotask_id (same value as job_id) of a completed build or ingest task; its Territory Solution is the input.
user_idNoStable caller id; a second call with the same user_id returns the same map.
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.
new_projectNoStart a fresh map session (session_exists=false) instead of reusing the caller's open workspace. Without ts, ts_handle, or job_id, opens an empty project; with a TS source, opens that Territory Solution on a new session without carrying over prior routes, overlays, or analysis panels. Omitted empty+view reuses the existing project.
presentationNo
active_tal_idNoAlignment to show as active.
expiry_secondsNoRequested session TTL in seconds. Server may cap at policy maximum.
interaction_flagsNoOnly meaningful in select mode.

Output Schema

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed18 schema fields changed
    • addedInput schema / properties / active_tal_id / description
      Added value: +"Alignment to show as active."
    • addedInput schema / properties / expiry_seconds / description
      Added value: +"Requested session TTL in seconds. Server may cap at policy maximum."
    • changedInput schema / properties / interaction_flags / anyOf
      Previous value: -[
      -  {
      -    "additionalProperties": true,
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "allow_click_select": {
      +        "default": true,
      +        "description": "Enable click-to-toggle part selection. When false and lasso is enabled, select mode starts in lasso.",
      +        "type": "boolean"
      +      },
      +      "allow_lasso_select": {
      +        "default": true,
      +        "description": "Enable the MC freehand lasso tool in select mode. Lasso adds every visibly overlapping part and preserves the existing selection for click fine-tuning.",
      +        "type": "boolean"
      +      },
      +      "allow_territory_filter": {
      +        "default": false,
      +        "type": "boolean"
      +      }
      +    },
      +    "title": "Allowed Interaction Flags for select Mode",
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • addedInput schema / properties / interaction_flags / description
      Added value: +"Only meaningful in select mode."
    • removedInput schema / properties / interaction_flags / title
      Removed value: -"Interaction Flags"
    • addedInput schema / properties / job_id / description
      Added value: +"task_id (same value as job_id) of a completed build or ingest task; its Territory Solution is the input."
    • addedInput schema / properties / mode / description
      Added value: +"view — read-only map review/share/verification, no selection commits. select — allows transient local selection and committed selection events."
    • addedInput schema / properties / new_project / description
      Added value: +"Start a fresh map session (session_exists=false) instead of reusing the caller's open workspace. Without ts, ts_handle, or job_id, opens an empty project; with a TS source, opens that Territory Solution on a new session without carrying over prior routes, overlays, or analysis panels. Omitted empty+view reuses the existing project."
    • 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"
      +  }
      +]
    • removedInput schema / properties / presentation / title
      Removed value: -"Presentation"
    • addedInput schema / properties / theme / description
      Added value: +"Map Component basemap and UI theme ('dark' or 'light'; default 'dark')."
    • 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 / user_id / description
      Added value: +"Stable caller id; a second call with the same user_id returns the same map."
    • 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": {
      +      "active_part_layer": {
      +        "type": "string"
      +      },
      +      "active_tal_summary": {
      +        "type": "object"
      +      },
      +      "expires_at": {
      +        "type": "string"
      +      },
      +      "loaded_part_layers": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "map_session_id": {
      +        "type": "string"
      +      },
      +      "map_url": {
      +        "type": "string"
      +      },
      +      "new_project": {
      +        "type": "boolean"
      +      },
      +      "next_step": {
      +        "type": "string"
      +      },
      +      "selection_resource_uri": {
      +        "type": "string"
      +      },
      +      "session_exists": {
      +        "type": "boolean"
      +      },
      +      "state_resource_uri": {
      +        "type": "string"
      +      },
      +      "ts_handle": {
      +        "type": "string"
      +      },
      +      "ts_identity": {
      +        "type": "object"
      +      },
      +      "viewer_status": {
      +        "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: -"get_map_visualizationDictOutput"
  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.2/5.0
Behavior4/5

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

Adds substantial context beyond the annotations: new_project=true replaces the open workspace, sessions get a TTL capped by policy, Apps-capable hosts render in chat via ui://easyterritory/map-viewer while other clients open map_url, and later map tools consume map_session_id. The claim 'Idempotent per user_id: a second call returns the same map' sits in mild tension with idempotentHint=false, softened only by the 'per user_id' qualifier and the mutation implied by new_project.

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?

Front-loads purpose and return values in the first sentence, then layers session semantics and host behavior compactly. Some space is spent re-enumerating schema enums (theme, view_name), which is redundant at 90% schema coverage.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-required-parameter session-opening tool with an output schema and rich annotations, the description covers the remaining agent-critical facts: where the map appears per host, that the session id must be threaded into later tools, and that ensure_map_viewer covers the 'is it open' question.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 90%, so parameters are already well documented. The description largely restates schema content (theme: dark|light, presentation.view_name enum values) rather than adding format or interaction meaning, and it omits parameters such as mode, interaction_flags, active_tal_id, and expiry_seconds entirely.

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?

A specific verb plus resource ('Opens the interactive territory map (Map Component)') followed by the concrete artifacts returned (map_url, map_session_id). It is clearly separable from siblings like configure_map, set_map_state, and ensure_map_viewer by name and role.

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

Usage Guidelines4/5

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

Says exactly what the call targets: a blank map, or the latest state of an existing Territory Solution from ts_handle or a completed job_id, and points at ensure_map_viewer for the different question of whether the map is already open. It does not state outright when NOT to use it (e.g. vs. configure_map or set_map_state for an already-open map), so it stops short of full routing guidance.

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