Skip to main content
Glama

emem, the verifiable memory protocol for the physical world

Resolve place to cell64 + band inventory

emem_locate
Read-onlyIdempotent

Get the canonical address (cell64) of a real-world place. Every agent resolves a place to the same cell64, so two models refer to the same ground. The answer also lists, by topic, the bands and algorithms that you can recall there. For an OBJECT identity (a bridge, a plot) instead of a cell, use emem_entity. Send lat+lng as numbers, or a free-text place. When both arrive, the coordinates win. q, query and name are other names for place. The answer lists keys that this schema does not declare in _unrecognised_arguments, so a typo is visible.

When to use: Call this when the next step needs the cell64 of a named place, or the bands that exist there. data_at_this_cell lists every band you can recall, by topic (live_bands_by_topic), the recipes that use them (algorithms_for_topic), and the bands with no materializer here. It has research_nearby when vouched research agents signed conclusions inside the place. Read those with emem_inferences before you recompute them. For one packaged answer in one call, use emem_ask.

Example arguments: {"place":"Mount Everest"}

Input Schema

NameRequiredDescriptionDefault
qNoAlias for `place`, accepted because OSM/Mapbox/Google Geocoding all use `q`. Provide either this or `place` (or `lat`+`lng`).
latNoWGS-84 latitude in degrees, paired with `lng`. REQUIRED with `lng` unless `place`/`q` is provided.
lngNoWGS-84 longitude in degrees, paired with `lat`. REQUIRED with `lat` unless `place`/`q` is provided.
nameNoAlias for `place`.
placeNoFree-text place name (e.g. 'Mount Everest', 'Tokyo'). REQUIRED unless `lat`+`lng` is provided. Aliases also accepted: `q`, `query`, `name`.
queryNoAlias for `place`.

Output Schema

NameRequiredDescriptionDefault
nextYes
cell64NoPass as `cell` to emem_recall.
statusNoneeds_location: no place named.
selectedNo
place_labelNo
research_nearbyNoPresent when vouched research agents signed conclusions inside the place. Tokens only; read them with emem_inferences.
data_at_this_cellNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedOutput schema / properties / research_nearby
      Added value: +{
      +  "description": "Present when vouched research agents signed conclusions inside the place. Tokens only; read them with emem_inferences.",
      +  "type": "object"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "anyOf": [
      +    {
      +      "required": [
      +        "cell64"
      +      ]
      +    },
      +    {
      +      "required": [
      +        "status"
      +      ]
      +    }
      +  ],
      +  "properties": {
      +    "cell64": {
      +      "description": "Pass as `cell` to emem_recall.",
      +      "type": "string"
      +    },
      +    "data_at_this_cell": {
      +      "type": "object"
      +    },
      +    "next": {
      +      "type": "array"
      +    },
      +    "place_label": {
      +      "type": [
      +        "string",
      +        "null"
      +      ]
      +    },
      +    "selected": {
      +      "properties": {
      +        "confidence_reason": {
      +          "type": "string"
      +        },
      +        "is_high_confidence": {
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "status": {
      +      "description": "needs_location: no place named.",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "next"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • addedInput schema / properties / name
      Added value: +{
      +  "description": "Alias for `place`.",
      +  "type": "string"
      +}
    • addedInput schema / properties / query
      Added value: +{
      +  "description": "Alias for `place`.",
      +  "type": "string"
      +}
  4. Changed1 schema field changed
    • changedInput schema / properties / q / description
      Previous value: -"Alias for `place` — accepted because OSM/Mapbox/Google Geocoding all use `q`. Provide either this or `place` (or `lat`+`lng`)."New value: +"Alias for `place`, accepted because OSM/Mapbox/Google Geocoding all use `q`. Provide either this or `place` (or `lat`+`lng`)."
  5. Changed6 schema fields changed
    • removedInput schema / anyOf
      Removed value: -[
      -  {
      -    "required": [
      -      "place"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "q"
      -    ]
      -  },
      -  {
      -    "required": [
      -      "lat",
      -      "lng"
      -    ]
      -  }
      -]
    • removedInput schema / description
      Removed value: -"Resolve a place to a cell64. Provide either `place`/`q` (free text) or both `lat`+`lng`."
    • changedInput schema / properties / lat / description
      Previous value: -"WGS-84 latitude in degrees, paired with `lng`."New value: +"WGS-84 latitude in degrees, paired with `lng`. REQUIRED with `lng` unless `place`/`q` is provided."
    • changedInput schema / properties / lng / description
      Previous value: -"WGS-84 longitude in degrees, paired with `lat`."New value: +"WGS-84 longitude in degrees, paired with `lat`. REQUIRED with `lat` unless `place`/`q` is provided."
    • changedInput schema / properties / place / description
      Previous value: -"Free-text place name (e.g. 'Mount Everest', 'Tokyo'). Aliases: `q`, `query`, `name`."New value: +"Free-text place name (e.g. 'Mount Everest', 'Tokyo'). REQUIRED unless `lat`+`lng` is provided. Aliases also accepted: `q`, `query`, `name`."
    • changedInput schema / properties / q / description
      Previous value: -"Alias for `place` — accepted because OSM/Mapbox/Google Geocoding all use `q`. Resolves the same way."New value: +"Alias for `place` — accepted because OSM/Mapbox/Google Geocoding all use `q`. Provide either this or `place` (or `lat`+`lng`)."
  6. Changed6 schema fields changed
    • addedInput schema / anyOf
      Added value: +[
      +  {
      +    "required": [
      +      "place"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "q"
      +    ]
      +  },
      +  {
      +    "required": [
      +      "lat",
      +      "lng"
      +    ]
      +  }
      +]
    • addedInput schema / description
      Added value: +"Resolve a place to a cell64. Provide either `place`/`q` (free text) or both `lat`+`lng`."
    • changedInput schema / properties / lat / description
      Previous value: -"WGS-84 latitude in degrees, paired with `lng`"New value: +"WGS-84 latitude in degrees, paired with `lng`."
    • changedInput schema / properties / lng / description
      Previous value: -"WGS-84 longitude in degrees, paired with `lat`"New value: +"WGS-84 longitude in degrees, paired with `lat`."
    • changedInput schema / properties / place / description
      Previous value: -"Free-text place name (e.g. 'Mount Everest', 'Tokyo')"New value: +"Free-text place name (e.g. 'Mount Everest', 'Tokyo'). Aliases: `q`, `query`, `name`."
    • addedInput schema / properties / q
      Added value: +{
      +  "description": "Alias for `place` — accepted because OSM/Mapbox/Google Geocoding all use `q`. Resolves the same way.",
      +  "type": "string"
      +}
  7. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already establish read-only, open-world, idempotent, non-destructive behavior, and the description adds useful operational details: aliases are accepted, coordinates take precedence over text, and unrecognized arguments are surfaced. These details go beyond what the annotations declare and help the agent invoke the tool correctly.

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 follows with usage guidance, alternatives, parameter behavior, and an example. It is somewhat dense and includes internal-return detail, but most sentences earn their place.

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?

Given the rich annotations, complete input schema, and existing output schema, the description supplies enough context: purpose, when to use it, alternatives, parameter precedence, and response inventory. Nothing critical is missing for correct selection or invocation.

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 100%, so the baseline is 3, but the description adds that lat/lng must be numbers and that coordinates win when both coordinate and text inputs are provided. It repeats some alias information already present in the schema, so it is not fully additive.

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?

The description states a specific verb and resource: get the canonical cell64 address of a real-world place, plus its band inventory. It also distinguishes this from emem_entity for object identities, so an agent can tell which lookup is appropriate.

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

Usage Guidelines5/5

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

It explicitly says when to call this tool, names emem_entity as the alternative for object identities, and points to emem_inferences for nearby vouch research. It also routes packaged multi-part answers to emem_ask, giving clear sibling boundaries.

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.