evidra-1babca — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited evidra-1babca (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- contract: v1.1.0 -->
Evidra is a flight recorder for AI infrastructure agents. It measures operational reliability across CI pipelines, scripts, and AI agents without blocking operations. When the Evidra MCP server is connected, you have access to prescribe_full, prescribe_smart, and report tools that record your infrastructure decisions into a tamper-evident evidence chain.
The evidence chain enables reliability scoring, behavioral signal detection, and auditability. Your reliability score improves when you follow the protocol consistently — and degrades when you skip steps, hide failures, or break the prescribe/report pairing.
Every infrastructure mutation follows two steps:
1. prescribe_full or prescribe_smart → get prescription_id + risk assessment
2. [execute the command]
3. report → record verdict + get reliability scoreRead-only operations skip the protocol entirely.
These three rules are non-negotiable:
Breaking these invariants triggers protocol violation signals that degrade your reliability score.
| Tool | Mutating operations |
|---|---|
| kubectl | apply, delete, patch, create, replace, rollout restart |
| helm | install, upgrade, uninstall, rollback |
| terraform | apply, destroy, import |
| docker/podman/nerdctl | run, create, rm, stop, kill, build, push |
| docker-compose/compose | up, down, start, stop, build |
| kustomize | (via kubectl apply) |
| oc (OpenShift) | same as kubectl |
Contract classification:
Mutation examples (must use prescribe/report):
Read-only examples (skip protocol):
When unsure whether a command mutates state, call `prescribe_smart`. It's always safe to prescribe — the cost is one extra call. The cost of skipping is a protocol violation signal.
prescribe_smartRecord lightweight intent BEFORE an infrastructure operation that creates, modifies, or deletes resources. Use this tool when you know the tool, operation, and target resource but do not have artifact bytes.
{
"tool": "kubectl",
"operation": "apply",
"resource": "deployment/web",
"namespace": "default",
"actor": {
"type": "agent",
"id": "your-agent-id",
"origin": "mcp-stdio",
"skill_version": "1.1.0"
}
}Use prescribe_smart when you know the target resource and namespace but do not need artifact-level drift detection.
Required inputs:
prescribe_fullRecord full artifact intent BEFORE an infrastructure operation that creates, modifies, or deletes resources. Use this tool when you have the actual artifact bytes and want native detector coverage plus artifact drift tracking.
{
"tool": "kubectl",
"operation": "apply",
"raw_artifact": "<the full YAML/JSON/command content>",
"actor": {
"type": "agent",
"id": "your-agent-id",
"origin": "mcp-stdio",
"skill_version": "1.1.0"
}
}Use prescribe_full when you have the artifact bytes and want native detector coverage plus artifact drift detection.
Required inputs:
{
"session_id": "stable-session-id",
"operation_id": "unique-per-operation",
"environment": "production",
"scope_dimensions": {
"cluster": "prod-us-east-1",
"namespace": "default"
}
}Keep session_id stable within one task. Use scope_dimensions to provide cluster/namespace/account/region context.
{
"ok": true,
"prescription_id": "01ABC...",
"risk_inputs": [
{
"source": "evidra/native",
"risk_level": "high",
"risk_tags": ["k8s.privileged_container"]
}
],
"effective_risk": "high",
"artifact_digest": "sha256:...",
"intent_digest": "sha256:...",
"operation_class": "mutate",
"scope_class": "production",
"resource_count": 1
}Returns:
If `prescribe_full` or `prescribe_smart` returns ok=false, do not execute the infrastructure command. Investigate the error before retrying.
The error codes are:
parse_error — the artifact couldn't be parsed (check format)invalid_input — required fields are missinginternal_error — server-side issueAfter a prescribe tool returns ok=true, execute the infrastructure command normally. Capture:
Record the terminal verdict AFTER an infrastructure operation completes or is intentionally declined.
{
"prescription_id": "01ABC...",
"verdict": "success",
"exit_code": 0,
"actor": {
"type": "agent",
"id": "your-agent-id",
"origin": "mcp-stdio",
"skill_version": "1.1.0"
}
}{
"prescription_id": "01ABC...",
"verdict": "failure",
"exit_code": 1,
"actor": { "type": "agent", "id": "your-agent-id", "origin": "mcp-stdio", "skill_version": "1.1.0" }
}Always report failures with the actual non-zero exit code. Hiding failures triggers artifact drift and protocol violation signals.
When you decide not to execute after prescribing (e.g., risk is too high):
{
"prescription_id": "01ABC...",
"verdict": "declined",
"decision_context": {
"trigger": "risk_threshold_exceeded",
"reason": "Critical risk: privileged container in production"
},
"actor": { "type": "agent", "id": "your-agent-id", "origin": "mcp-stdio", "skill_version": "1.1.0" }
}Note: exit_code is forbidden for declined verdicts. Use decision_context instead.
{
"ok": true,
"report_id": "01DEF...",
"verdict": "success",
"score": 95.5,
"score_band": "excellent",
"signal_summary": {
"protocol_violation": 0,
"artifact_drift": 0,
"retry_loop": 0,
"blast_radius": 0,
"new_scope": 0,
"repair_loop": 0,
"thrashing": 0,
"risk_escalation": 0
}
}The score (0-100) reflects your operational reliability within the current session. Non-zero signals indicate behavioral patterns that reduce trust.
When retrying a failed operation:
prescribe_full again if you still have artifact bytes, or prescribe_smart again if you do notreport with the new prescription_idEach attempt gets its own prescribe/report pair. Do not reuse a previous prescription_id.
Prescribe may return risk tags indicating specific concerns detected in the artifact:
| Tag | Severity | What it means |
|---|---|---|
k8s.privileged_container | critical | Container runs with privileged=true |
k8s.hostpath_mount | high | Pod mounts host filesystem path |
k8s.run_as_root | high | Container runs as UID 0 |
k8s.host_namespace_escape | high | Pod uses hostNetwork/hostPID/hostIPC |
k8s.docker_socket | high | Pod mounts /var/run/docker.sock |
k8s.dangerous_capabilities | high | Unsafe Linux capabilities (SYS_ADMIN, NET_ADMIN) |
k8s.cluster_admin_binding | critical | ClusterRoleBinding grants cluster-admin |
k8s.writable_rootfs | high | Root filesystem is writable |
ops.kube_system | high | Targets kube-system namespace |
ops.namespace_delete | high | Deleting a namespace |
| Tag | Severity | What it means |
|---|---|---|
docker.privileged | critical | Service runs with privileged=true |
docker.host_network | high | Service uses host network mode |
docker.socket_mount | high | Service mounts Docker socket |
| Tag | Severity | What it means |
|---|---|---|
aws_iam.wildcard_policy | critical | IAM policy grants Action: and Resource: |
terraform.iam_wildcard_policy | high | IAM policy uses wildcard action or resource |
terraform.s3_public_access | high | S3 bucket missing public access block |
aws.rds_public | high | RDS instance publicly accessible |
aws.ebs_unencrypted | high | EBS volume without encryption |
aws.security_group_open | high | Security group allows unrestricted ingress |
| Tag | Severity | What it means |
|---|---|---|
ops.mass_delete | critical | Deleting more than 10 resources at once |
Evidra monitors eight behavioral signals. Understanding them helps you maintain a high reliability score:
Add to your MCP config (e.g., ~/.claude.json or Claude Desktop settings):
{
"mcpServers": {
"evidra": {
"command": "evidra-mcp",
"args": ["--evidence-dir", "~/.evidra/evidence", "--environment", "production"]
}
}
}For development with optional signing:
{
"mcpServers": {
"evidra": {
"command": "evidra-mcp",
"args": ["--evidence-dir", "~/.evidra/evidence", "--signing-mode", "optional"]
}
}
}docker run -v ~/.evidra/evidence:/evidence \
-e EVIDRA_EVIDENCE_DIR=/evidence \
-e EVIDRA_ENVIRONMENT=production \
evidra-mcp| Variable | Purpose | Default |
|---|---|---|
EVIDRA_EVIDENCE_DIR | Evidence storage path | ~/.evidra/evidence |
EVIDRA_ENVIRONMENT | Environment label | (none) |
EVIDRA_SIGNING_KEY | Base64 Ed25519 private key | (none) |
EVIDRA_SIGNING_KEY_PATH | Path to signing key file | (none) |
EVIDRA_SIGNING_MODE | strict or optional | strict |
EVIDRA_RETRY_TRACKER | Enable retry loop detection | false |
EVIDRA_URL | API URL for online mode | (offline) |
EVIDRA_API_KEY | API authentication key | (none) |
Is this an infrastructure command?
├─ No → Just execute it. No protocol needed.
└─ Yes → Does it mutate state?
├─ No (get/describe/logs/plan/show) → Execute directly.
├─ Yes (apply/delete/create/destroy) → prescribe → execute → report
└─ Unsure → prescribe → execute → report (safe default)~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.