Visual for TOB Tool Evidence TOB The Tool Observation Bus records observed tool evidence so task completion, learning, safety, and state checks do not rely on agent claims alone. Overview Observes Agent model Agent flow Evidence states Failure rules MCP contract Agent Tools

TOB

TOB stands for Tool Observation Bus. Nova uses TOB to turn agent tool activity into observed evidence that other areas can compare with agent claims.

TOB records what Nova can observe during real execution: a page was read, a selector was touched, text was entered, navigation was attempted, a tool failed, or a gate stopped a call before it ran.

A completion note is a claim. TOB evidence is the observable trail behind that claim. ETM can reject a task completion when checked units do not have enough observed support, and ALP, LCJ, PKS, OK, CLS, and AAG can use the same evidence according to their own rules.

Users rarely operate TOB directly. Agents and integrators see TOB through fields such as evidenceSummary, verificationResults, taskAwareness.completionAllowed, coverageEvidence, and task URL coverage gates.

In short

  • TOB records observed tool evidence, not durable memory.
  • It separates agent claims from execution signals.
  • Evidence becomes useful only when bound to a task, tab, or scope.
  • ETM can block premature completion with reason=evidence_gap.
  • Coverage Scan provides server-registered coverageEvidence for exhaustive URL tasks.
  • TOB evidence never bypasses user approval or action safety gates.

What TOB observes

TOB keeps evidence-relevant signals from agent tool work. It does not turn every event into trusted memory; it preserves the signals other systems need for review.

  1. Tool dispatch TOB can record which tool ran, whether it succeeded, how long it took, which target it used, and whether it produced a logical success or an error.
  2. Surface context For browser work, TOB can keep page URL, route, tab, document, selector, input, and before/after context so later checks know what the action touched.
  3. Action kind Observed work is classified as read, navigate, interact, write or meta.
  4. Signal flags Read, visual exposure, DOM exposure, selector touch, input supplied, navigation committed, mutation attempted, and mutation committed are examples of signals TOB can preserve.
  5. Task evidence For ETM, TOB compares checked task units with observed evidence and exposes the result in evidenceSummary.
  6. Coverage evidence For exhaustive URL work, nova.coverage_scan returns coverageEvidence from registered scans instead of trusting agent-supplied coverage claims.

When this matters

TOB matters when Nova must prove that work actually happened before accepting a result: large URL reviews, compliance or accessibility checks, task runs with many units, selector repair, learning from real outcomes, or any workflow where a plausible completion note is not enough.

Knowledge model for agents

For an agent, TOB answers four questions: which work was claimed, which signals were observed, how strong is the evidence, and what decision should another system make from that evidence?

Claim
A reported state from the agent, such as a task unit marked checked or a completion request for an instance.
Observation
A tool-execution signal Nova can observe, such as a read, click, input, navigation, failure, blocked call, or structured scan.
Scope
The work boundary that binds observations to a task or target. Without scope, evidence may exist but cannot safely prove a task unit.
Evidence grade
strong means observed support is strong enough for the unit; weak means some signal exists but is incomplete; none means expected evidence is missing after complete ingestion; unknown means Nova cannot judge yet.
Evidence gap
A difference between claimedCheckedUnits and evidence accepted by the active policy. If the gap is too large, completion can return reason=evidence_gap.
Coverage evidence
coverageEvidence is a registered-scan result. It becomes trusted only when server checks pass, including URL consistency and claimed-vs-measured extraction sanity.
Verification report
verificationResults summarizes explicit verification-contract steps submitted through evidenceReport.

How agents use TOB information

TOB is an evidence route, not a user-facing task list. The agent performs work, reports progress, reads evidence state, and only completes when observed evidence supports the claim.

  1. Create a scoped task or claim The agent works inside a claimed tab or an ETM instance created with nova.task_instance_create. This gives TOB a boundary for evidence correlation.
  2. Use normal browser tools Calls such as nova.perceive, nova.read_text, nova.navigate, nova.click_selector or nova.type_selector create observable dispatch signals.
  3. Report what was checked For task instances, the agent marks units through nova.task_instance_progress. Those checked units become the claim set that TOB later tests against observations.
  4. Use Coverage Scan for exhaustive URL work When an exhaustive URL task needs block-eligible evidence, the agent uses nova.coverage_scan with a registered scanId instead of claiming coverageEvidence through arbitrary evaluation.
  5. Read evidence state before completion nova.task_instance_get can return evidenceSummary, urlCoverage and taskAwareness.completionAllowed so the agent can see whether completion is likely to pass.
  6. Complete only when evidence supports it nova.task_instance_complete can return completed=false with verification_failed, evidence_gap or task URL coverage guidance when observed evidence is not enough.

When TOB evidence applies

TOB state describes evidence maturity. It can support or reject a claim, but it never grants permission to perform an unsafe website action.

Unscoped signal scope missing
Meaning
A tool signal exists, but it is not safely bound to the task or target that is making the claim.
Evidence required
No matching task, tab, or workflow scope for the observed dispatch.
Agent behavior
Do not count it as proof for a task unit. Re-establish context and observe again.
May accept completion
No.
Observed dispatch tool outcome
Meaning
Nova observed a tool call and its basic outcome.
Evidence required
Tool name, target, success/failure, duration, action kind, surface, and optional before/after hints.
Agent behavior
Use as raw evidence. A single dispatch may still be too weak for task completion.
May accept completion
Not by itself.
Weak evidence weak
Meaning
Some matching observation exists, but the proof is incomplete.
Evidence required
A matching observation without enough read-like support or without a strong visit window.
Agent behavior
Gather better evidence, usually by reading or scanning the target again.
May accept completion
Depends on policy.
Strong evidence strong
Meaning
The checked unit has observed support that TOB can count confidently.
Evidence required
A matching read-like observation and a strong visit/read window for the same task unit.
Agent behavior
Count toward observed checked units and continue normal completion checks.
May accept completion
Yes, if the rest of the policy passes.
No evidence none
Meaning
TOB expected evidence for a deterministic unit but found no matching observation after ingestion completed.
Evidence required
Deterministic locator exists, ingestion/projection is complete, and no matching observation was found.
Agent behavior
Return to the missing unit, observe it, exclude it with reason, or keep the task open.
May accept completion
No, if the gap exceeds policy.
Unknown evidence unknown
Meaning
Nova cannot judge the checked unit from current signals.
Evidence required
No locator, no deterministic locator, missing scope binding, incomplete ingestion, or incomplete projection.
Agent behavior
Prefer more observation or better unit locators. Policy decides whether unknown counts as gap.
May accept completion
Depends on policy.
Evidence gap reason=evidence_gap
Meaning
The observed support is below the active completion threshold.
Evidence required
evidenceSummary.gapPercent exceeds evidenceSummary.maxGapPercent.
Agent behavior
Retry after gathering missing observations. Treat the rejection as repairable.
May accept completion
No.
Trusted coverage coverageEvidence.trust.trusted=true
Meaning
A registered coverage scan passed server trust checks.
Evidence required
Registered scan ID, matching effective URL, measured text sanity, and extraction metrics.
Agent behavior
Use for URL coverage progress or reconciliation, then complete through the normal task gate.
May accept completion
Yes, for coverage evidence only.

Failure and guard conditions

These are the hard edges an agent or integration should expect when using TOB-facing fields.

Condition Observed signal Agent behavior
Unknown argument Task instance tools and nova.coverage_scan reject unknown top-level properties. Use only the published fields for the selected tool; do not rely on metadata passthrough unless the schema exposes it.
Task snapshot missing evidence evidenceSummary is absent when no checked units exist or correlation cannot produce a useful summary. Report progress first or inspect the task state instead of assuming evidence exists.
Completion policy not satisfied nova.task_instance_complete returns completed=false with a task-policy reason and currentState. Finish remaining, blocked, failed, or mandatory units before retrying.
Verification failed reason=verification_failed and verificationResults identify required failed fast-gate steps. Fix the visible cause or update the verification contract; do not ignore the failed step.
Evidence gap reason=evidence_gap, retryable=true, gapPercent, maxGapPercent and policyMode explain the rejected completion. Gather stronger observations, use Coverage Scan when appropriate, or mark unsupported units correctly.
Coverage scan missing scan ID scanId is required for nova.coverage_scan. Unknown scan IDs are rejected and known IDs may be returned. Use nova_full_page_text_v1, nova_structured_dom_v1 or nova_i18n_spellcheck_v1 when appropriate.
Coverage scan trust failed coverageEvidence.trust.trusted=false with reasons such as scan_returned_null_or_empty, scan_result_not_json, effective_url_mismatch or claimed_text_exceeds_measured. Treat the payload as telemetry, not block-eligible coverage evidence. Re-run from the correct page or use a better scan.
Agent-claimed coverage Agent-supplied coverageEvidence through arbitrary evaluation is not trusted for block-mode coverage. Use nova.coverage_scan for server-registered coverage evidence.
Task URL coverage gate _aagGates.taskUrlCoverage may report open URL units and recommend nova.coverage_scan. Inspect remaining URLs, exclude legitimate exceptions, run reconcile dry-run, or ask for user force-complete only when allowed.

Agent interpretation example

The example shows TOB as a completion contract: the agent reads evidence, sees that observed support is incomplete, and gathers more proof before retrying completion.

Task snapshot evidence

{
  "tool": "nova.task_instance_get",
  "arguments": {
    "instanceId": "task_42"
  }
}

Relevant response fields

{
  "structuredContent": {
    "evidenceSummary": {
      "claimedCheckedUnits": 12,
      "observedCheckedUnits": 9,
      "strong": 7,
      "weak": 2,
      "none": 2,
      "unknown": 1,
      "ingestionComplete": true
    },
    "taskAwareness": {
      "completionAllowed": false
    }
  }
}

Agent interpretation

{
  "claim": "12 units marked checked",
  "observedSupport": "9 units have TOB evidence",
  "risk": "completion may be rejected as evidence_gap",
  "nextStep": "inspect the none/unknown units before calling task_instance_complete again"
}

MCP contract

This is the deterministic layer under the explanation. TOB does not publish one single tool; agents read its contract through task-instance, verification, and coverage fields.

Execution rule: No TOB field may authorize a website action by itself; TOB evidence can support completion, learning, or state review only after the current task and safety gates agree.

Variable Type / values Default Effect
nova.task_instance_get MCP tool; args include instanceId and optional include* limits instanceId required Reads current task state and may expose evidenceSummary, urlCoverage and taskAwareness.
nova.task_instance_create MCP tool; args include profileId, adHocContext, targetUrl, currentScope, agentId, unitSource, declaredTaskKind profileId optional; adHocContext required for ad-hoc runs Creates the scoped ETM instance that later TOB evidence can be correlated against.
nova.task_instance_progress MCP tool; args include instanceId, expectedInstanceRev, clientEventId, unit updates task-specific Writes checked, excluded, blocked, failed, or discovered unit state that later evidence is compared against.
nova.task_instance_complete MCP tool; args: instanceId, expectedInstanceRev, clientEventId, note, completionNote, evidenceReport instanceId, expectedInstanceRev and clientEventId required Flushes completion, evaluates policy and TOB evidence, and returns completed plus a reason when rejected.
nova.task_instance_verify MCP tool; args: instanceId instanceId required Returns verification contract steps that can later be submitted as evidenceReport[].
evidenceSummary object returned by task_instance_get and task_instance_complete only when checked units exist Summarizes observed evidence against claimed checked units.
evidenceSummary.claimedCheckedUnits integer computed Checked task units the agent claimed through progress or completion state.
evidenceSummary.observedCheckedUnits integer computed Checked units supported by strong or weak TOB evidence.
evidenceSummary.strong integer computed Units with strong observed support.
evidenceSummary.weak integer computed Units with matching but incomplete observed support.
evidenceSummary.none integer computed Units with deterministic locators but no matching observation after complete ingestion.
evidenceSummary.unknown integer computed Units whose evidence cannot be judged because locator, scope, ingestion, or projection is incomplete.
evidenceSummary.ingestionComplete boolean computed Shows whether relevant evidence sources finished ingestion for the scope.
evidenceSummary.gapPercent / maxGapPercent / policyMode number; number; string only on evidence_gap rejection Explains why completion was rejected by the active evidence policy.
reason=evidence_gap / retryable=true task_instance_complete rejection fields only when gap exceeds policy Signals that completion can be retried after gathering stronger evidence.
taskAwareness.completionAllowed boolean computed in task snapshots Shows whether task completion policy is currently satisfied before a completion attempt.
verificationResults phase, noRequiredFailed, summary, steps[], duplicateStepIds only when verification contract/evidence is present Reports explicit verification evidence submitted or skipped for completion.
verificationResults.summary total, passed, failed, inconclusive, skipped, failedRequired computed Aggregates verification-contract step results.
verificationResults.steps[] stepId, state, gate, required, detail computed Shows each verification step and whether it passed, failed, was inconclusive, or was skipped.
evidenceReport[] task_instance_complete arg; stepId, state, toolResult, detail optional Agent-submitted verification evidence for a task completion attempt.
evidenceReport[].state passed | failed | inconclusive | skipped required per entry Agent-assessed verification result. Required failed fast-gate steps can block completion.
nova.coverage_scan MCP tool; args: scanId, targetId, scopeOptions targetId=active; scanId required Runs a server-registered coverage scan and returns coverageEvidence. Use the published schema fields for new clients.
scanId nova_full_page_text_v1 | nova_structured_dom_v1 | nova_i18n_spellcheck_v1 required Selects the registered scan. Unknown IDs are rejected.
scopeOptions.includeShadowDom / includeIframes / waitForHydration boolean fields registry-defined Optional scope options accepted by the coverage scan schema.
scopeOptions.hydrationTimeoutMs integer 0-30000 registry-defined Optional hydration wait budget from the published schema.
coverageEvidence version, registeredScanId, scanHash, document, extraction, trust, raw returned by coverage_scan Evidence block used by coverage-aware tasks and telemetry.
coverageEvidence.document.* effectiveUrl, visibleTextCharsMeasured, nodeCountMeasured, iframeCount, shadowRootCount computed Measured document facts used for trust and coverage interpretation.
coverageEvidence.extraction.textChars / textCoverageRatio integer; number 0.0-1.0 computed Shows how much text the scan extracted compared with measured visible text.
coverageEvidence.trust.trusted / reason boolean; string computed States whether server trust checks passed and why.
rawUrlBefore / rawUrlAfter / targetId string; string; string returned by coverage_scan Shows the resolved target and URL before/after the registered scan.
urlCoverage coverageSchemaVersion, urlUnits*, reportingGroupsTotal, observations*, last* only for task instances with URL units Summarizes URL coverage in task_instance_get.
_aagGates.taskUrlCoverage gateId, status, urlUnits, evidence, resolution only when completion is rejected with remaining URL units Guides the agent toward coverage scan, exclusion, reconcile dry-run, or user force-complete flow.
nova.task_instance_reconcile_coverage MCP tool; args: instanceId, dryRun, observationCutoff dryRun=true Replays stored observations against URL units and proposes or applies coverage upgrades when allowed.
Agent Tools

MCP tools for agents. These variables and tool names are intended for agents and integrators. They are not normal user controls in the interface.

Variable Meaning
nova.perceive Understand the visible page
nova.read_text Read page text
nova.navigate Open a page
nova.route Route inside a web app
nova.click_selector Click an element
nova.type_selector Type into a field
nova.file_upload Upload a file
nova.dismiss_blockers Dismiss visible blockers
nova.run_sequence Run multiple steps safely
nova.tab_claim Reserve a tab for work
nova.tab_release Release a reserved tab
nova.task_instance_create Start a task run
nova.task_instance_get Reads task state and may include evidenceSummary, urlCoverage, and taskAwareness.completionAllowed.
nova.task_instance_complete Attempts completion after TOB correlation and can reject unsupported claims with evidence_gap or verification_failed.
nova.task_instance_progress Reports checked, excluded, blocked, or failed units that TOB evidence can later be compared against.
nova.task_instance_verify Returns verification steps whose results can be submitted as evidenceReport during completion.
nova.coverage_scan Runs a registered scan and returns coverageEvidence for exhaustive URL coverage tasks.
nova.task_instance_reconcile_coverage Replays stored observations against URL units and proposes or applies coverage upgrades.