Skip to main content
Glama

show_on_map

Idempotent

Generates local and public map links centered on coordinates, factories, nodes, machines, plans, or resources, with optional pinning and map layers for locating save data.

Instructions

Map links centred on a place: this project's map (draws your save) and the public one (vanilla world, nothing built).

'resource:' centres on every node of that resource with its overlays on (Crude Oil layers confirmed; a wrong token still opens the right place). pin=true also pins the place for the page as pin:N; mode= picks the local link's base map.

Input Schema

NameRequiredDescriptionDefault
atYesa place: 'x,y' in metres, 'me', a factory name, 'node:<id>', 'machine:<instance>', 'slab:<n>', 'chain:<n>'/'pipe:<n>', 'plan:<name>', 'pin:<n>'; or 'resource:<name>' for every node of one resource
pinNoalso pin it on the page (pin:N)
modeNobase map for the local link: an id settings() lists, or plain
saveNo
zoomNo
as_ofNopin to one save: the sav:… token an earlier answer printed
worldNo
layersNopublic-map layer tokens; a pickup group also shows locally

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed24 schema fields changedv0.3.0
    • removedInput schema / properties / as_of / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedInput schema / properties / as_of / description
      Previous value: -"pin to one world state: a sav:… token from an earlier answer"New value: +"pin to one save: the sav:… token an earlier answer printed"
    • removedInput schema / properties / as_of / title
      Removed value: -"As Of"
    • addedInput schema / properties / as_of / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • changedInput schema / properties / at / description
      Previous value: -"any place -- 'x,y' in metres, 'me', a factory label, 'node:<id>', 'machine:<id>', 'slab:<n>', 'chain:<n>'/'pipe:<n>', 'plan:<name>' -- or 'resource:Crude Oil' for every node of one resource"New value: +"a place: 'x,y' in metres, 'me', a factory name, 'node:<id>', 'machine:<instance>', 'slab:<n>', 'chain:<n>'/'pipe:<n>', 'plan:<name>', 'pin:<n>'; or 'resource:<name>' for every node of one resource"
    • removedInput schema / properties / at / title
      Removed value: -"At"
    • removedInput schema / properties / layers / anyOf
      Removed value: -[
      -  {
      -    "items": {
      -      "type": "string"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedInput schema / properties / layers / description
      Previous value: -"explicit sublayer tokens, overriding the guess"New value: +"public-map layer tokens; a pickup group also shows locally"
    • addedInput schema / properties / layers / items
      Added value: +{
      +  "type": "string"
      +}
    • removedInput schema / properties / layers / title
      Removed value: -"Layers"
    • addedInput schema / properties / layers / type
      Added value: +[
      +  "array",
      +  "null"
      +]
    • removedInput schema / properties / mode / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • changedInput schema / properties / mode / description
      Previous value: -"base map type for the local link, an id settings() lists, or plain"New value: +"base map for the local link: an id settings() lists, or plain"
    • removedInput schema / properties / mode / title
      Removed value: -"Mode"
    • addedInput schema / properties / mode / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / pin / title
      Removed value: -"Pin"
    • removedInput schema / properties / save / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / save / title
      Removed value: -"Save"
    • addedInput schema / properties / save / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / world / anyOf
      Removed value: -[
      -  {
      -    "type": "string"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • removedInput schema / properties / world / title
      Removed value: -"World"
    • addedInput schema / properties / world / type
      Added value: +[
      +  "string",
      +  "null"
      +]
    • removedInput schema / properties / zoom / title
      Removed value: -"Zoom"
    • removedInput schema / title
      Removed value: -"show_on_mapArguments"
  2. Changed3 schema fields changedv0.2.0
    • changedInput schema / properties / at / description
      Previous value: -"any place -- 'x,y' in metres, 'me', a factory label, 'node:<id>', 'slab:<n>', 'chain:<n>'/'pipe:<n>', 'plan:<name>' -- or 'resource:Crude Oil' for every node of one resource"New value: +"any place -- 'x,y' in metres, 'me', a factory label, 'node:<id>', 'machine:<id>', 'slab:<n>', 'chain:<n>'/'pipe:<n>', 'plan:<name>' -- or 'resource:Crude Oil' for every node of one resource"
    • addedInput schema / properties / mode
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "base map type for the local link, an id settings() lists, or plain",
      +  "title": "Mode"
      +}
    • addedInput schema / properties / pin
      Added value: +{
      +  "default": false,
      +  "description": "also pin it on the page (pin:N)",
      +  "title": "Pin",
      +  "type": "boolean"
      +}
  3. Changed4 schema fields changed
    • addedInput schema / properties / as_of
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "description": "pin to one world state: a sav:… token from an earlier answer",
      +  "title": "As Of"
      +}
    • addedInput schema / properties / at
      Added value: +{
      +  "description": "any place -- 'x,y' in metres, 'me', a factory label, 'node:<id>', 'slab:<n>', 'chain:<n>'/'pipe:<n>', 'plan:<name>' -- or 'resource:Crude Oil' for every node of one resource",
      +  "title": "At",
      +  "type": "string"
      +}
    • removedInput schema / properties / target
      Removed value: -{
      -  "description": "'x,y' in metres, 'me', a factory label, a node id, or a resource name like 'Crude Oil'",
      -  "title": "Target",
      -  "type": "string"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "target"
      -]New value: +[
      +  "at"
      +]
  4. First observedv0.1.0

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false with idempotentHint=true, and the description is consistent with a side-effecting-but-idempotent call: pin=true pins the place for the page, which explains the non-read-only hint. It also adds real behavioral context the annotations cannot convey, e.g. that a wrong token still opens the right place, that resource: centres on every node with overlays, and that the public map shows an unbuilt vanilla world.

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 key distinction (local vs public map) is front-loaded in the first clause, and the follow-up sentences cover the token grammar and pinning in a compact way. The parenthetical asides and line breaks make it denser than ideal, but no sentence is wasted.

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

Completeness3/5

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

For an 8-parameter tool with no output schema, the description explains what the links are but not the shape of the response, and several parameters (save, zoom, world) go unmentioned. The core invocation path via 'at' is well covered, so it is adequate but not complete.

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 63%, so the description must add some value and it does for 'at' (token grammar), 'pin' (pins as pin:N), and 'mode' (base map). However save, zoom, world, and as_of are left to the schema, and 'world' in particular is undocumented in both places despite being ambiguous next to the local/public map distinction. Baseline 3 for partial coverage is appropriate.

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 opens with a concrete verb and resource: it produces map links centred on a place, and immediately distinguishes the two link targets (this project's map, which draws your save, versus the public vanilla map). That is far more specific than a name restatement. It does not explicitly name a sibling such as factory_map or describe_location to differentiate itself, which keeps it from 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?

Usage is implied rather than stated: the agent can infer this is the tool for 'show me this thing on a map', and the resource:<name> and pin=true clauses hint at intended scenarios. There is no explicit when-to-use/when-not guidance and no comparison against the many sibling tools that also deal with locations (describe_location, whereami, factory_map).

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