For AI agents: a documentation index is available at https://docs.coverbase.com/llms.txt. This page is also available in markdown by appending .md to the URL.
A Zero Touch Assessment is a lightweight triage run assembled entirely from open-source research, with no document request, no questionnaire and no vendor contact. It produces a single 0–100 Zero Touch Score so a portfolio can be ranked before real review effort is spent.
For the concepts behind the score, see Zero Touch Assessments.
Every endpoint below is behind the
zero-touch-assessments module. If it is not enabled for your organization, these routes return 404. Contact your Coverbase representative to have it turned on.Launch a run
POST
POST /v1/zero_touch_assessmentRequest body
string
required
The vendor ID (
cbvndr_...) to assess.string[]
Restrict the run to specific services. Omit to run against the vendor as a whole.
string
Switch your organization’s Zero Touch scope to this template before launching. Omit to launch against whatever is already configured, which is what a caller with no opinion means.
Responses
Organizations are provisioned the shipped templates on first use, so a
409 is unusual. It means every template has since been un-designated or archived, which is a deliberate act that provisioning will not undo.Launch in bulk
POST
POST /v1/zero_touch_assessment/bulkstring[]
required
Vendor IDs to assess.
200. The response separates the two:
object[]
Run summaries for the vendors that launched.
object[]
One entry per vendor that could not launch, each with
vendor_id and error.failed. A 200 does not mean every vendor launched.
Read a run
GET
GET /v1/zero_touch_assessment/{assessment_id}object | null
The researched company profile:
company_name, url, description, industry, use_case, services, hq_location, and confidence, which is how sure the run is it profiled the right company. null until the research completes, which happens shortly after launch and independently of the controls.string | null
critical, high, moderate, low or minimal, with risk_tier_confidence, a one-line risk_tier_reasoning and the full risk_tier_detailed_reasoning.number | null
The Zero Touch Score, 0–100, higher is healthier.
null when nothing has resolved yet.object[]
One entry per component (
controls, financial_health, security, registration, people), each with status (scored / unavailable / disabled), its own score, the configured_weight set for your org, and the weight it actually carried.object[]
Every place the run drew evidence from, grouped by
kind: web, registry, infrastructure, document.Rank a portfolio
GET
GET /v1/zero_touch_assessment/leaderboardlimit, offset and search.
Ranking is computed across the whole organization before the page is sliced, so paging through the leaderboard gives a true global ranking. Unscored runs sort last rather than as zero.
List and choose templates
GET
GET /v1/zero_touch_assessment/templatesPOST
POST /v1/zero_touch_assessment/templateGET returns the shipped templates with their control counts and domains, plus active_template_key, the one your runs currently evaluate. It is null when your organization runs a control set of its own, or when more than one shipped template is designated; both are states to show rather than resolve arbitrarily.
The POST takes {"template_key": "..."} and points future runs at that template. It only ever re-designates control sets this module provisioned, so a set designated for you by Coverbase is never disturbed.
Re-source a run’s vendor profile
POST
POST /v1/zero_touch_assessment/{assessment_id}/reprofileRe-score a run
POST
POST /v1/zero_touch_assessment/{assessment_id}/rescoreReview a run
POST
POST /v1/zero_touch_assessment/{assessment_id}/reviewstring
required
approved, escalated, or note.string
Free text, up to 4000 characters.
Correct a run’s inputs
POST
POST /v1/zero_touch_assessment/{assessment_id}/correctstring
required
The correction in plain language, up to 2000 characters.
An instruction that yields no concrete change still returns
200 and still writes an audit entry with an empty changes array. Read changes to see what actually moved.Read the audit trail
GET
GET /v1/zero_touch_assessment/{assessment_id}/auditstring
approved, escalated, corrected, rescored, or note.string | null
The reviewer’s own words, stored verbatim, for
corrected entries.object[]
One entry per field the action changed, each with
field, before and after. Empty for approvals, notes, and corrections that resolved to nothing.number | null
The Zero Touch Score either side of the action.
Read and set scoring configuration
GET
GET /v1/zero_touch_assessment/configis_ready), the control sets in scope, and the current scoring configuration.
POST
POST /v1/zero_touch_assessment/configboolean
Whether the Financial Health Score is a component.
boolean
Whether the outside-in security rating is a component.
integer
Relative weight of the control evaluation. Weights are relative, not percentages. They renormalise over whichever components resolve.
integer
Relative weight of the financial health component.
integer
Relative weight of the security component.
boolean
Whether corporate-registration standing is a component.
integer
Relative weight of the registration component.
boolean
Whether the leadership dossier is a component.
integer
Relative weight of the people component.
string
Where a completed run writes its score:
none, vendor_inherent, vendor_residual, service_inherent, or service_residual.result.push_skipped_reason.
boolean
Whether a completed run writes its risk tier onto vendor inherent risk. Off by default.
score_target is already vendor_inherent, because two writers on one field would let run order decide the vendor’s risk, and reports why in result.risk_tier_push_skipped_reason.
Listing runs
There is no separate list endpoint, deliberately. A Zero Touch run is an assessment. Use the existing assessment endpoints with theis_zero_touch filter:
is_zero_touch: truereturns triage runs onlyis_zero_touch: falsereturns full assessments only- omitted returns both