{"domain":"emem.dev","count":1,"changes":[{"captured_at":"2026-05-18T13:08:04","card_hash":"16c7abd3144e9e8520f46d35aac51d2ec7b996b3a8320bdfd093fdfc208d5683","previous_card_hash":null,"diff":{"skills_added":[{"id":"emem_air","name":"Air-quality snapshot (CAMS PM2.5 / NO2 / O3)","description":"Recall Copernicus CAMS air-quality bands at a place: PM2.5 + NO2 + O3. Composes locate → recall → aggregate.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_algorithms","name":"Composition recipes (algorithms)","description":"Content-addressed dictionary of composition recipes — formulas that fuse attested band facts (and embeddings) into derived scores, classifications, and similarity metrics.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_ask","name":"Ask a free-text question about a place","description":"Single-shot free-text answer about a real-world location, backed by signed satellite/elevation/water/built-up receipts. Forwards a place mention plus a question; runs the locate → recall → algorithm chain server-side; returns one packaged envelope.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_at","name":"Multi-band snapshot at a place","description":"One-shot multi-band recall at a place (or lat/lng). Defaults to emem's standard at-a-glance band set; pass `band` / `bands` to override. Polygon-resolved places stay at the centroid by default (`n_cells: 1`) to keep multi-band calls cheap — pass `n_cells: 2..=64` to fan out.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_backfill","name":"Materialize historical facts in a window","description":"Materialize and sign every per-tslot fact for one (cell, band) inside a [start_unix, end_unix] window. Returns a signed list of (tslot, fact_cid, status) for each step. Slow but possible — one upstream fetch per tslot, capped by `max_facts`.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_bands","name":"Active band ontology","description":"Active band ontology (offsets, dims, tempo, privacy).","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_benchmark","name":"Hand-verified eval items for agent grading","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. Items today: elevation recall, NDVI, find_similar neighbours.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_capabilities","name":"Cached upstream capability snapshot","description":"Live capability snapshot of the responder's GPU sidecar — extensions[] (e.g. gpu, clay-v1.5, prithvi-eo2), cuda_available, models_loaded[], healthy, last_polled_unix_s. Refreshed every 30 s by a background poller; reads are constant-time.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_cell_geojson","name":"Cell polygon as GeoJSON","description":"Cell polygon as a native MCP EmbeddedResource (mimeType application/geo+json). Properties carry centre lat/lng, bbox, approx size in metres, and the 8-cell neighbourhood — drop straight into Mapbox / Leaflet / Deck.gl / QGIS without a GIS pipeline.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_cell_scene_rgb","name":"Sentinel-2 true-colour thumbnail (PNG)","description":"True-colour Sentinel-2 L2A RGB thumbnail centred on a cell. PNG returned as a native MCP ImageContent block (mimeType image/png). Pure-Rust pipeline: STAC search + HTTP-Range COG reads + 2-98 percentile stretch + PNG encode.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_compare","name":"Compare two cells (cosine + scalar deltas)","description":"Compare two cells: cosine similarity over shared vector bands + per-band scalar deltas.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_compare_bands","name":"Compare two bands at one cell","description":"Compare two bands at the same cell. Scalar pair → metric=delta, value=b-a. Vector pair (equal dim) → metric=cosine + per-dim delta. Returns a signed receipt naming both source fact CIDs.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_corpus_state_stats","name":"Signed snapshot of corpus liveness","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). Use this for a one-shot poll instead of holding an SSE connection.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_coverage_map","name":"Coverage map (SVG image)","description":"Live SVG render of the responder's corpus density, returned as a proper MCP EmbeddedResource content block (image/svg+xml) — multimodal MCP agents can render it natively.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_coverage_matrix","name":"Per-band live status & history bounds","description":"Per-band live status — what data is alive AND auto-materializable, with history bounds, tempo cadence, and the responder pubkey that signs the band.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_data_availability","name":"Per-band temporal coverage catalog","description":"Temporal catalog: for every materializable band the upstream-of-record window the data genuinely covers, the temporal `kind` (static | annual_snapshot | annual_stack | time_series | now_only | per_release), tempo seconds, upstream wire path, and whether `emem_backfill` is meaningful.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_diff","name":"Signed delta between two tslots","description":"Compute a DerivativeFact (delta) between a band's values at two tslots.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_elevation","name":"Coherent elevation across Cop-DEM + GMRT + WorldCover","description":"One-shot elevation answer that fuses Cop-DEM 30 m (land), GMRT (ocean topobathy), and ESA WorldCover (water mask) into a single signed scalar at a place or coordinate. Returns `elevation_m`, the source actually used, and a `coherence_note` when the two surfaces disagree at the coast.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_errors","name":"Stable error code catalog","description":"Stable error code catalog.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_eudr_dds","name":"EUDR Due Diligence Statement — polygon-in, signed Annex II envelope out","description":"Produce a Due Diligence Statement per Regulation (EU) 2023/1115 for one or more plots. Each plot carries operator-supplied geometry (GeoJSON Polygon for >4 ha, Point for ≤4 ha non-cattle per Article 2(28)), country of production (ISO3), Combined Nomenclature code (HS-6+), and quantity in kg. The endpoint applies the regulation's 10 % canopy / 0.5 ha / 5 m height forest definition (Article 2(4)) using the EU Commission's expected JRC GFC2020 V3 baseline plus Hansen GFC v1.12 loss-year confirmation; Sims et al. 2025 driver attribution and RADD SAR fallback layer on when those connectors are wired (Absence today). The response is an Annex II-shaped envelope with per-plot verdict (pass/fail/not_in_scope/indeterminate/fail_below_de_minimis), failing-cell fraction, and signed fact CIDs for every per-cell verdict — operators quote them in the company's Article 12 record. Article 9(1)(b) legality (land tenure, FPIC, country-of-origin laws) is structurally out of EO scope; the response carries an explicit `legality_disclaimer` for that reason.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_explain_algorithm","name":"One-algorithm drill-down (formula + inputs + citation)","description":"Per-key drill-down on a single composition recipe — full body (kind, inputs, formula, output, citation, references) for ONE algorithm key. Companion to `emem_algorithms` (which is the catalog).","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_fetch","name":"Resolve a fact by content-address (CID)","description":"Fetch a fact by its content-address (CID). Returns the full signed Primary or Absence fact — the same body served by REST `/v1/facts/{cid}`. Closes the citation loop: any fact_cid surfaced by recall, materialize, attest, or verify can be re-resolved by another agent without REST.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_field_boundaries","name":"Per-field agricultural boundaries (Fields of The World)","description":"Per-field agricultural-boundary polygons from the Fields of The World global product (~3.17B fields, 241 countries, 10 m resolution, CC-BY-4.0). Returns a GeoJSON FeatureCollection with the polygon geometries, FIBOA-compatible properties, and a planar `area_m2` per field — plus provenance (source CID, provider URL, license, attribution).","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_find_similar","name":"k-NN over the corpus by embedding","description":"k-NN over the corpus by cell embedding or inline vector.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_fleet","name":"Satellite / sensor lineage per band","description":"Per-band satellite-and-sensor fleet inventory — names the upstream platform (e.g. Sentinel-2A/B, MODIS Aqua/Terra, Landsat-8/9), revisit cadence, native resolution, and license for every materialized band. Lets an agent attribute imagery products correctly and pick the right band when revisit cadence matters.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_forest","name":"Forest signals (Hansen GFC + ESA WorldCover)","description":"Recall forest signals at a place: Hansen Global Forest Change (tree cover 2000 baseline + year-of-loss) + ESA WorldCover 2021 land class.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_functions","name":"Active function registry","description":"Active function registry (derivation recipes).","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_grid_info","name":"Active grid encoding","description":"Active grid encoding: cell64 ground resolution, lat/lng axis sizes, DGGS lineage.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_heat_solve","name":"2-D heat-equation forecast (urban LST evolution)","description":"Forward-step 2-D explicit finite-difference solver for the heat equation ∂u/∂t = α∇²u over a 3×3 cell stencil centred on `cell`. Reads `modis.lst_day_8day` (Land Surface Temperature) at the centre and 8 cell64 neighbours, integrates N hours ahead under a CFL-stable timestep, returns a signed forecast. Real PDE rollout — not a decay-scoring heuristic.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_hunt","name":"Hunter mode — find event hotspots over a region","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_slick) plus a region (free-text name or polygon_bbox). The responder geocodes the region, fans out across up to 32 sampled cells, recalls each event's primary scalar input band, and returns the top 8 hotspots ranked by that scalar — each carrying its cell64, lat/lng, the recalled value, a fact_cid for citation, and a scene.png URL. Bypass for free-text input is `emem_ask` (the classifier in /v1/ask routes \"find X in Y\" questions to the same hunter path).","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_intent","name":"Intent-routed planner","description":"Submit a typed Intent; receive a plan or executed result.","tags":["plan","L0"],"inputModes":null,"outputModes":null},{"id":"emem_jepa_predict","name":"Constrained JEPA-pattern next-month NDVI predictor","description":"Predict next-month NDVI at a cell using a constrained JEPA-pattern AR(2) seasonal predictor. Reads up to 24 past months of `indices.ndvi`, fits a closed-form predictor `y_{t+1} = α·(lag-12 NDVI or recent mean) + β·(last + slope) + γ·recent_mean`, returns the prediction clamped to NDVI's physical range. Coefficients (α=0.6, β=0.3, γ=0.1) are NOT learned — they're fixed from the agricultural-NDVI literature. v2 (future) will train an actual encoder + predictor on the geotessera embedding pool.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_jepa_predict_v2","name":"Learned dynamics head over Tessera embeddings (jepa_temporal_predictor@2)","description":"Predict the next-vintage 128-D Tessera embedding at a cell using a small learned dynamics MLP. Reads the K=3 most-recent attested `geotessera.YYYY` vintages, runs them through an ONNX dynamics head (~200k params, CPU-fast), returns the predicted next-year embedding. The receipt's `model` block carries `model_id`, `version`, `blake2b_hex` (model_cid), training/validation provenance, and `honesty_warnings` flagging `untrained_baseline` when the artifact is the zero-init sentinel. Distinct from v1 (`emem_jepa_predict`) — v1 returns an NDVI scalar via closed-form coefficients; v2 returns a 128-D embedding from a learned model.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_locate","name":"Resolve place to cell64 + band inventory","description":"Resolves a place mention (free-text name, address, or lat/lng) to the protocol's cell64 identifier, and returns the topic-grouped inventory of bands and algorithms available at that location.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_lst","name":"Land surface temperature (MODIS day + night)","description":"Recall MODIS land surface temperature day-8day + night-8day composites at a place. 1 km native, 8-day composite.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_manifests","name":"Active manifest CIDs","description":"Active manifest CIDs (bands / functions / sources / schema).","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_materializers","name":"Auto-fetch registry (per-band materializers)","description":"Auto-fetch registry: which bands the responder will materialize on a recall miss, the upstream provider, license, value shape, and history bounds.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_memory_token","name":"Compose a memory_token citation handle","description":"Compose a `memt:<cell64>:<fact_cid>` (or `memt:<cell64>:<state_cid>`) citation handle. Validates both components are non-empty and do not contain the outer separator `:`.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_memory_token_resolve","name":"Dereference a memory_token in one round-trip","description":"Parse a `memt:<cell64>:<fact_cid>` citation handle and return the signed fact body the cid binds. Saves the agent from string-splitting the token and chaining `GET /v1/facts/<cid>` manually.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_ndvi","name":"NDVI at a place (one-shot, polygon-aware)","description":"Recall Sentinel-2 NDVI (indices.ndvi, 10 m native) at a point or place. Composes locate → cell64 → recall in one call; auto-materializes on miss.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_query_region","name":"Aggregate facts over a region","description":"Query facts over a region (single cell or list of cells), optionally aggregated per band.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_recall","name":"Recall facts at a cell (auto-materializes on miss)","description":"Recall facts about a cell — auto-materializes on miss for any band with a registered materializer.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_recall_many","name":"Bulk recall across up to 256 cells","description":"Recall facts across a list of up to 256 cell64 strings in one signed envelope. Server fans out per-cell recalls in parallel, then aggregates the response. Auto-materializes any cell with a missing fact whose band has a registered materializer — same contract as emem_recall.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_recall_polygon","name":"Recall facts across a place's polygon","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).","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_schema","name":"Active CDDL/JSON schema bundle","description":"Active CDDL/JSON schema bundle by CID.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_soil","name":"Soil profile (SoilGrids 0–30 cm: SOC, pH, texture)","description":"Recall SoilGrids 250 m profile at a place: SOC, pH, clay/sand/silt fractions, bulk density, nitrogen — all at 0–30 cm depth.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_sources","name":"Active source-connector registry","description":"Active source-connector registry (URL templates, providers, licenses).","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_state","name":"Read the place's state vector (single encoder OR full 1792-D cube)","description":"Dense state vector for a place. Two views: `encoder` (single foundation embedding at its native dim — 128-D Tessera, 1024-D Clay, 1024-D Prithvi) and `cube` (the full 1792-D voxel concatenated across every wired band, with per-band coverage manifest and full-fidelity extras for any encoder whose native dim exceeds its cube slot).","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_state_diff","name":"Between-tslot state vector delta (residual + cosine)","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 source fact CIDs so the agent can quote both attestations as evidence.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_state_multi","name":"Multi-encoder state at one cell (foundation fan-out)","description":"Fans out across every wired foundation-embedding encoder (`geotessera`, `clay_v1`, `prithvi_eo2`) for one cell and returns a structured per-encoder state map. Each encoder is attempted independently; encoders that fail at this cell surface under `missing` with a typed reason instead of killing the request.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_temporal_route","name":"Plan a temporal recall recipe for a cell","description":"Walk the algorithm registry's `temporal_recipe` blocks against a cell + (optional) intent, and emit a concrete plan: which bands to recall at which lookback windows, with `purpose` tags. Useful before a multi-band emem_recall when the question is time-shaped (flood window, growing season, change year).","tags":["plan","L0"],"inputModes":null,"outputModes":null},{"id":"emem_topics","name":"Topic-grouped band + algorithm registry","description":"Topic-grouped registry of every band and algorithm at this responder, plus visual surfaces and the `declared_but_no_materializer_at_this_responder` block (cube slots reserved without a live connector). Single source of truth shared with `/v1/locate`'s `data_at_this_cell` block.","tags":["introspect","L0"],"inputModes":null,"outputModes":null},{"id":"emem_trajectory","name":"Time series for one (cell, band)","description":"Time series for one (cell, band) over an inclusive [start, end] tslot window. Returns only what's already attested — does NOT trigger materialization. For historical backfill use `emem_backfill`.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_verify","name":"Verify a structured claim against a cell","description":"Verify a structured claim against a cell's facts. Returns verdict + evidence CIDs + signed receipt.","tags":["verify","L1"],"inputModes":null,"outputModes":null},{"id":"emem_verify_receipt","name":"Server-side ed25519 receipt verifier","description":"Verify a signed receipt envelope server-side: recomputes the canonical preimage (`request_id | served_at | primitive | cells, | fact_cids,`), runs ed25519 over the embedded pubkey + signature, and returns `{valid, reason, pubkey_b32}`. Use when the in-browser /verify path is blocked (CDN offline, agent runtime has no crypto) or when you want a server-side audit of a third-party receipt.","tags":["verify","L1"],"inputModes":null,"outputModes":null},{"id":"emem_water","name":"Surface water (JRC GSW recurrence + S1 backscatter)","description":"Recall surface-water signals at a place: JRC Global Surface Water recurrence (1984–2021) + Sentinel-1 SAR backscatter (current). Pair detects standing water through clouds.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_wave_solve","name":"1-D shallow-water swell propagation to coast","description":"Forward-step 1-D explicit finite-difference solver for the shallow-water wave equation ∂²u/∂t² = c²∂²u/∂x² with c² = g·h, where depth h comes from `gmrt.topobathy_mean` along the seaward gradient. Models how an offshore swell of height H_s and period T propagates toward `coastal_cell`. Returns arrival height + time + depth + phase-speed profiles, all under a CFL-stable timestep.","tags":["read","L0"],"inputModes":null,"outputModes":null},{"id":"emem_weather","name":"Current weather snapshot (temperature, cloud, precip, wind)","description":"Recall the standard met.no/CAMS weather bundle at a place: 2 m temperature + total cloud cover + precipitation + 10 m wind speed.","tags":["read","L0"],"inputModes":null,"outputModes":null}],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"name","before":null,"after":"emem"},{"field":"description","before":null,"after":"Agent-native, content-addressed, ed25519-signed Earth memory protocol. Recall any place on Earth (cell × band × tslot) and get back a signed receipt with a content address you can cite."},{"field":"version","before":null,"after":"0.0.6"},{"field":"protocolVersion","before":null,"after":"0.2"},{"field":"url","before":null,"after":"https://emem.dev/mcp"},{"field":"documentationUrl","before":null,"after":"https://emem.dev/agents.md"},{"field":"iconUrl","before":null,"after":"https://emem.dev/favicon.svg"},{"field":"preferredTransport","before":null,"after":"HTTP+JSON"}],"other_changed":true,"is_empty":false,"human_summary":"added 58 skills · name ∅ → emem · description ∅ → Agent-native, content-addressed, ed25519 · version ∅ → 0.0.6 · protocolVersion ∅ → 0.2 · url ∅ → https://emem.dev/mcp · documentationUrl ∅ → https://emem.dev/agents.md · iconUrl ∅ → https://emem.dev/favicon.svg · preferredTransport ∅ → HTTP+JSON"}}]}