Skip to content

Tools

A Tool Article describes one registered executable interface to a real, Source-backed Capability: its arguments, effects and failures. The schema and execution live in code; the Article explains them.

Field Meaning
description What the Tool does, as shown in catalogs.
obsidience.binding Exactly capability:<tool.id>.
obsidience.source The Capability's entrypoint file under obsidience/harness/capabilities/.

The executable contract is code

The code-owned Tool definition in obsidience/harness/capabilities/registry.py is the executable contract: name, description, parameters, effect class and adapter. The ADK loop advertises it as a native function declaration and the model calls it through the provider's native function channel. Tool and Skill Articles add no second call schema and no {tool, args} text format.

  • No fictional Tool. A Tool exists only with one real capability: binding, one Source-linked entrypoint and one paired Skill. Tool metadata must match the registry exactly, but it can never choose an import path or an executable at runtime.
  • Explicit grants. A new Tool needs an accepted Tool/Skill pair and an explicit grant through its execution owner: an Agent's direct Skills or a Task's Runbook. Repository schemas and default Articles alone confer no authority.
  • Effect class is reviewed code. Which capabilities are read-only is a code-owned list; Article prose cannot declare an effect safe.
  • Receipts and no replay. Every call commits intent before dispatch and an immutable receipt on return; uncertain effects are never replayed. See Sources and Capabilities.

Change the adapter and its documentation together, keeping the exact Article-to-Capability provenance.

Starter Vault Tools

37 Tools Articles, generated at build time from obsidience/defaults/vault.

Tool Description Capability source
application.launch Open a registered application with application:. obsidience/harness/capabilities/application/launch.py
camera.observe Look through the preferred physical camera (OBSBOT/webcam) to answer a question about the room, nearby objects, or what the owner is showing you. obsidience/harness/capabilities/camera/observe.py
computer.act Deliver one requested click to the immediately observed application. target is a short control label, at most 128 characters. obsidience/harness/capabilities/computer/act.py
computer.hardware Read this computer's hardware right now: CPU and memory, and each GPU's load, free VRAM, temperature, power and video encoder/decoder use. obsidience/harness/capabilities/computer/hardware.py
computer.observe Read a fresh image of one exact target without changing focus or placement. obsidience/harness/capabilities/computer/observe.py
computer.replay Look back over the last seconds of the screens from their rolling replay buffers, for what just happened, what was that or what did I miss. obsidience/harness/capabilities/computer/replay.py
harness.optimize Run the bound instruction optimization case with case_id. obsidience/harness/capabilities/harness/optimize.py
harness.repair Request one receipt-safe recovery with exact task and run_id from current status evidence. obsidience/harness/capabilities/harness/repair.py
harness.status Read bounded current runtime-health and receipt findings. obsidience/harness/capabilities/harness/status.py
lights.set Turn the registered room lights on or off. obsidience/harness/capabilities/lights/set.py
lights.visualize Opt-in room music light visualizer for the Executive only. action:start requires explicit audio_delay_ms (250-3000) and uncalibrated:true unless an exact saved optical timing profile is available. obsidience/harness/capabilities/lights/visualize.py
media.acquire Register one exact source for an explicit acquisition or playback request under the accepted source-selection policy. obsidience/harness/capabilities/media/acquire.py
media.library For songs, artists and music use search(query,type:music). obsidience/harness/capabilities/media/library.py
media.pause Pause one current browser media session directly, without screenshots or clicks. obsidience/harness/capabilities/media/pause.py
model.benchmark Measure one registered model using model_id and devices. obsidience/harness/capabilities/model/benchmark.py
model.configure Update one registered model with model_id and at least one supported setting: allowed_devices, context_tokens, max_output_tokens, gpu_memory_utilization or max_num_seqs. obsidience/harness/capabilities/model/configure.py
model.inspect Inspect one registered model using model_id. obsidience/harness/capabilities/model/inspect.py
model.source Register the current immutable Source identity of a registered model using model_id. obsidience/harness/capabilities/model/source.py
observations.recall Recall historical Hindsight memories from your own Agent bank using query. obsidience/harness/capabilities/observations/recall.py
observations.retain Retain an unverified historical note in your own Hindsight bank using text and up to three accessible related_refs. obsidience/harness/capabilities/observations/retain.py
session.unlock Unlock the current desktop session through its native lock owner using {}. obsidience/harness/capabilities/session/unlock.py
source.handoff Return one self-contained finding as immutable Source Inbox evidence with exactly title and content containing source:// citations. obsidience/harness/capabilities/source/handoff.py
source.ingest Preserve external evidence as immutable Source using content, source_ref, source_type, media_type and optional captured_at. obsidience/harness/capabilities/source/ingest.py
source.read Read immutable Source by exact source ID/citation, or up to ten sources; offset and limit continue bounded text. obsidience/harness/capabilities/source/read.py
task.complete Finish with status:completed|failed|review and a factual summary. obsidience/harness/capabilities/task/complete.py
task.create Activate one accepted Task with task and bounded params. obsidience/harness/capabilities/task/create.py
tv.control Control the registered TV as an optional Media playback destination. obsidience/harness/capabilities/tv/control.py
vault.list List readable Articles in the executing Agent's graph. obsidience/harness/capabilities/vault/list.py
vault.maintenance Inspect accessible Knowledge for bounded maintenance candidates. obsidience/harness/capabilities/vault/maintenance.py
vault.propose Stage an accepted-scope Article revision with target, action:create|update|archive, and applicable title/body/reason/metadata. obsidience/harness/capabilities/vault/propose.py
vault.read Read an exact accessible Article using ref, or up to ten refs. obsidience/harness/capabilities/vault/read.py
vault.search Search only the executing Agent's owned and checked-out graph. obsidience/harness/capabilities/vault/search.py
vault.validate Run deterministic validation of Article formats and load-bearing references. obsidience/harness/capabilities/vault/validate.py
web.fetch Fetch one URL or up to ten URLs using exactly url or urls. obsidience/harness/capabilities/web/fetch.py
web.search Find public source leads using query and optional limit. obsidience/harness/capabilities/web/search.py
window.activate Focus one exact current application or pane using target:{kind:application|pane,name:,surface?:}. obsidience/harness/capabilities/window/activate.py
window.place Move or resize a current application window or Obsidience pane. obsidience/harness/capabilities/window/place.py

Several Tools are integration-specific (lights, TV, media, camera) and need their providers and an explicit grant before they can run in an installation. session.unlock is never inherited: it exists only where the installation owner grants it.