Skip to content

MCP tools

The hal0 dashboard MCP tab showing connected servers and tool tiers Dashboard MCP tab — lists connected servers, active tool tiers, and pending approvals.

hal0 hosts two Streamable-HTTP MCP servers that agents call: a focused memory server (/mcp/memory) and a full admin server (/mcp/admin). Every admin tool is classified into one of three tiers — autonomous-read, autonomous-write, or approval-gated. Gated tools enqueue for owner approval before they run; autonomous tools execute immediately.

Hindsight (Cognee-backed) long-term memory. The memory subsystem is opt-in — these tools only function when the server is started with HAL0_MEMORY_ENABLED=1; otherwise calls degrade to a no-op / unavailable surface.

ToolTierEffect
memory_addautonomous-writeWrite one item → {id, timestamp} (+ operation_id when async).
memory_searchautonomous-readVector + tag + time-window query → {results}.
memory_recallautonomous-readToken-budgeted consolidated recall (Hindsight preferred) → {results}.
memory_listautonomous-readPaginated walk → {items, next_cursor}.
memory_deleteconditionalRemove by id(s) → {deleted}. Autonomous for one id; gated for >1.

Notable arguments:

  • dataset defaults to shared; private-mode callers promote to private:<client_id>. A search may pass a list of datasets.
  • source is server-injected from the caller’s identity and cannot be supplied by the caller (audit grounding).
  • document_id reuse upserts one logical document (e.g. an evolving conversation); it must match the identity grammar (alphanumeric / - / _, ≤ 64 chars).
  • memory_recall accepts max_tokens (default 4096, range 1–32768), types, dataset, and tags for token-budgeted retrieval via Hindsight recall.

The admin server hosts every tool an agent might call, including the memory_* tools above (delegated to the memory surface). Tools are classified as follows.

Execute immediately; pure reads against the local REST or host surface.

ToolEffect
slot_listList every slot known to hal0 (local + remote).
slot_statusOne slot’s lifecycle state + metadata.
model_listAggregate models from local registry + upstreams.
hardware_probeLive hardware probe — backends, memory, accelerators.
capability_listCapability overlay state — backends + selections.
provider_listList configured providers.
version_infohal0 version + runtime status.
gpu_target_versionDecode KFD’s gfx_target_version to a gfxNNNN string.
npu_statusXDNA NPU presence + driver binding.
env_reportComposite host snapshot (container, CPU, RAM, GPU, NPU, …).
model_store_probeProbe a model-store path (fstype, free/total, writable, UMA).

Mutating but reversible, scoped, and low blast-radius.

ToolEffect
model_swapHot-swap the primary slot to a new model.
memory_addAdd an item to long-term memory.
memory_searchSearch long-term memory.
memory_listPage through long-term memory items.
memory_deleteDelete memory item(s) — autonomous only for a single id.

Always enqueued for owner approval before execution. These are the members of GATED_TOOLS:

ToolEffect
model_pullPull a model into the local registry.
model_deleteDelete a model from the local registry.
slot_createCreate a new slot.
slot_deleteDelete a slot.
slot_restartRestart a slot’s systemd unit.
capability_setAssign a capability child to a slot.
config_writeUpdate hal0.toml top-level settings.
provider_credential_writeWrite provider credentials (secrets never echoed).
logs_tailTail journald for one systemd unit.
memory_delete (bulk)Delete more than one memory id in a single call.

A gated call returns {"status": "pending_approval", "approval_id": "..."}. The owner approves or denies it from the dashboard approval inbox, the /api/agent/approvals surface, or the hal0 agent approvals CLI.