Skip to main content
Glama

Mint or get a canonical object identity

emem_entity
Idempotent

Creates a single shared identity for any real-world object (bridge, farm, river) so every agent resolves the same object the same way, collapsing divergent labels into one canonical entity.

Instructions

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 stable handle to it that survives summarization and travels between agents/turns/LLMs, before it drifts into 'that infrastructure issue'. Anchor it with place, a cell, or lat+lng. Hand the returned emem:entity: token to any other agent; they dereference the identical object. Recall/ask at the entity's cell64 for signed facts about it. Pick the right sibling: emem_entity MINTS or returns the identity for a thing you can anchor to a place; emem_entity_resolve takes a fuzzy phrase and finds an identity someone ALREADY registered, so reach for it when you suspect the thing is known and you only have words for it; emem_entity_link asserts that two spellings you already hold mean one object. Do NOT call this for an observation, which is a fact and belongs in emem_recall or emem_memory_token, and do not call it to name a place itself, which is emem_locate: an entity is a THING AT a place, not the 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.
Behavior4/5

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

Annotations already indicate idempotent, non-destructive, open-world, and not read-only. The description adds valuable context beyond annotations: same name mints the same cid, external ids (GERS/OSM) dominate identity, returns a signed receipt, and it is an 'antidote to referential drift'. This gives the agent clear expectations about behavior and state changes without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although the description is fairly long, it is well-structured with a clear purpose statement, a 'When to use' section, sibling differentiation, and an explicit example. Every sentence adds value; there is no fluff or redundancy. Front-loading the main behavior makes it easy to grasp quickly.

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?

The tool has 8 parameters, nested objects, no output schema, and many siblings. The description covers return values (entity_token and signed receipt), anchor options, external-id precedence, and usage context. It also provides a concrete example. This is complete enough for an agent to select and invoke the tool correctly without additional external documentation.

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 description coverage is 100%, with every parameter (label, kind, place, cell, lat, lng, parent, external_ids) already documented in the schema. The description reinforces the anchoring options and notes that external_ids dominate convergence, but it does not add significant new semantic information beyond the schema. Baseline of 3 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 uses a specific verb-object pair ('Mint or get a canonical object identity') and clearly states what the tool does: gives a real-world object a content-addressed identity. It distinguishes from siblings by explicitly naming emem_entity_resolve and emem_entity_link, as well as emem_locate and emem_recall, so the agent knows exactly when to choose this tool.

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?

The description provides explicit when-to-use guidance ('Call when a conversation refers to a THING...'), names alternatives with contrasting behavior (emem_entity_resolve, emem_entity_link, emem_locate), and gives clear exclusions (do not call for observations or to name a place). It also explains anchoring with place/cell/lat+lng and handing the returned token to other agents.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vortx-AI/emem'

If you have feedback or need assistance with the MCP directory API, please join our Discord server