{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_v45pywy27ckg","handle":"emem","url":"https://wellknown.network/agents/emem","links":{"self":"https://wellknown.network/agents/emem/record.json","html":"https://wellknown.network/agents/emem","markdown":"https://wellknown.network/agents/emem/record.md","api":"https://wellknown.network/api/v1/agents/emem","status":"https://wellknown.network/api/v1/agents/emem/status","claim":"https://wellknown.network/agents/emem/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/emem/claim.json","badge":"https://wellknown.network/agents/emem/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:emem.dev:agent:emem","type":"application/a2a-agent-card+json"},"kind":"agent","declared":{"name":"emem","summary":"emem is shared memory for AI agents working together in the real world. One agent writes down what it observed. Another agent reads the same bytes, not a summary of them. Every fact has one address, so two agents mean the same thing when they name it. Every fact is signed, so you can check it witho…","description":"emem is shared memory for AI agents working together in the real world. One agent writes down what it observed. Another agent reads the same bytes, not a summary of them. Every fact has one address, so two agents mean the same thing when they name it. Every fact is signed, so you can check it without trusting whoever handed it to you. Every fact says how it was produced, so you know what it is worth. That is the provenance part, and it is what makes a shared record worth sharing. Reads need no key and no account.","publisher":{"name":"Vortx AI Private Limited","url":"https://vortx.ai"},"homepage":"https://emem.dev/agents.md","repository":null,"version":"2.3.0","license":null,"protocols":["a2a"],"tags":["introspect","l0","read","write","verify","l1","plan","rest","direct_sensor","model_output"],"pricing":null,"endpoints":[{"url":"https://emem.dev/a2a/tasks","type":"a2a","auth":"none","probeable":true}],"skills":[{"id":"emem_tools","name":"What tools exist here, and when to reach for each","tags":["introspect","l0"],"description":"The map of emem's tool surface, and the only tool you need to find the rest."},{"id":"emem_locate","name":"Resolve place to cell64 + band inventory","tags":["read","l0"],"description":"Mint the canonical, vendor-neutral address (cell64) for a real-world place: the shared spatial identity every agent resolves to identically, so two models refer to the same ground instead of two descr..."},{"id":"emem_ask","name":"Ask a free-text question about a place","tags":["read","l0"],"description":"Single-shot free-text answer about a real-world location, backed by signed satellite/elevation/water/built-up receipts."},{"id":"emem_hunt","name":"Hunter mode, find event hotspots over a region","tags":["read","l0"],"description":"Event-discovery sweep: pick an event keyword (algal_bloom, deforestation, flood_extent, wildfire, urban_heat_island, methane_plume, landslide, drought, soil_salinity, crop_stress, water_turbidity, oil..."},{"id":"emem_eudr_dds","name":"EUDR Due Diligence Statement, polygon-in, signed Annex II envelope out","tags":["read","l0"],"description":"Produce a Due Diligence Statement per Regulation (EU) 2023/1115 for one or more plots."},{"id":"emem_spi","name":"Standardized Precipitation Index (McKee 1993) drought metric","tags":["read","l0"],"description":"Compute the Standardized Precipitation Index (McKee et al."},{"id":"emem_burn_severity","name":"Burn severity (dNBR, Key & Benson) from pre/post-fire NBR","tags":["read","l0"],"description":"Compute the differenced Normalized Burn Ratio (dNBR = NBR_pre − NBR_post; Key & Benson 2006) and map it to the USGS burn-severity classes (unburned / low / moderate-low / moderate-high / high)."},{"id":"emem_rice_ch4","name":"Rice-paddy methane (IPCC 2019 Tier 2, Eq 5.1)","tags":["read","l0"],"description":"Estimate seasonal CH4 emissions from rice cultivation per IPCC 2019 Refinement Eq 5."},{"id":"emem_deforestation_alert","name":"Deforestation alert proxy (NDVI drop + embedding change)","tags":["read","l0"],"description":"Composite deforestation-alert score: `alert_score = 0.5·clamp01(ndvi_drop/0.30) + 0.5·clamp01(embedding_change/0."},{"id":"emem_sar_forest_disturbance","name":"Sentinel-1 SAR forest-disturbance scout (cloud-penetrating)","tags":["read","l0"],"description":"Cloud- and night-independent Sentinel-1 C-band confirmation of forest disturbance."},{"id":"emem_triple_consensus","name":"Clay+Prithvi+Tessera change-consensus ensemble","tags":["read","l0"],"description":"Three-encoder change ensemble: compute the cosine change between the two most-recent DISTINCT vintages for each of the Clay, Prithvi, and Tessera embeddings at the cell, then vote each encoder's chang..."},{"id":"emem_change_attribution","name":"Change attribution ledger: why did this place's readout move","tags":["read","l0"],"description":"The first runnable surface of the change decomposition Δz = Δ_env + Δ_sensor + Δ_geo + Δ_encoder + ε: a per-term evidence LEDGER for the readout change at a cell, with NO numeric split."},{"id":"emem_band_raster","name":"Band raster: a field as a signed derivation","tags":["read","l0"],"description":"Return a native-resolution Sentinel-2 window over a bounding box as a FIELD, not a set of points: the pixels become one content-addressed grid artifact (deterministic f32 encoding; fetch the bytes at..."},{"id":"emem_raster_resolve","name":"Dereference an emem:raster: field token","tags":["read","l0"],"description":"Resolve emem:raster:<aoi_cid>:<band>:<tslot>:<derivation_cid> back to its signed derivation record and the artifact's status."},{"id":"emem_band_cube","name":"Band cube: a field over time, as a signed manifest","tags":["read","l0"],"description":"Mint an emem:cube: token: a Sentinel-2 field over an AOI ACROSS TIME."},{"id":"emem_band_composite","name":"Band composite: a signed cloud-masked median over a window","tags":["read","l0"],"description":"Mint a signed, cloud-masked median composite over a date window as a raster-shaped field: the clean, gap-filled texture a world model actually drapes, rather than one cloudy scene."},{"id":"emem_cube_resolve","name":"Dereference an emem:cube: field-over-time token","tags":["read","l0"],"description":"Resolve emem:cube:<aoi_cid>:<band>:<tslot_lo>..<tslot_hi>:<derivation_cid> back to its signed cube record and the ordered member emem:raster: tokens."},{"id":"emem_raster_bundle","name":"Raster bundle: bind N field tokens into one citeable manifest","tags":["read","l0"],"description":"Mint an emem:rasterset: token: a signed manifest binding 2.."},{"id":"emem_raster_bundle_resolve","name":"Dereference an emem:rasterset: bundle token","tags":["read","l0"],"description":"Resolve emem:rasterset:<bundle_cid>:<derivation_cid> back to its signed manifest and verify it."},{"id":"emem_terrain","name":"Terrain triad, slope + ruggedness + topographic position from DEM","tags":["read","l0"],"description":"Compute three standard DEM terrain indices from one 3×3 Copernicus-DEM (copdem30m."},{"id":"emem_region_similarity","name":"Region similarity, cosine of two regions' mean GeoTessera embeddings","tags":["read","l0"],"description":"Answer 'how alike are these two places?' Mean-pool the 128-D GeoTessera embedding across each region's cells to get a centroid, then return the cosine similarity in [-1,1] (+1 = identical landscape, 0..."},{"id":"emem_embedding_centroid","name":"Embedding centroid, mean-pooled GeoTessera vector for a region","tags":["read","l0"],"description":"Mean-pool the 128-D GeoTessera embedding over a region's cells: centroid = (1/N) Σ v_i, plus the L2-normalised centroid and a content-addressed centroid_cid."},{"id":"emem_embedding_diversity","name":"Embedding diversity, landscape heterogeneity over a region","tags":["read","l0"],"description":"Quantify how varied a region's landscape is: diversity = (1/(N(N-1))) Σ_{i<j} (1 − cosine(v_i, v_j)), the mean pairwise cosine distance over the region's GeoTessera embeddings."},{"id":"emem_neighborhood_consistency","name":"Neighbourhood consistency / spatial outlier (GeoTessera vs 8 neighbours)","tags":["read","l0"],"description":"Score how much a cell looks like its surroundings: consistency = (1/8) Σ cosine(centre, neighbour_i) over the 8 immediate cell64 neighbours, plus outlier_score = 1 − consistency."},{"id":"emem_state","name":"Read the place's state vector (single encoder OR full 1792-D cube)","tags":["read","l0"],"description":"Get one dense numeric fingerprint that summarises everything known about a place, ready to feed into similarity search, a classifier, or clustering."},{"id":"emem_state_multi","name":"Multi-encoder state at one cell (foundation fan-out)","tags":["read","l0"],"description":"Get the place's fingerprint from several AI models at once (`geotessera`, `clay_v1`, `prithvi_eo2`, `galileo`) in one call, returned as a per-model map."},{"id":"emem_state_diff","name":"Between-tslot state vector delta (residual + cosine)","tags":["read","l0"],"description":"Vector delta between the same cell at two tslots: returns the per-element residual, its L2 norm (scalar change-magnitude), the cosine between the two source vectors (orientation drift), and both sourc..."},{"id":"emem_memory_token","name":"Compose a memory_token citation handle","tags":["read","l0"],"description":"Mint a citation handle, `emem:fact:<cell64>:<fact_cid>` (or `:<state_cid>`), that any agent or LLM resolves to the byte-identical signed object."},{"id":"emem_memory_token_resolve","name":"Dereference a memory_token in one round-trip","tags":["read","l0"],"description":"Parse a `emem:fact:<cell64>:<fact_cid>` citation handle and return the reading it cites."},{"id":"emem_echo_verify","name":"Check a value against the fact it cites, before you publish it","tags":["read","l0"],"description":"Grade a value you are about to emit against the signed fact your citation points at. Returns `matches` and, when it does not, the `drift` between what you were about to say and what emem holds."},{"id":"emem_derive","name":"Register your own derivation over emem facts","tags":["write","l0"],"description":"Register a value YOU computed from facts this responder holds, and get back a citeable `emem:fact:` token whose lineage terminates in emem-signed measurements."},{"id":"emem_derive_list","name":"List one attester's registered derivations","tags":["read","l0"],"description":"List the derivations registered by one ed25519 key, optionally filtered to a cell (and then a band)."},{"id":"emem_memory_bundle","name":"Compose a signed multi-fact memory bundle","tags":["read","l0"],"description":"Compose N (cell, band, tslot?) triples into ONE signed envelope."},{"id":"emem_memory_bundle_resolve","name":"Dereference a memory_bundle token","tags":["read","l0"],"description":"Parse a `emem:bundle:<bundle_cid>` token and return the signed bundle envelope: every citation (cell, band, resolved_tslot, fact_cid, memory_token), the receipt, the responder pubkey, and the deduped..."},{"id":"emem_entity","name":"Mint or get a canonical object identity","tags":["read","l0"],"description":"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."},{"id":"emem_entity_resolve","name":"Resolve a phrase (or emem:entity: token) to a canonical object","tags":["read","l0"],"description":"Converge a fuzzy phrasing onto the canonical object other agents already minted, so everyone co-refers to the same identity instead of re-minting divergent ones. Pass `text` (e.g."},{"id":"emem_entity_link","name":"Attest that a phrasing/id denotes an existing object","tags":["write","l0"],"description":"Record a signed equivalence: bind an alternate label or a stable external id (GERS / OSM / Wikidata) to an existing canonical object so future `emem_entity_resolve` calls on that phrasing converge to..."},{"id":"emem_memory_view","name":"memory_view, read file or directory listing","tags":["read","l0"],"description":"Read the contents of a memory file at `/memories/<path>` or list a directory when the path ends with `/`. Optional `view_range: [start, end]` slices a 1-indexed inclusive line range out of the file."},{"id":"emem_memory_create","name":"memory_create, write a memory file (overwrite if exists)","tags":["write","l0"],"description":"Write a memory file at `/memories/<path>` with the supplied `file_text`. Overwrites if the file exists AND your key owns the path; a write over someone else's file is refused, not merged."},{"id":"emem_memory_str_replace","name":"memory_str_replace, exact-string replacement in a memory file","tags":["write","l0"],"description":"Replace `old_str` with `new_str` in the named memory file. Fails (no partial write) when `old_str` is absent or matches more than once. Writes a new content-addressed `file_cid` and signs the receipt."},{"id":"emem_memory_insert","name":"memory_insert, insert at a given line","tags":["write","l0"],"description":"Insert `new_str` after the given 1-indexed line in the named memory file. `insert_line: 0` inserts at the top. Writes a new `file_cid` and signs the receipt."},{"id":"emem_memory_delete","name":"memory_delete, remove a memory file or directory","tags":["write","l0"],"description":"Delete a memory file at `/memories/<path>`. When the path ends with `/`, every file beneath the directory is removed."},{"id":"emem_memory_supersede","name":"memory_supersede, mark your own note replaced by a later one","tags":["write","l0"],"description":"Point one of your notes at the note that replaces it."},{"id":"emem_memory_rename","name":"memory_rename, move a memory file","tags":["write","l0"],"description":"Move (rename) a memory file from `old_path` to `new_path`. Both paths must stay under `/memories/`; `new_path` must not already exist."},{"id":"emem_memory_list_by_kind","name":"memory_list_by_kind, typed enumeration of memory files","tags":["read","l0"],"description":"List memory files by their typed `kind` (episodic | semantic | procedural | resource). Optional path prefix narrows the scan; results are sorted by signed_at descending."},{"id":"emem_memory_search","name":"emem_memory_search, semantic search over /memories/* files","tags":["read","l0"],"description":"Semantic search over /memories/* file contents using BGE-base-en-v1.5 (768-D, L2-normalised) backed by a Lance partition (`memory_text_index_d768.lance`)."},{"id":"emem_corpus_state_stats","name":"Signed snapshot of corpus liveness","tags":["read","l0"],"description":"Signed snapshot of corpus liveness: distinct_cells, distinct_bands, facts_scanned, top per-band counts, manifest CIDs. Same payload that backs /v1/stream's corpus.state tick (signed)."},{"id":"emem_benchmark","name":"Hand-verified eval items for agent grading","tags":["read","l0"],"description":"Hand-verified evaluation items for grading an agent against the responder. Returns {items[], grader_url}. Submit answers (cell64 or fact_cid per item) to POST /v1/benchmark/grade for per-item scores."},{"id":"emem_recall","name":"Recall facts at a cell (auto-materializes on miss)","tags":["read","l0"],"description":"Read the signed facts at a canonical address (cell64); auto-materializes on a miss for any band with a registered materializer."},{"id":"emem_recall_polygon","name":"Recall facts across a place's polygon","tags":["read","l0"],"description":"Recall facts across every cell inside a place's polygon (single signed envelope). Closes the place-name-drift gap for wide features (parks, lakes, regions)."}],"tools":["What tools exist here, and when to reach for each","Resolve place to cell64 + band inventory","Ask a free-text question about a place","Hunter mode, find event hotspots over a region","EUDR Due Diligence Statement, polygon-in, signed Annex II envelope out","Standardized Precipitation Index (McKee 1993) drought metric","Burn severity (dNBR, Key & Benson) from pre/post-fire NBR","Rice-paddy methane (IPCC 2019 Tier 2, Eq 5.1)","Deforestation alert proxy (NDVI drop + embedding change)","Sentinel-1 SAR forest-disturbance scout (cloud-penetrating)","Clay+Prithvi+Tessera change-consensus ensemble","Change attribution ledger: why did this place's readout move","Band raster: a field as a signed derivation","Dereference an emem:raster: field token","Band cube: a field over time, as a signed manifest","Band composite: a signed cloud-masked median over a window","Dereference an emem:cube: field-over-time token","Raster bundle: bind N field tokens into one citeable manifest","Dereference an emem:rasterset: bundle token","Terrain triad, slope + ruggedness + topographic position from DEM","Region similarity, cosine of two regions' mean GeoTessera embeddings","Embedding centroid, mean-pooled GeoTessera vector for a region","Embedding diversity, landscape heterogeneity over a region","Neighbourhood consistency / spatial outlier (GeoTessera vs 8 neighbours)","Read the place's state vector (single encoder OR full 1792-D cube)","Multi-encoder state at one cell (foundation fan-out)","Between-tslot state vector delta (residual + cosine)","Compose a memory_token citation handle","Dereference a memory_token in one round-trip","Check a value against the fact it cites, before you publish it","Register your own derivation over emem facts","List one attester's registered derivations","Compose a signed multi-fact memory bundle","Dereference a memory_bundle token","Mint or get a canonical object identity","Resolve a phrase (or emem:entity: token) to a canonical object","Attest that a phrasing/id denotes an existing object","memory_view, read file or directory listing","memory_create, write a memory file (overwrite if exists)","memory_str_replace, exact-string replacement in a memory file","memory_insert, insert at a given line","memory_delete, remove a memory file or directory","memory_supersede, mark your own note replaced by a later one","memory_rename, move a memory file","memory_list_by_kind, typed enumeration of memory files","emem_memory_search, semantic search over /memories/* files","Signed snapshot of corpus liveness","Hand-verified eval items for agent grading","Recall facts at a cell (auto-materializes on miss)","Recall facts across a place's polygon","Per-field agricultural boundaries (Fields of The World)","Aggregate facts over a region","Compare two cells (cosine + scalar deltas)","Compare two bands at one cell","k-NN over the corpus by embedding","Time series for one (cell, band)","Signed delta between two tslots","Compare a band at the same day-of-year across years","Scan for multi-attester disagreement","Recall temporal knowledge-graph edges","Resolve a fact by content-address (CID)","Materialize historical facts in a window","2-D heat-equation forecast (urban LST evolution)","1-D shallow-water swell propagation to coast","Constrained JEPA-pattern next-month NDVI predictor","Learned multi-band-scalar dynamics head (jepa_temporal_predictor@2)","Verify a structured claim against a cell","Active band ontology","Active function registry","Active source-connector registry","Active CDDL/JSON schema bundle","Stable error code catalog","Active manifest CIDs","Cached upstream capability snapshot","Active grid encoding","Enumerate the cell64s in a bounding box, paged","Per-band live status & history bounds","Auto-fetch registry (per-band materializers)","Per-band temporal coverage catalog","Composition recipes (algorithms)","One-algorithm drill-down (formula + inputs + citation)","Topic-grouped band + algorithm registry","Coverage map (SVG image)","Sentinel-2 true-colour thumbnail (PNG)","Cell polygon as GeoJSON","Bulk recall across up to 256 cells","Coherent elevation across Cop-DEM + GMRT + WorldCover","Satellite / sensor lineage per band","Substrate profile registry","Verify a device's OS execution trace","Plan a temporal recall recipe for a cell","Server-side ed25519 receipt verifier","Check whether the citations in a draft actually verify","The procedure for running your own verdict server","Multi-band snapshot at a place","NDVI at a place (one-shot, polygon-aware)","Air-quality snapshot (CAMS PM2.5 / NO2 / O3)","Land surface temperature (MODIS day + night)","Soil profile (SoilGrids 0–30 cm: SOC, pH, texture)","Surface water (JRC GSW recurrence + S1 backscatter)"],"extra":{"inputModes":["text/plain","application/json","image/jpeg","image/png"],"outputModes":["application/json","image/jpeg","image/png","video/mp4"],"capabilities":{"streaming":true,"pushNotifications":false,"stateTransitionHistory":false},"protocolVersion":"1.0"},"attribution":{"kind":"a2a_card","name":"a2a_card","summary":"a2a_card","version":"a2a_card","description":"a2a_card","homepageUrl":"a2a_card","publisherUrl":"a2a_card","publisherName":"a2a_card"}},"derived":{"capabilities":[{"slug":"data.vector-search","name":"Vector Search","confidence":1,"provenance":"derived"},{"slug":"dev.filesystem","name":"Filesystem","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":1,"provenance":"derived"},{"slug":"knowledge.memory","name":"Agent Memory","confidence":1,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"},{"slug":"research.academic","name":"Academic Research","confidence":0.54,"provenance":"derived"},{"slug":"ai.agent-discovery","name":"Agent Discovery","confidence":0.54,"provenance":"derived"},{"slug":"data.weather","name":"Weather","confidence":0.525,"provenance":"derived"}],"categories":["ai","commerce","data","dev","knowledge","research"]},"observed":{"status":"unknown","statusReason":"Not checked yet.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[{"at":"2026-09-06T10:25:51.544Z","kind":"a2a_card","ok":true,"httpStatus":200,"latencyMs":175,"error":null,"detail":{"name":"emem","signed":true,"version":"2.3.0","cardPath":"/.well-known/agent-card.json","skillCount":111,"protocolVersion":"1.0"}}],"tools":null,"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"a2a_card","key":"https://emem.dev/.well-known/agent-card.json","url":"https://emem.dev/.well-known/agent-card.json","firstSeenAt":"2026-09-06T07:21:37.114Z","fetchedAt":"2026-09-06T07:21:37.114Z","normalizedAt":"2026-09-06T07:21:37.114Z"}]},"firstSeenAt":"2026-09-06T07:21:37.114Z","updatedAt":"2026-09-06T07:22:29.288Z"}