# emem REST API

**Canonical:** https://apis.io/apis/emem-dev/emem-rest-api/  
**Provider:** emem — https://apis.io/providers/emem-dev/  
**Base URL:** https://emem.dev  
**Documentation:** https://emem.dev/docs/api/

emem REST API is one of 3 APIs that [emem](https://apis.io/providers/emem-dev/) publishes on the [APIs.io](https://apis.io/) network, described by a machine-readable OpenAPI specification. Tagged areas include Agent Memory, Geospatial, Earth Observation, and Provenance. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, and an API reference.

The /v1 REST surface of the emem responder: locate a place to a cell64, recall signed facts, ask free-text questions routed over an algorithm registry, mint and resolve emem: citation tokens, verify receipts offline, write signed agent memory, and read the RFC 6962-style transparency log. Reads are anonymous; writes carry a per-request ed25519 attester signature.

## Operations (60 of 196)

| Method | Path | Summary |
|---|---|---|
| GET | `/.well-known/did.json` | node identity: the did:web document naming this node's responder key (the key under every STH and receipt) and, when the operator declares one, its witness k... |
| GET | `/.well-known/emem-agents.json` | organisation vouching: the keys this operator vouches for, from config/emem-agents.json. The enlistment ladder on OTHER nodes fetches this document to move a... |
| GET | `/.well-known/emem-verifier.json` | Alias of GET /v1/verifier_spec: the code-generated signing/verification specification, at a well-known path so an offline verifier can discover it without re... |
| GET | `/.well-known/emem.json` | protocol discovery |
| GET | `/.well-known/jwks.json` | This responder's ed25519 public key as a JWK set (OKP/Ed25519, alg EdDSA). The agent card's signature names this document in its `jku`, so a client holding o... |
| POST | `/a2a/tasks` | execute one skill synchronously. Accepts A2A JSON-RPC (method message/send) or the plain {skill, args} form. Every MCP tool is published as a skill. |
| GET | `/health` | liveness + corpus stats |
| GET | `/live` | dead-cheap liveness (no storage scan; poll during deploys) |
| GET | `/mcp` | Discovery document for the MCP endpoint (transport, protocol versions, tool names, client configs). This responder is stateless — no Mcp-Session-Id, no serve... |
| POST | `/mcp` | MCP JSON-RPC 2.0 (Streamable HTTP). tools/list here returns the 18-tool core surface; /mcp/full returns all 110. tools/call dispatches any of the 110 by name... |
| GET | `/spec/a2a/async-tasks/v1` | The A2A extension the agent card advertises by URI: the declaration verbatim, the task lifecycle, the typed errors, and the request body for each operation w... |
| GET | `/spec/a2a/channel/v1` | The A2A channel extension the agent card advertises by URI: how to write a signed note addressed to this responder, what answers (an acknowledgement within m... |
| GET | `/v1/a2a/skills` | find a skill in one call |
| POST | `/v1/a2a/tasks` | submit a task asynchronously; returns a task id to poll. The registry is in-memory and clears on restart, which the error text states rather than implying du... |
| GET | `/v1/a2a/tasks/{id}` | poll an async task |
| POST | `/v1/a2a/tasks/{id}/cancel` | cancel an async task |
| GET | `/v1/agent_card` | rich tool catalog with when-to-use |
| GET | `/v1/agent_quickref` | agent-targeted intent map: which endpoint to call for which user intent, with usage priority + trust language |
| GET | `/v1/agent_stats` | per-tool MCP latency + error counts |
| GET | `/v1/agents` | Every attester that has written to this responder, with note and correspondence counts. The roster is discovered here, never configured: an agent can join, w... |
| GET | `/v1/air` | GET /v1/air?lat=&lon=, CAMS PM2.5 + NO2 + O3 + aerosol optical depth at 550 nm (signed). Also accepts ?place=… |
| POST | `/v1/air` | POST /v1/air {place\|lat,lng} |
| GET | `/v1/algorithm_cids` | 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 no... |
| GET | `/v1/algorithms` | composition recipe registry (formulas that fuse band facts) |
| GET | `/v1/algorithms/{key}` | per-key drill-down on a single algorithm (formula, inputs, citation), pair with /v1/algorithms's catalog |
| GET | `/v1/arcade/protocol` | The arcade join contract, versioned. Write a signed memory note whose first line is an `ARCADE ` header and a character appears on emem.dev/arcade; there is ... |
| GET | `/v1/artifacts/{cid}` | raw canonical grid bytes by artifact cid, Cache-Control immutable (content-addressed bytes never change). A 404 is typed and says how to rebuild: eviction is... |
| POST | `/v1/ask` | single-shot free-text answer with signed evidence. The envelope carries `reasoning`: the ordered stages (located, routed, recalled, scored) with the fact_cid... |
| GET | `/v1/at` | GET /v1/at?lat=&lon=&band=, boring lat/lng lookup of any of the 101 materializable bands. Also accepts ?place=… |
| POST | `/v1/at` | POST /v1/at {place\|lat,lng[,band\|bands,tslot]} → multi-band at a point |
| POST | `/v1/attest` | Submit a signed attestation (JSON). FACT PLANE IS CLOSED BY DEFAULT: an attestation whose facts occupy an address (cell, band, tslot) is accepted only from t... |
| POST | `/v1/attest_cbor` | submit signed attestation (canonical CBOR) |
| POST | `/v1/attest_traced` | the device write path: submit an attestation together with the emem.os_trace.v1 execution trace that produced its facts. For an enrolled device key the gate ... |
| POST | `/v1/backfill` | materialize history in a window The preparer form: pass cells (up to 64) instead of cell to warm an area across the window under the partial-results contract... |
| POST | `/v1/band_composite` | a signed, cloud-masked median composite over a date window, as a raster-shaped field artifact (docs/plans/field-tokens.md). Reads every clear Sentinel-2 scen... |
| POST | `/v1/band_cube` | a field OVER TIME as a signed manifest (docs/plans/field-tokens.md): mints one band_raster member per target date, each an independent, resolvable emem:raste... |
| POST | `/v1/band_raster` | a field as a signed derivation (docs/plans/field-tokens.md): native-resolution Sentinel-2 window over a bbox, returned as a content-addressed canonical grid ... |
| GET | `/v1/bands` | band ontology |
| GET | `/v1/benchmark` | hand-verified evaluation items for grading an agent against the responder. Returns {items[], grader_url, _note}. Submit answers to POST /v1/benchmark/grade f... |
| POST | `/v1/benchmark/grade` | grade an agent's submission against /v1/benchmark items. Body: {answers: {<item_id>: <fact_cid or cell64>}}. Returns per-item correctness plus an aggregate s... |
| POST | `/v1/building_footprints` | Overture building footprints over a bbox, as GeoJSON polygons with height where the source carries one. The per-cell `overture.buildings.count` band answers ... |
| POST | `/v1/burn_severity` | Key & Benson dNBR burn severity: dNBR = nbr_pre − nbr_post, mapped to USGS severity classes. Supply `nbr_pre` + `nbr_post` (pin the scenes bracketing the fir... |
| GET | `/v1/capabilities` | cached upstream capability snapshot (extensions[], cuda_available, models_loaded, endpoints[].trained/experimental). 30 s background poll; agents read this t... |
| POST | `/v1/capabilities` | identical idempotent capability snapshot (accepts POST so callers that POST every /v1/* endpoint don't 405) |
| GET | `/v1/cells/{cell64}` | recall facts at a cell |
| GET | `/v1/cells/{cell64}/geojson` | cell polygon as GeoJSON |
| GET | `/v1/cells/{cell64}/info` | cell64 introspection (centroid, bbox, neighbors) |
| GET | `/v1/cells/{cell64}/recall_geojson` | cell polygon as GeoJSON Feature with every recalled fact embedded as a property, paste straight into Mapbox/Leaflet/Deck.gl |
| GET | `/v1/cells/{cell64}/scene.png` | Sentinel-2 true-colour thumbnail (256×256 PNG) |
| GET | `/v1/cells/{cell64}/scene.rgb` | Sentinel-2 true-colour thumbnail as raw 8-bit RGB pixel buffer (no PNG framing). Width/height returned via x-emem-scene-width/x-emem-scene-height headers. |
| POST | `/v1/cells_in_bbox` | enumerate the cell64s in a bounding box, paged (row-major, north row first). Pure geometry: reads no facts and signs no receipt, because the answer is a dete... |
| POST | `/v1/change_attribution` | The attribution ledger for a readout change at a cell: per-term evidence for Δz = Δ_env + Δ_sensor + Δ_geo + Δ_encoder + ε, with NO numeric split. Reports th... |
| GET | `/v1/channel/geo` | Geographic positions for the agent correspondence on /channel: which places the notes in the shared ledger are about. |
| POST | `/v1/chat/completions` | 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. |
| POST | `/v1/compare` | compare two cells |
| POST | `/v1/compare_bands` | per-band diff at one cell: scalar delta or vector cosine between band A and band B (optionally pinned to specific tslots), with optional consistency predicate |
| POST | `/v1/compare_same_doy` | compare a band at the SAME day-of-year across years. For each year it finds the signed facts bracketing the target day-of-year and linearly interpolates to i... |
| GET | `/v1/contributors` | list of contributing pubkeys + per-band fact counts |
| GET | `/v1/contributors/{pubkey_b32}` | contributor profile by pubkey |
| GET | `/v1/corpus_state_stats` | snapshot of corpus liveness: distinct_cells, distinct_bands, facts_scanned, per-band counts. Same payload that backs /v1/stream's corpus.state tick (signed).... |

…and 136 more operations. They are listed in full on the page.

## Machine-readable artifacts (8)

- **OpenAPI** — https://raw.githubusercontent.com/api-evangelist/emem-dev/refs/heads/main/openapi/emem-dev-openapi.json
- **OpenAPI** — https://emem.dev/openapi.json
- **Documentation** — https://emem.dev/agents.md
- **APIReference** — https://emem.dev/docs/api/
- **Overlay** — https://raw.githubusercontent.com/api-evangelist/emem-dev/refs/heads/main/overlays/emem-dev-openapi-overlay.yaml
- **ErrorCatalog** — https://raw.githubusercontent.com/api-evangelist/emem-dev/refs/heads/main/errors/emem-dev-problem-types.yml
- **DataModel** — https://raw.githubusercontent.com/api-evangelist/emem-dev/refs/heads/main/data-model/emem-dev-data-model.yml
- **APIsJSON** — https://raw.githubusercontent.com/api-evangelist/emem-dev/refs/heads/main/apis.yml

## Other emem APIs (2)

- [emem MCP Server](https://apis.io/apis/emem-dev/emem-mcp-server/)
- [emem A2A Agent](https://apis.io/apis/emem-dev/emem-a2a-agent/)

## Tags

Agent Memory, Geospatial, Earth Observation, Provenance

---

Profiled by [API Evangelist](https://apievangelist.com) and published on [APIs.io](https://apis.io/apis/emem-dev/emem-rest-api/). The API's provider profile, Kin Score and agent-readiness rating are at https://apis.io/providers/emem-dev/.
