Skip to main content

Rig management

list_rigs

List all registered rigs with connection status. Parameters: None Returns:

get_rig_config

Get connectivity status and hardware summary for one rig. Parameters:
string
required
Exact name of the rig as registered in the control plane.
Returns:

register_rig

Register a new rig and return its API key.
The API key is shown ONCE and cannot be retrieved again. Save it immediately.
Parameters:
string
required
Unique name for the rig. Letters, numbers, hyphens (e.g. orin-bench-01).
Returns:

Test runs

list_runs

List recent test runs, optionally filtered by rig. Parameters:
string
Filter to runs from this rig. Pass null for all rigs.
integer
default:"20"
Maximum number of runs to return. Max 500.
Returns:

get_run_summary

Get a full summary of one run including pass rate and duration. Parameters:
string
required
UUID of the run.
Returns:

run_test_suite

Create a queued run and push it to the connected agent. Parameters:
string
required
Name of the rig to run tests on.
string
required
Path to the YAML suite manifest as known to the agent (e.g. tests/suites/engine_validation.yaml).
list[string]
Optional tag filter — only tests matching at least one tag are run.
string
Optional suite type filter (e.g. smoke, regression).
Returns: Run record with run_id for polling.

cancel_run

Cancel a running test suite. Parameters:
string
required
UUID of the run to cancel. Only running runs can be cancelled.
Returns:

Result inspection

get_results

List test results for a run. Parameters:
string
required
UUID of the run.
string
Filter by status: pass, fail, blocked, error, or skip.
Returns:

get_signal_trace

Extract signal samples for a specific signal across the most recent tests in a run. Searches up to 5 test results. Returns up to 100 samples per test. Parameters:
string
required
UUID of the run.
string
required
Signal name as stored in test results (e.g. EngineData.RPM).
Returns:

describe_failure

Get complete failure context for one test in one run. This is the primary tool for AI failure analysis — it returns everything needed for root-cause analysis in a single call. Combines: run metadata, error messages, log lines, signal traces (up to 5 signals, 100 samples each). Parameters:
string
required
UUID of the run.
string
required
Test ID as declared in the YAML manifest.
Returns:

Signal and suite introspection

list_signals

Parse a DBC file and return metadata for every signal. Parameters:
string
required
Path to the .dbc file, relative to the working directory when the MCP server was started.
Returns:

list_tests

Parse a YAML suite manifest and return metadata for every test. Parameters:
string
required
Path to the YAML manifest (e.g. tests/suites/engine_validation.yaml).
Returns:

AI-assisted tools

generate_test_suite

Scaffold a YAML manifest and Python stubs, optionally with AI-generated assertions. Parameters:
string
required
Snake-case suite name (e.g. brake_validation).
string
required
One-sentence description of what the suite validates.
string
default:"\"Virtual_Sim\""
Hardware variant to target.
string
default:"\"tests/suites\""
Directory to write both files.
list[string]
Manual context: signal names, fault scenarios, integration flows, sensor feeds.
string
Rig TOML — auto-extracts ECU names, power rails, GPIO presence.
string
DBC file — auto-extracts all MessageName.SignalName pairs.
string
Provider override: anthropic, openai, gemini.
Returns:

analyze_component

Extract the signal interface contract of a C/C++ software component. Requires pip install 'crucihil[analyze]'. Parameters:
string
required
Path to a .c/.cpp/.h file or a directory of source files.
string
required
Label for this component in the output (e.g. BrakeController).
list[string]
One or more DBC file paths. Merged with TOML-discovered DBCs.
string
Rig TOML — auto-discovers DBCs from [rig.definitions], infers interface type from key name.
list[string]
Shim header directories or SWC paths to parse alongside the primary source.
string
Provider override: anthropic, openai, gemini.
Returns:

Authoring and verification

author_component

Author a self-verified test suite from component source code. Chains: analyze (signal contract with evidence chains) → generate → baseline gate (must run green on the rig, with AI repair rounds) → write. Broken AI output never reaches disk — a deterministic static generator is the guaranteed fallback. Runs entirely on the machine hosting the MCP server (source code and rig TOML are local paths). Writes the suite files into output_dir. Parameters:
string
required
Component source file or directory (local path).
string
required
Component label (e.g. BrakeController).
string
default:"\"rigs/virtual.toml\""
Rig the baseline gate runs against (virtual by default).
list[string]
DBC file paths for the signal corpus.
string
Firmware repo root — enables cross-component port-graph resolution (shared-memory indirection).
string
default:"\"tests/suites\""
Where the promoted suite is written.
string
Suite name (default: <component>_contract).
string
default:"\"crucihil\""
Output format: crucihil (native YAML+Python), pytest, or robot.
string
Provider override: anthropic, openai, gemini (auto-detected from env vars if omitted).
integer
default:"2"
AI repair rounds before the static fallback.
Returns:
On failure, returns {"error": "...", "stage": "analyze" | "generate" | "baseline" | "write"}.

verify_suite

Mutation-verify a test suite and return its strength report. Runs the suite once as a baseline, then once per mutation. Outcome per test: caught (test failed — good), missed (test stayed green while the behavior was broken — vacuous), wrong_reason (test went blocked/error instead of failing). A suite score of 1.0 means every planned mutation was caught. Works on native CruciHiL suites and on existing pytest / Robot Framework suites with zero rewrites. Parameters:
string
required
Native YAML manifest, or a pytest/Robot test tree when framework is given. A YAML manifest with a framework: field routes automatically.
string
default:"\"rigs/virtual.toml\""
Rig the verification runs against.
string
pytest | robot to verify a foreign suite unchanged; omit for native (or manifest-declared).
string
Contract artifact (contracts/<component>.json) — sharpens the mutation plan with the component’s real outputs.
integer
default:"20"
Cap on mutation runs (priority-ordered).
string
Also save the full report JSON here (readable later via get_strength_report).
Returns:
report_path appears only when it was requested. On failure, returns {"error": "..."}.

get_strength_report

Read a previously saved mutation strength report JSON. Parameters:
string
required
Path passed to verify_suite’s report_path (or crucihil verify --report).
Returns: The saved strength report (same shape as verify_suite), or {"error": "..."} if the file is missing or not valid JSON.

detect_coverage_gaps

Find what a component’s tests never exercised (coverage gaps). Compares the component contract (which signals the component touches) against the signal traces recorded by a run’s tests. Reports signals never tested at all and value regions never reached (“never tested BrakePressure > 80% of range”), each with a proposed gap test whose description can be passed straight to generate_test_suite. Parameters:
string
required
The run whose recorded traces to analyze.
string
required
Contract artifact (contracts/<component>.json).
list[string]
DBCs for signal ranges (defaults to the DBCs the contract entries reference).
Returns:
Gap kind is one of untested, upper_range, lower_range. On failure, returns {"error": "..."}.

See also