> ## Documentation Index
> Fetch the complete documentation index at: https://docs.memloom.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Find and fold duplicate entity spellings

> One resolution pass over the entity table. Spellings that are identical apart from
case and punctuation are folded without asking; uncertain pairs are written to the
conflicts queue for review. Idempotent and safe to re-run.

The queue is capped so entity folds cannot bury memory conflicts. Questions that did
not fit are reported as `deferred` rather than dropped silently, and a later pass
picks them up as answers come in.




## OpenAPI

````yaml /openapi.yaml post /memory/entities/resolve
openapi: 3.1.0
info:
  title: memloom local API
  version: 0.1.0
  description: >
    The HTTP API served by the `memloom serve` daemon on your machine. The CLI,
    the MCP server,

    and the viewer all route through this API. The daemon is the single owner of
    the store, so

    every client shares one consistent view of your memories.


    No authentication: the daemon binds to `127.0.0.1` only and is reachable
    solely from your

    own machine. Browser clients on other localhost ports are allowed via CORS.
servers:
  - url: http://127.0.0.1:4319
    description: Local memloom daemon
security: []
paths:
  /memory/entities/resolve:
    post:
      summary: Find and fold duplicate entity spellings
      description: >
        One resolution pass over the entity table. Spellings that are identical
        apart from

        case and punctuation are folded without asking; uncertain pairs are
        written to the

        conflicts queue for review. Idempotent and safe to re-run.


        The queue is capped so entity folds cannot bury memory conflicts.
        Questions that did

        not fit are reported as `deferred` rather than dropped silently, and a
        later pass

        picks them up as answers come in.
      operationId: resolveEntities
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                dryRun:
                  type: boolean
                  default: false
                  description: Report the plan without changing anything.
      responses:
        '200':
          description: What the pass did.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityResolutionResult'
components:
  schemas:
    EntityResolutionResult:
      type: object
      description: What one resolution pass did.
      properties:
        examined:
          type: integer
          description: Entities considered.
        pairs:
          type: integer
          description: Pairs that survived bucketing and were judged.
        merged:
          type: integer
          description: Folds applied without asking.
        queued:
          type: integer
          description: Uncertain folds written to the conflicts queue.
        deferred:
          type: integer
          description: >-
            Uncertain folds not written because the queue is already full.
            Reported rather than dropped silently, so "nothing queued" never
            hides "there was more to ask about". A later pass picks them up.
        skipped:
          type: integer
          description: Pairs already merged, queued, or settled as distinct.

````