Skip to main content
Glama

emem, the verifiable memory protocol for the physical world

Mint or get a canonical object identity

emem_entity
Idempotent

Give a real-world object (a bridge, a farm plot, a river, a named place) a single, shared, content-addressed identity that any agent resolves the same way. Returns an entity_token (emem:entity:<entity_cid>) plus a signed receipt that attests how the reference resolved. Two agents that name the same object mint the SAME entity_cid; when a stable external id (Overture GERS / OSM) is known it dominates identity, so divergent labels for one real object still collapse to one id. This is the object-level antidote to referential drift: 'the damaged bridge near the river' becomes one canonical thing every model reasons about, not a phrase each model re-interprets.

When to use: Call when a conversation refers to a THING and you want a handle that survives summarisation and travels between agents, before it drifts into 'that infrastructure issue'. Anchor it with place, cell, or lat+lng, then hand the emem:entity: token to any peer and they dereference the same object; recall at its cell64 for signed facts. Pick the sibling: this one MINTS or returns an identity you can anchor; emem_entity_resolve finds one someone already registered from a fuzzy phrase; emem_entity_link asserts two spellings you hold mean one object. Not for an observation (that is a fact: emem_recall or emem_memory_token) and not for naming a place (that is emem_locate). An entity is a thing AT a place.

Example arguments: {"label":"Golden Gate Bridge","kind":"bridge","place":"Golden Gate Bridge, San Francisco"}

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
latNoLatitude anchoring the object to a place, paired with lng. The identity is hashed from this anchor, so two agents anchoring the same object differently mint different entities.
lngNoLongitude, paired with lat.
cellNocell64 to anchor the object directly (no geocode).
kindNoObject class: bridge, river, farm_plot, building, admin_division, place, custom, ... Defaults to "place".
labelYesHuman name of the object, e.g. "Golden Gate Bridge", "the north dam". Required.
placeNoFree-text place to anchor the object (geocoded). Provide place OR cell OR lat+lng.
parentNoOptional parent entity_cid (containment).
external_idsNoStable ids that drive convergence. Caller-supplied values win over geocoder-derived ones.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / lat / description
      Added value: +"Latitude anchoring the object to a place, paired with lng. The identity is hashed from this anchor, so two agents anchoring the same object differently mint different entities."
    • addedInput schema / properties / lat / maximum
      Added value: +90
    • addedInput schema / properties / lat / minimum
      Added value: +-90
    • addedInput schema / properties / lng / description
      Added value: +"Longitude, paired with lat."
    • addedInput schema / properties / lng / maximum
      Added value: +180
    • addedInput schema / properties / lng / minimum
      Added value: +-180
  2. Added

TDQS

A4.8/5.0
Behavior5/5

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

The description adds substantial behavioral context beyond annotations. It explains the idempotence (same object mints same entity_cid), the dominance of external IDs (Overture GERS / OSM) in identity, the anchoring mechanism (lat/lng/cell), and the return format (entity_token plus signed receipt). It also clarifies the conceptual boundary (entity is a thing AT a place). None of this contradicts the annotations; it complements them.

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 relatively long but well-structured, starting with a clear purpose and then layering usage guidance and examples. The 'When to use' and 'Pick the sibling' sections are front-loaded after the opening paragraph. While every sentence earns its place, it is denser than strictly necessary; a slightly tighter version would merit a 5.

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 8 parameters, nested objects, and no output schema, the description covers all essential aspects: what the tool does, when to use it, how it behaves (idempotent, anchor-driven), what it returns (entity_token + signed receipt), and parameter semantics (anchoring, external IDs). Nothing critical is missing for an agent to call it correctly.

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 schema already documents all parameters. The description adds meaningful guidance: it explains the anchor requirement (place OR cell OR lat+lng) and that external_ids drive convergence and override geocoder-derived values. It also provides a concrete example argument set. This goes beyond the schema, though it does not exhaustively annotate every parameter, so a 4 is appropriate.

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 (mint/get) and resource (canonical object identity) and explains the core behavior: content-addressed identity that resolves consistently. It explicitly distinguishes itself from siblings (emem_entity_resolve, emem_entity_link, emem_recall, emem_locate) by naming what it is not. The purpose is unambiguous and the agent can tell it apart without opening schemas.

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?

There is an explicit 'When to use' section that tells the agent to call when referencing a THING and wanting a stable handle, and it names the sibling alternatives with the conditions that select them (emem_entity_resolve for fuzzy search, emem_entity_link for asserting two spellings). It also gives clear negative guidance: not for observations (emem_recall) or naming a place (emem_locate). No ambiguity remains about when to invoke this tool.

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.