MMCP v0.1 Alpha

API-Referenz

11 MCP-Tools, erreichbar über JSON-RPC 2.0 auf /mcp. Auth per Authorization: Bearer API_KEY.

Transport

Alle Aufrufe sind JSON-RPC 2.0 per POST:

POST /mcp
Content-Type: application/json
Authorization: Bearer mk_...

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "TOOL_NAME",
    "arguments": { ... }
  }
}

memory_store

Speichert Content. Fuehrt die Extraction-Pipeline aus: LLM-Extraktion → Confidence-Routing → Embedding → Verschlüsselung.

Input

FeldTypPflichtBeschreibung
contentstringjaDer zu speichernde Text
categorystringneinKategorie (z.B. "termin", "todo")
scope_typestringneinScope: "personal", "area", "org"
scope_idstringneinScope-ID
sourcestringneinHerkunft (steuert Extraction): todoist, ical, claude-code-session
source_categorystringneinIngest-Kategorie (z.B. "confluence", "rss") — wird nicht vom LLM ueberschrieben
source_batch_idstringneinBatch-ID um zusammengehoerige Memories zu gruppieren
target_tenantstringneinNur bei Super-Key: Ziel-Vault fuer Routing (Tenant-ID)
asyncbooleanneinFire-and-forget, gibt Job-ID zurueck

Output

{
  "stored": [...],          // Direkt gespeichert (Confidence ≥ 0.85)
  "drafts": [...],          // Als Draft zur Prüfung (0.4-0.84)
  "pm_matches": [...],      // Ausgeloeste Prospective-Memory-Ziele
  "conflicts": [...]        // Erkannte Konflikte
}

memory_retrieve

Sucht Memories per Hybrid-Retrieval. Drei Modi: Relevanz (Default), chronologisch, Profile.

Input

FeldTypPflichtBeschreibung
querystringbei relevanceSuchanfrage
sort_bystringnein"relevance" | "created_at" | "profiles"
sincestringneinISO 8601 Timestamp-Filter
categorystringneinKategorie-Filter
entity_typestringneinEntity-Typ-Filter (filtert ueber das entities Array)
entity_idstringneinEntity-ID-Filter (filtert ueber das entities Array)
limitnumberneinMax Ergebnisse (Default: 20)

Output

{
  "memories": [
    {
      "id": "...",
      "content": "...",
      "entities": [              // Multi-Entity Support
        { "type": "person", "id": "lisa-mueller" },
        { "type": "projekt", "id": "q3-relaunch" }
      ],
      "entity_type": "person",   // Deprecated (erster Entity)
      "entity_id": "lisa-mueller",
      ...
    }
  ],
  "semantic_profiles": [...],   // Verdichtete Entity-Profile
  "context_tokens": 1234        // Token-Verbrauch
}

Jede Memory enthaelt ein entities Array mit allen verknuepften Entitaeten ([{type, id}]). Ein Fakt kann mehrere Entitaeten haben, z.B. eine Entscheidung die mehrere Personen oder Projekte betrifft. Die Felder entity_type und entity_id sind weiterhin vorhanden (Backwards Compatibility), enthalten aber nur die erste Entitaet.

memory_draft_review

Prüft Drafts: akzeptieren, ablehnen oder bearbeiten. Die Engine lernt aus Entscheidungen (Confidence-Kalibrierung).

Input

FeldTypPflichtBeschreibung
actionstringja"accept" | "reject" | "edit" | "list"
draft_idstringbei accept/reject/editUUID des Drafts
edited_contentstringbei editKorrigierter Inhalt

memory_set_goal

Erstellt eine zukunftsgerichtete Erinnerung. Zeitbasiert (Deadline) oder eventbasiert (Trigger-Bedingung).

Input

FeldTypPflichtBeschreibung
descriptionstringjaWas erinnert werden soll
typestringja"time_based" | "event_based"
deadlinestringbei time_basedISO 8601 Deadline
trigger_conditionstringbei event_basedNatuerlichsprachliche Trigger-Bedingung

memory_briefing

Generiert ein LLM-Briefing aus aktiven Memories, Drafts und ausgeloesten Goals.

Input

FeldTypPflichtBeschreibung
scope_typestringneinScope-Filter
scope_idstringneinScope-ID-Filter

Weitere Tools

memory_store_status

Status eines async Ingest-Jobs abfragen. Input: job_id. Output: status (queued/processing/done/failed) + result.

memory_annotate

Annotation zu einem bestehenden Memory hinzufuegen. Input: memory_id, content.

memory_consolidate

Konsolidierung ausloesen: clustert episodische Fakten zu semantischen Profilen.

check_prospective

Faellige Prospective-Memory-Ziele pruefen.

manage_memory

Memories verwalten: pin/unpin/archive/update_importance.

get_status

Vault-Status: Anzahl Memories, Drafts, Profile, letzte Aktivitaet.

Dynamische Tool-Descriptions

Die Engine generiert Tool-Descriptions dynamisch aus der Domain-Config deines Vaults. Statt generischer Beschreibungen sieht das LLM die konkreten Categories, Entity-Types und verfuegbaren Vaults.

Single-Vault Key

Die Descriptions von memory_store und memory_retrieve enthalten die Categories und Entity-Types aus deiner Domain-Config. Das LLM weiss genau welche Kategorien verfuegbar sind.

Super-Key (Supervault)

Bei Super-Keys zeigt memory_store zusaetzlich ein target_tenant Enum mit allen Vaults der Gruppe und ihren Category-Beschreibungen. Das LLM routet Inhalte selbststaendig zum richtigen Vault — ohne Extra-API-Call, ohne Latenz.

Die Descriptions werden bei jedem tools/list Request frisch generiert (5-Min-Cache). Aenderungen an der Domain-Config sind automatisch sichtbar.

memory_link

Verknuepft zwei Memories mit einer typisierten Relation. Erstellt persistente Graph-Verbindungen fuer Kausalketten, Widersprueche oder thematische Links.

ParameterTypBeschreibung
source_idstringQuell-Memory ID
target_idstringZiel-Memory ID
relation_typeenumcaused_by, contradicts, relates_to
metadataobject?Optionale Begruendung

memory_replay

Zeitreise: zeigt den Wissensstand deines Vaults zu einem beliebigen Zeitpunkt. Inkludiert Fakten die spaeter archiviert wurden wenn sie zum angefragten Zeitpunkt noch aktiv waren.

ParameterTypBeschreibung
timestampstringISO 8601 Zeitpunkt (Pflichtfeld)
querystring?Optionale Suche auf zeitgefiltertem Bestand
categorystring?Kategorie-Filter
entity_typestring?Entity-Typ Filter (filtert ueber das entities Array)
limitnumber?Max Ergebnisse (Default: 50)

Response-Format identisch zu memory_retrieve. Semantic Profiles zeigen den aktuellen Stand, nicht den historischen.

memory_retrieve: Graph-Modus

Mit sort_by: 'graph' traversiert memory_retrieve den Relationen-Graph ab einer Start-Memory.

ParameterTypBeschreibung
sort_by'graph'Aktiviert Graph-Traversal
start_memory_idstringStartpunkt der Traversierung (Pflichtfeld)
relation_typesstring[]?Filter auf bestimmte Relationstypen
max_depthnumber?Traversierungstiefe 1-5 (Default: 3)

Response enthaelt zusaetzlich ein relations Array mit source_id, target_id, type, confidence, created_by und depth. Bidirektionale Traversierung fuer symmetrische Relationen (contradicts, relates_to).