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.
The server exposes 11 tools. Eight of them are read dispatchers, one per domain, each covering many operations through a kind parameter. One returns reports, one performs every write, and one describes the rest.
This shape is deliberate. An assistant handed sixty-five narrowly-named tools spends its context deciding between them and still picks wrong; eleven tools with explicit routes leave more room for your actual data.
Reads
Each read tool takes akind and the identifiers that kind needs. All are read-only and scoped to your organization and your permissions.
query_vendors
Accepted parameters: kind, vendor_id, document_id, query, llm_query_terms, limit.
query_assessments
Accepted parameters: kind, assessment_id, eval_id, vendor_id, status, query, control_set_id, issues_only, unresolved_only, limit, full_text, analysis_offset.
Reading a long AI analysis:
eval_detail renders the AI’s reasoning whole up to a generous cap. If an analysis is longer than that, the response says so and names the follow-up call that returns the rest: pass full_text=true for every section at maximum length, or analysis_offset to page through the analysis from a given character. A capped response always announces itself, so a partial analysis is never presented as the complete reasoning.
query_findings
Accepted parameters: kind, finding_id, vendor_id, assessment_id, commitment_id, commitment_status, limit.
query_engagements_contracts
Accepted parameters: kind, vendor_id, engagement_id, contract_id, vendor_document_id, status, limit.
query_controls
Accepted parameters: kind, control_set_id, control_id, limit.
query_questionnaires
Accepted parameters: kind, questionnaire_id, questionnaire_type, vendor_id, intake_session_id, status, unanswered_only, pending_only, offset, limit.
Vendor intake in chat
How these fit together into a complete intake request, and why
intake_steps is read before anything else runs.query_radar
Accepted parameters: kind, vendor_id, query, llm_query_terms, include_common_related_terms, limit.
query_platform
Accepted parameters: kind, object_type, object_id, target_type, target_id, query, include_inactive, limit.
Reports
get_report(report_name, …) returns cross-cutting aggregations. Each report uses only some of the shared parameters.
Writes
Every write goes through one tool:mutate(entity, action, data). The per-action parameters go inside data.
A few of these carry behaviour worth knowing:
vendor / create refuses by default
vendor / create refuses by default
Creating a vendor directly requires
skip_intake: true in addition to confirm: true. Requests to add, buy, or start using a vendor are supposed to go through intake_session / create instead, which links or creates the vendor itself. Creating one first leaves a duplicate carrying no due diligence.The separate flag exists because a generic “yes, create it” is not the same as accepting that due diligence is being skipped.control / update tunes AI evaluation guidance
control / update tunes AI evaluation guidance
Editing a control’s expectation, evaluation instructions, or evidence requirement changes how the AI judges it. Material edits create a new version rather than overwriting. Pair it with
get_report(report_name="control_flag_rates") to find the controls worth tuning, and assessment / rerun to re-evaluate against the new instructions.eval / update triages one control evaluation
eval / update triages one control evaluation
Clear a false positive with
is_issue=false, resolve an issue, or attach review notes. This is the per-control correction, distinct from the whole-assessment sign-off in review / create.engagement / archive is terminal
engagement / archive is terminal
There is no unarchive.
Unknown fields are rejected, not ignored
Unknown fields are rejected, not ignored
Writes reject unexpected keys in
data and return the accepted set. Silently dropping a misspelled vender_id would turn a typo into a successful mutation that quietly omits the field you meant to set.Discovery
mcp_capabilities() takes no arguments and returns a JSON document enumerating every route above with its parameters: name, type, required or optional, and default value.
It’s the recommended first call when an assistant isn’t sure which route applies, and it’s always current, because it’s generated from the running server rather than maintained by hand.
Related
Example prompts
Realistic phrasing for each workflow, and which calls it resolves to.
Canned prompts
Nineteen scripted workflows you can invoke by name.
Roles and permissions
How read-only versus read/write is decided, and how it maps to your Coverbase role.
Security and privacy
What we log, what we don’t retain, and how to revoke access.