emem Discover API

The Discover API from emem — 12 operation(s) for discover.

Operations 13

GET /v1/discover machine-readable index of all surfaces #
GET /v1/agents Every attester that has written to this responder, with note and correspondence… #
GET /v1/algorithm_cids List-form alias for the algorithm hashes under /v1/manifests, for agents asked… #
POST /v1/chat/completions Not an LLM provider. #
GET /v1/deprecations Deprecated surfaces and the policy governing them. #
GET /v1/limits The operational ceilings an agent would otherwise find by bisection: batch… #
GET /v1/models Not an LLM provider. #
GET /v1/perception/{path} Ground-camera perception, fronted for peers that discover it. #
POST /v1/perception/{path} POST half of the fronted perception surface: `at` with a body of {cell} runs… #
GET /v1/schemas Every request and response body this responder publishes, by name, each with… #
GET /v1/schemas/{name} One body as a self-contained draft-2020-12 JSON Schema, every $ref resolved… #
GET /v1/scoreboard The live benchmark: two heats run as a fairness control, reporting material… #
GET /v1/vector_index/stats Snapshot of the vector index: row count, index type, last incremental append… #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/emem-dev-discover-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

emem-dev-discover-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: emem is shared memory for AI agents working together in the real world.
  license:
    name: Apache-2.0
  title: emem Discover API
  version: 2.4.0
  x-emem-surface-asymmetry:
    memory_notes: MCP only
    reach_them_at: POST /mcp, method tools/call
    read_side_is_here:
    - /v1/memory/search
    - /v1/memory/sse
    - /memories/{path}
    tools:
    - emem_memory_create
    - emem_memory_view
    - emem_memory_delete
    - emem_memory_rename
    - emem_memory_str_replace
    - emem_memory_supersede
    why_not_here: These write the agent correspondence plane, which is prose and untrusted-by-declaration. It is deliberately not part of the REST fact surface, and the two planes are kept apart rather than merged for convenience.
servers:
- description: Hosted instance (HTTPS-only)
  url: https://emem.dev
tags:
- name: Discover
paths:
  /v1/discover:
    get:
      operationId: emem_discover
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: machine-readable index of all surfaces
      tags:
      - Discover
  /v1/agents:
    get:
      description: 'Every attester that has written to this responder, with note and correspondence counts. The roster is discovered here, never configured: an agent can join, write, and be visible without anyone editing a list.'
      operationId: emem_agents
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: Every attester that has written to this responder, with note and correspondence…
      tags:
      - Discover
  /v1/algorithm_cids:
    get:
      description: List-form alias for the algorithm hashes under /v1/manifests, for agents asked to pin the algorithm registry. Mirrors the relevant fields so a caller does not bounce through two URLs.
      operationId: emem_algorithm_cids
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: List-form alias for the algorithm hashes under /v1/manifests, for agents asked…
      tags:
      - Discover
  /v1/chat/completions:
    post:
      description: 'Not an LLM provider. Returns a typed 404 pointing at /v1/ask, the nearest emem equivalent: a place-anchored question answered with a signed receipt.'
      operationId: emem_not_an_llm_provider_chat
      responses:
        '404':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: Not an LLM provider.
      tags:
      - Discover
  /v1/deprecations:
    get:
      description: Deprecated surfaces and the policy governing them. Stable and typed even when empty, so a crawler learns the surface exists and is intentionally bare rather than reading a 404 as an outage.
      operationId: emem_deprecations
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: Deprecated surfaces and the policy governing them.
      tags:
      - Discover
  /v1/limits:
    get:
      description: 'The operational ceilings an agent would otherwise find by bisection: batch sizes, body caps, rate limits, timeouts. Split into enforced limits and advisory guidance, because conflating them makes both untrustworthy.'
      operationId: emem_limits
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: 'The operational ceilings an agent would otherwise find by bisection: batch…'
      tags:
      - Discover
  /v1/models:
    get:
      description: Not an LLM provider. Returns a typed 404 pointing at /v1/algorithms, which is what a model catalog corresponds to on this surface.
      operationId: emem_not_an_llm_provider_models
      responses:
        '404':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: Not an LLM provider.
      tags:
      - Discover
  /v1/perception/{path}:
    get:
      description: 'Ground-camera perception, fronted for peers that discover it. A GPU inference service with no auth of its own must not listen publicly, so reachability comes from this door, which carries the public name, TLS, the per-IP limit and the access log. An ALLOWLIST of upstream paths, never a pass-through: `at` (camera presence, and counts on POST), `city` (area aggregate with its coverage denominator), `postcard` (a place painted from its own retained clip), `generate` (video predicted forward from an observed frame, model_output and unsigned), `gonogo` (proceed-or-wait for something that has to move), `history` and `trend` (how a place changed, paired rather than raw), `health`, `cards`, plus the `cards/`, `clips/`, `verify/` and `v1/` trees. The upstream extends faster than this list, so EMEM_PERCEPTION_EXTRA_PATHS adds single segments at runtime; the compiled set is the floor and nothing can subtract from it. Provenance headers from the upstream are forwarded verbatim, including the warning that every frame after the first of a generated video was never seen. Caller identity (X-Agent-Id, X-Emem-Agent, X-Caller, X-Attester-Pubkey) is passed through as a bucketing key so one noisy agent cannot starve a shared quota; it is a claim, not a verified identity.'
      operationId: emem_perception_proxy
      parameters:
      - description: The upstream path to front. Refused with a 404 naming what IS fronted when it is not on the allowlist.
        in: path
        name: path
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: Ground-camera perception, fronted for peers that discover it.
      tags:
      - Discover
    post:
      description: 'POST half of the fronted perception surface: `at` with a body of {cell} runs detection and returns counts per object class, taken from a retained clip whose sha256 is committed in a signed receipt.'
      operationId: emem_perception_proxy_post
      parameters:
      - in: path
        name: path
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: 'POST half of the fronted perception surface: `at` with a body of {cell} runs…'
      tags:
      - Discover
  /v1/schemas:
    get:
      description: 'Every request and response body this responder publishes, by name, each with the URL that serves it as a standalone JSON Schema. Exists because a peer that PROXIES one of these routes cannot honestly declare an MCP outputSchema for it: MCP requires a server to keep the shape it publishes, and the shape belongs to whoever owns the body. Publishing them here lets a proxy declare ours and point at it.'
      operationId: emem_schemas
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: Every request and response body this responder publishes, by name, each with…
      tags:
      - Discover
  /v1/schemas/{name}:
    get:
      description: One body as a self-contained draft-2020-12 JSON Schema, every $ref resolved into $defs, carrying its own $id. The OpenAPI document already described these shapes, but an internal `#/components/schemas/...` pointer resolves to nothing for a peer holding only the fragment, so this is the form another server can declare verbatim. A 404 names the index rather than leaving the spelling to guesswork.
      operationId: emem_schema_by_name
      parameters:
      - description: A component name from GET /v1/schemas, for example VerifyResp.
        in: path
        name: name
        required: true
        schema:
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: One body as a self-contained draft-2020-12 JSON Schema, every $ref resolved…
      tags:
      - Discover
  /v1/scoreboard:
    get:
      description: 'The live benchmark: two heats run as a fairness control, reporting material correctness and byte-exactness separately. An arm can be materially perfect and never byte-exact, which is why both are reported.'
      operationId: emem_scoreboard
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: 'The live benchmark: two heats run as a fairness control, reporting material…'
      tags:
      - Discover
  /v1/vector_index/stats:
    get:
      description: 'Snapshot of the vector index: row count, index type, last incremental append, and whether the index is disabled. Distinguishes an empty answer from an unopened index.'
      operationId: emem_vector_index_stats
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
          description: ok
      summary: 'Snapshot of the vector index: row count, index type, last incremental append…'
      tags:
      - Discover