MCP tools reference
All six tools are exposed by the MCP server and are also available in-process via
the VerifiableMemory adapter (same names, same semantics). Entity names are
free-form strings; a convention of type:id (e.g. account:admin, drone:d1)
is recommended because the reasoning layer infers structural types from the name
prefix.
remember
Section titled “remember”Store one observation — a hyperedge linking members at a point in time. Writes
a base fact with provenance; never a rule or a conclusion.
| Param | Type | Default | Meaning |
|---|---|---|---|
members | string[] | — | Entity names to link (required, non-empty) |
event_ts | int | null | now | Epoch seconds for the event |
weight | float | 1.0 | Strength of the relationship |
formation | string | "" | Relationship label (engine metadata) |
// → returns{ "stored": true, "table": "MEMORY", "event_ts": 1700000000, "formation": "LOGIN", "weight": 1.0, "members": ["account:admin", "host:db01"], "member_ids": [1, 2], "source": "agent"}recall
Section titled “recall”Deterministically retrieve the most relevant remembered hyperedges for a
natural-language query (entities and a time window are parsed out of it). No
LLM.
| Param | Type | Default | Meaning |
|---|---|---|---|
query | string | "" | Natural-language query (entities + time parsed out) |
top_k | int | 20 | Max edges to return |
// → returns{ "count": 2, "edges": [ { "edge_idx": 0, "member_ids": [1, 2], "hedge_tag": "HEDGE-0", "timestamp": 1700000000, ... } ] }Each edge carries a hedge_tag (HEDGE-N) — the citation tag used by prove
and verify.
reason
Section titled “reason”Run LLM-free stratified forward-chaining over the trusted rule store on the edges
relevant to query. Returns derived conclusions with confidence and the rule
that produced each.
| Param | Type | Default |
|---|---|---|
query | string | "" |
top_k | int | 40 |
// → returns{ "derived": [ {"fact": "coordinated_threat(0)", "pred": "coordinated_threat", "args": [0], "confidence": 0.9, "rule_id": "rule:coordinated_threat"} ], "rules_fired": ["rule:coordinated_threat"], "iterations": 2, "timed_out": false, "edges_considered": 3}Reason, then return a proof tree for each conclusion (optionally only those
with predicate goal_pred). Proof leaves bind back to the supporting hyperedges,
so the host can verify every claim.
| Param | Type | Default |
|---|---|---|
query | string | "" |
goal_pred | string | null | null |
top_k | int | 40 |
// → returns{ "count": 1, "derived_count": 1, "edges_considered": 3, "proofs": [ {"proof_id": "proof-0", "status": "proved", "confidence": 0.9, "nodes": [ {"kind": "evidence", "hedge_tag": "HEDGE-0", ...}, {"kind": "conclusion", "rule_tag": "RULE-0", "step_tag": "STEP-1", ...} ], "edges": [...]} ]}verify
Section titled “verify”Gate the host’s own generated answer against verifiable memory — the
hallucination firewall. Reasons + proves, assembles the allowed citation tags,
then strips any factual sentence that doesn’t cite one. With require_proof it
abstains when nothing is proved.
| Param | Type | Default | Meaning |
|---|---|---|---|
answer | string | — | The host-generated answer to gate (required) |
query | string | "" | Scope for reasoning/proof |
require_proof | bool | false | Abstain entirely if nothing was proved |
goal_pred | string | null | null | Restrict proofs to this predicate |
top_k | int | 40 | Edges considered |
// → returns{ "outcome": "supported", // supported | stripped | abstained "abstained": false, "coverage": 1.0, // supported / factual sentences "supported_count": 1, "stripped_count": 0, "stripped": [], "answer": "The two drones converged into a coordinated threat [HEDGE-0].", "allowed_tags": ["HEDGE-0", "RULE-0", "STEP-1"], "proved": true, "derived_count": 1}The host should surface answer (the sanitized text) and can use coverage /
outcome to decide whether to show it, ask for more evidence, or abstain.
detect
Section titled “detect”Scan memory for structural and temporal patterns and return findings plus a risk score.
| Param | Type | Default | Meaning |
|---|---|---|---|
full_scan | bool | false | Add the heavier lateral-movement / beaconing detectors |
// → returns{ "findings": [ {"pattern": "hub", "score": 0.8, "nodes": [...]} ], "summary": {"risk_score": 0.6, ...} }The fast pass covers hubs, bursts, dense clusters, fan-out, and spectral
anomalies; full_scan: true adds the more expensive detectors.