These contracts describe the stable response shapes that MCP clients should expect. Fields may gain additive metadata, but existing keys should not be removed without updating tests and changelog.
gwt_store(content, memory_type="semantic", tags?, link_to?)
id, memory_type, activation_state, linked_to, tags,
statuserrorgwt_set_goal(description, keywords?, priority=1.0)
goal_id, description, priority, statusgwt_broadcast()
gwt_compete(n_slots?)
winners, would_evict, all_scores, reason,
reason_breakdowngwt_query(query, k=5, memory_type?, admit=false)
id, content, memory_type, activation_state,
activation_level, linked_ids, tags, admittederror, optional supported_memory_typesgwt_attend(question, keywords?, k=5, passes=1, planner="auto", admit=true)
question, planner, supported_planners, context_count,
passes_requested, passes_completed, admit, evidence_plan,
tool_call_count, admitted_ids, broadcast, workspace, traceerror, optional supported_plannersgwt_resolve(question, planner="auto", k=50)
question, planner, context_count, evidence_planerror, optional supported_plannersgwt_collection_query(operation, field?, value?, metric?, k=5, group_field?, group_a?, group_b?)
operation, answer, matched_count, matched_records,
supporting_evidence, metadatacount, filter, top_k, average, sum,
distinct, min, max, compareerror, optional supported_operationsgwt_trace_explain()
status, question, planner, strategy, answer,
pass_count, tool_call_count, phases, broadcast_bus,
explanation, tracestatus, messagegwt_bus_inspect()
status, broadcast_bus, summarysummary includes proposal, accepted, inhibited, and subscriber status
counts from the latest cycle-level bus read model, plus inhibited reason
counts and proposal grouping data when a bus result exists.gwt_memory_profile()
status, namespace, data_dir, embedding,
persisted_item_count, runtime_index_count, structured_record_count,
structured_fields, counts_by_type, counts_by_source, file_sizes,
restored_runtime_items, cycle_stats, retention_policygwt_readiness_check()
status, checks, namespace, embedding, counts,
broadcast_bus, file_sizes, restored_runtime_itemsgwt_backup_memory(memory_type?, tag?)
status, format, namespace, file_sizes,
item_count, jsonlgwt-memory-backup-v1; backup payload is JSONL plus namespace
metadata, not a binary archive.gwt_export_memory(memory_type?, tag?)
status, format, item_count, filters, jsonlgwt-memory-jsonl-v1; embeddings are intentionally omitted and
rebuilt during import.error, optional supported_memory_typesgwt_import_memory(jsonl, default_memory_type="semantic", tags?, admit=false, dedupe=true)
status, imported_count, imported_ids, error_count,
errors, admit, dedupe, skipped_duplicate_count, skipped_duplicateserror, optional supported_memory_typesgwt_restore_memory(jsonl, mode="merge", confirm="", admit=false)
merge, replace.confirm="RESTORE_REPLACE", deletes existing
persisted memory through IngestionPort, returns a JSONL backup, then
imports the supplied JSONL.gwt_compact_working_memory(max_items=20, dry_run=true, confirm="")
status, max_items, keep_count, compact_count,
candidate_ids, backupconfirm="COMPACT_WORKING", creates one
semantic summary item, deletes compacted working records through
IngestionPort, and returns the JSONL backup.gwt_reset(scope="runtime", confirm="")
runtime, workspace, persistent.confirm="RESET_RUNTIME" and clears only in-process
structured read models.confirm="RESET_WORKSPACE" and evicts current
workspace items through CyclePort.confirm="RESET_PERSISTENT", deletes memory items
through IngestionPort, clears the runtime read model, and returns a JSONL
backup in the response.gwt_evict(item_id)
CyclePort.evict_workspace_item; payload is cycle-defined.gwt_link(source_id, target_id)
CyclePort.link_items; payload is cycle-defined.gwt_inspect(target="workspace")
CyclePort.inspect; payload is target-specific read model.target="broadcast_bus" returns whether the cycle bus is configured, the
configured subscriber names, bus settings/budgets, latest bus result,
summary, proposal groups, and linked-memory reactivations from the latest
cycle.Serialized bus results include proposals, accepted, inhibited,
decisions, summary, proposal_groups, and subscriber_reports.
decisions records one arbitration outcome per accepted or inhibited proposal:
{
"status": "accepted",
"reason": "accepted",
"proposal": {}
}
Current inhibition reason codes are below_threshold, duplicate_key,
max_accepted, and resolved_answer_present.
Tools that return evidence_plan use:
{
"strategy": "string",
"answer": "string",
"queries": ["string"],
"evidence": ["string"],
"metadata": {}
}
Planner names are auto, generic, semantic, structured, graph, and
hybrid.