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: |
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.