Pretorin Compliance
PYPI · PRETORIN · SCANNED SEP 21
Access Pretorin controls, evidence, narratives, and local Plan-backed Campaigns from AI tools.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security100
- No malware found by supply-chain analysis.Pass
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 6 of 71 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency19
- Repository check failed: the declared repository URL redirects; it must resolve directly. See how to fix → View diagnostics → Fail
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 0 days ago).Pass
- Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 39099 tokens (~133/item across 293 items; 270 tools + 23 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management93
- Stability observed for 28 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage93
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 78% of tool parameters carry a description.Partial
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_evidence" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
- An AI judge read all 272 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a current MCP spec version (2026-07-28).Pass
How do I install the Pretorin Compliance MCP server?
Pretorin Compliance runs locally as a PyPI package, launched with uvx pretorin. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · pretorin
claude mcp add pretorin-ai-pretorin -- uvx pretorin
{
"mcpServers": {
"pretorin-ai-pretorin": {
"command": "uvx",
"args": [
"pretorin"
]
}
}
} {
"servers": {
"pretorin-ai-pretorin": {
"command": "uvx",
"args": [
"pretorin"
]
}
}
} codex mcp add pretorin-ai-pretorin -- uvx pretorin
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"pretorin-ai-pretorin": {
"type": "local",
"command": [
"uvx",
"pretorin"
],
"enabled": true
}
}
} openclaw mcp add pretorin-ai-pretorin --command uvx --arg pretorin
mcp_servers:
pretorin-ai-pretorin:
command: "uvx"
args: ["pretorin"] {
"McpServers": {
"pretorin-ai-pretorin": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"pretorin"
]
}
}
} assistant mcp add pretorin-ai-pretorin -t stdio -c uvx -a pretorin
{
"mcpServers": {
"pretorin-ai-pretorin": {
"command": "uvx",
"args": [
"pretorin"
]
}
}
} Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 21 Sept 26 +15
- Stability: 0.90 → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Malware scan: unverified → pass ▲ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Schema quality: 100 → unverified ▼ functional
- Package version: 0.29.14 → 0.29.17 functional
- Package version: 0.29.14 → 0.29.16 functional
- Package version: 0.29.14 → 0.29.15 functional
- 20 Sept 26 0
- Package version: 0.29.13 → 0.29.14 functional
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 18 Sept 26 −2
- Stability: fail → 0.83 functional
- Package version: 0.29.10 → 0.29.13 functional
- Package version: 0.29.10 → 0.29.12 functional
- Package version: 0.29.10 → 0.29.11 functional
- 17 Sept 26 0
- Package version: 0.29.9 → 0.29.10 functional
- 16 Sept 26 +1
- Package version: 0.29.8 → 0.29.9 functional
- 15 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 86 to 89.
- 14 Sept 26 −2
- Package version: 0.29.7 → 0.29.8 functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 21 Sept 2026 · Analysed pypi/pretorin@0.29.17
Provenance No attestation
The registry publishes no build provenance for this version, so there is nothing to verify.
| Result | No attestation |
|---|---|
| Ecosystem | pypi |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 71 packages
| Packages resolved | 71 |
|---|---|
| Stale | 4 |
| No linked repository | 2 |
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
accept_issue_risk ~298
Formally accept a canonical Issue's confirmed residual risk. The referenced evaluation must be the Issue's LATEST and already confirmed, and the Issue must still be open or in_progress. expires_at must be a timezone-aware future timestamp; review_frequency_days and next_review_at are only valid together and next_review_at must not exceed expires_at.
| Name | Type | Req | Description |
|---|---|---|---|
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| evidence_ids | array | – | – |
| expires_at | string | yes | Timezone-aware ISO 8601, in the future |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| issue_id | string | yes | Canonical Issue ID |
| next_review_at | string | – | Timezone-aware ISO 8601 |
| rationale | string | yes | – |
| review_frequency_days | integer | – | – |
| risk_evaluation_id | string | yes | – |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
activate_plan ~406
Declare the ordered execution steps for a draft plan and transition it to active. This gates writes that carry that plan_id: start_task returns a scope-pinned draft, the calling agent declares what it will do, then activate_plan enables platform writes citing that plan_id. plan_id is optional on Tier-1 writes, so this is a pre-action contract for the routed flow rather than a hard security control. Supplied steps must be pending and indexed contiguously from zero; the list may be empty when workflow-required semantic phases are already present. Those phases are expanded authoritatively in the returned plan. Concrete actions declare a phase; the agent selects each recipe id, version, and parameters, while the Plan enforces its start/end lifecycle receipt. Standalone and control-assessment Campaign work share this workflow contract; the Campaign contributes frozen scope and outcome gates, not recipe choices. Acceptance criteria are additive for Campaign children too. Also accepts a legacy plan that is already active but declares no steps: supplying its steps here is the way to make such a plan completable.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptance_criteria | array | – | Optional ADDITIONAL completion-gate criteria. The workflow owns its Definition of Done, so criteria seeded into the draft by start_task always survive activation — entries here are added on top, and… |
| actor | string | – | Agent identifier recorded on the initial structural snapshot. |
| expected_version | integer | – | Optional optimistic-locking guard for the draft read by the caller. |
| plan_id | string | yes | – |
| reason | string | – | Why this execution contract is being activated. |
| steps | array | yes | Concrete actions to insert into workflow-owned phases. May be empty when the draft already contains required phases. Echoed workflow anchors are accepted but unnecessary. |
No output schema declared.
No examples provided.
add_control_issue ~504
Admit one independently supported control gap as a canonical Issue. New MCP work must use an issue-create recipe context carrying the unmet expectation, observed gap and source basis, risk basis, explicit clearance condition, minimum evidence, and prior-Issue deduplication result. Do not create Issues for optional advice, missing context, evidence suggestions, subtasks, or ai_analysis findings; the platform review reconciler owns AI finding Issues. Keep matcher-facing content to one sentence of at most 20 words and begin the title with the expectation key.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified_sources | boolean | – | Allow writes when source attestation shows a mismatch. Defaults to false. |
| content | string | yes | One matcher-safe sentence (at most 20 words) stating the observed gap |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| detected_at | string | – | Optional ISO 8601 detection timestamp |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| idempotency_key | string | – | Optional organization-scoped retry key |
| inherent_impact | string | yes | – |
| inherent_likelihood | string | yes | – |
| is_blocking | boolean | – | Evidence-gap Issues must be false; demonstrated control deficiencies remain true. |
| issue_kind | string | – | Use evidence_gap only for a completed search that did not observe required active-tier evidence. |
| plan_id | string | – | Optional: ID of the agent-authored plan this write is part of. When supplied, the platform write is tagged with the plan and the plan's local produced_artifacts[] audit chain gets an entry. |
| recipe_context_id | string | yes | Active issue-create recipe context id from start_recipe. May be a single-control context or a family (multi-control) context for this control's system + framework. |
| risk_basis | string | yes | Basis for the initial provisional risk evaluation |
| search_context | string | – | Search scope/query/result provenance for an evidence-gap Issue. |
| step_index | integer | – | Optional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied. |
| system_id | string | – | Optional: The system ID or name |
| title | string | yes | Short canonical Issue title |
No output schema declared.
No examples provided.
add_control_note ~198
Deprecated alias for add_control_issue.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified_sources | boolean | – | Allow writes when source attestation shows a mismatch. Defaults to false. |
| content | string | yes | Deprecated note content; use add_control_issue for new gap or remediation work |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| recipe_context_id | string | yes | Active control-note-attestation recipe context id from start_recipe (legacy id for issue attestation). May be a single-control context or a family (multi-control) context for this control's system +… |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
add_issue_risk_evaluation ~231
Append a provisional risk evaluation for a canonical Issue. Confirm the determination with confirm_issue_risk_evaluation.
| Name | Type | Req | Description |
|---|---|---|---|
| basis | string | yes | Risk evaluation rationale |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| inherent_impact | string | yes | – |
| inherent_likelihood | string | yes | – |
| issue_id | string | yes | Canonical Issue ID |
| residual_impact | string | – | – |
| residual_likelihood | string | – | – |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
answer_policy_question ~302
Answer one policy question. IMPORTANT: Before answering, you MUST (1) call get_policy_question_detail for guidance, and (2) research the local workspace — read source code, config files, existing policy documents, infrastructure definitions, and documentation to ground your answer in observable facts. Do not invent organizational facts, role titles, URLs, procedures, or policies. ANSWER-FIRST MODE — answer as many questions as possible directly from workspace evidence without involving the user. Submit these answers silently. GAP QUESTIONS — only for questions that require organizational knowledge not present in the workspace (e.g., role assignments, review frequencies, policy decisions, org-specific processes). Do NOT ask about things you can observe in code, config, CI, or docs. When you must ask, use this format: ── Gap Question [N of TOTAL gaps] ────────────────── [Short clarifying question — what you specifically need to know] Context: [1 sentence on what you already found] Suggested answers: a) [likely option] b) [alternative] c) Other ────────────────────────────────────────────────── Present ONE gap question at a time. Wait for the user's response, compose the final answer combining their input with workspace evidence, submit it, then move on.
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | The answer text. Set to null to clear. |
| policy_id | string | yes | Organization policy ID |
| question_id | string | yes | Question ID to answer |
No output schema declared.
No examples provided.
answer_scope_question ~310
Answer one scope question. IMPORTANT: Before answering, you MUST (1) call get_scope_question_detail for guidance, and (2) research the local workspace — read source code, config files, infrastructure definitions, and documentation to ground your answer in observable facts. Do not invent organizational facts, system names, network topologies, or boundaries. ANSWER-FIRST MODE — answer as many questions as possible directly from workspace evidence without involving the user. Submit these answers silently. INTERVIEW MODE — only for questions that require organizational knowledge not present in the workspace (e.g., role assignments, review frequencies, policy decisions, org-specific processes). Do NOT ask about things you can observe in code, config, CI, or docs. When you must ask, use this format: ── Scope Question [N of TOTAL] ────────────────── [Short clarifying question — what you specifically need to know] Context: [1 sentence on what you already found] Suggested answers: a) [likely option] b) [alternative] c) Other ────────────────────────────────────────────────── Present ONE clarifying question at a time. Wait for the user's response, compose the final answer combining their input with workspace evidence, submit it, then move on.
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string | yes | The answer text. Set to null to clear. |
| framework_id | string | yes | Framework ID |
| question_id | string | yes | Question ID to answer |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
apply_campaign ~61
Deprecated checkpoint compatibility only. Apply stored legacy proposals to Pretorin workflow records. Plan-backed Campaigns have no generic coordinator apply phase.
| Name | Type | Req | Description |
|---|---|---|---|
| checkpoint_path | string | yes | Local campaign checkpoint path |
| item_ids | array | – | Optional subset of item ids to apply |
No output schema declared.
No examples provided.
approve_cci_implementation ~139
Explicitly and idempotently approve one CCI implementation through the Pretorin MCP. The CCI must already be past not_started with a substantive committed narrative and approval-supporting scoped evidence (verified, checksummed pending recipe evidence or valid evidence); the server returns 409 with missing prerequisites otherwise. Approval is recorded with agent source and approval stamps. This operation does not approve the parent NIST/DoD control; a human must do that in the UI.
| Name | Type | Req | Description |
|---|---|---|---|
| cci_uuid | string | yes | CCI catalog UUID, not the CCI-000XXX display label. |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
approve_issue_plan ~213
Approve a submitted canonical Issue treatment plan. Requires the plan to be pending_approval. Approval is what makes transition_issue_action legal on the plan's actions.
| Name | Type | Req | Description |
|---|---|---|---|
| approval_note | string | – | – |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| issue_id | string | yes | Canonical Issue ID |
| plan_id | string | yes | Issue treatment-plan ID |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
approve_objective_implementation ~253
Explicitly and idempotently approve one assessment objective implementation through the Pretorin MCP. The objective must already be past not_started with a substantive committed narrative and approval-supporting scoped evidence; the server returns 409 with missing prerequisites otherwise. Approval is recorded with agent source and approval stamps and promotes the AI draft to the committed narrative. Issue-blind by design: it never consults control issues. This operation does not approve the parent control; a human does that in the UI. A Campaign worker must also provide its assigned child Plan coordinates and can approve only a grounded frozen objective whose objective-bound evidence requirements are authoritatively covered.
| Name | Type | Req | Description |
|---|---|---|---|
| objective_uuid | string | yes | The objective implementation row UUID, not the '3.1.1.a' label. |
| plan_id | string | – | Optional: ID of the agent-authored plan this write is part of. When supplied, the platform write is tagged with the plan and the plan's local produced_artifacts[] audit chain gets an entry. |
| step_index | integer | – | Optional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied. |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
approve_stig_rule_workflow ~130
Explicitly and idempotently approve the workflow for one exact STIG rule after the rule is in scope through confirmed applicability or a checklist, its latest exact-rule result passes, verified/checksummed recipe remediation evidence (or valid evidence) is linked to the workflow, and every linked Issue is reconciled. The server returns 409 with missing prerequisites otherwise. Pass the internal STIG rule UUID returned by the traceability/checklist surfaces.
| Name | Type | Req | Description |
|---|---|---|---|
| stig_rule_id | string | yes | Internal STIG rule UUID for the exact rule. |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
attach_vendor_systems ~67
Attach one or more systems to a vendor (SR-5 / SA-9 system-of-record mapping). Pass system_ids as an array of system IDs.
| Name | Type | Req | Description |
|---|---|---|---|
| system_ids | array | yes | System IDs to attach (at least one). |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
attest_risk ~100
Produce a DSSE-signed attestation over the current reviewed risk state. The server rejects stale or missing reviews; any mutation after review requires another explicit review. The statement is auditor-facing and must explain the determination.
| Name | Type | Req | Description |
|---|---|---|---|
| attestation_statement | string | yes | Auditor-facing rationale for this signed determination. |
| attestation_type | string | yes | – |
| risk_id | string | yes | Risk ID |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
attest_spec_inventory ~215
Attest the current asset inventory state, setting its last_attested_at on the scope page. Use AFTER submit_asset_inventory_diff has the inventory in the desired state. The asset inventory is a living kind (rows + attestation), not a file upload — there is no evidence_id to pass. Requires an active workflow (call start_task first).
| Name | Type | Req | Description |
|---|---|---|---|
| attestation_name | string | – | Optional human-readable label for this inventory attestation. |
| plan_id | string | – | Optional: ID of the agent-authored plan this write is part of. When supplied, the platform write is tagged with the plan and the plan's local produced_artifacts[] audit chain gets an entry. |
| step_index | integer | – | Optional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied. |
| sufficiency | object | – | Auditor sufficiency envelope for the attestation. All fields optional; supply what the producing recipe run knows. |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
attest_spec_snapshot ~257
Attest a system_spec snapshot kind (boundary_diagram, network_dfd, ppsm, interconnection), setting its last_attested_at on the scope page. Typically called right after link_spec_snapshot. Pass the same `evidence_id` you linked, plus a `sufficiency` envelope describing the artifact's provenance. Requires an active workflow (call start_task first).
| Name | Type | Req | Description |
|---|---|---|---|
| evidence_id | string | – | Optional: the linked evidence item being attested. |
| kind | string | yes | Snapshot kind to attest. One of boundary_diagram, network_dfd, ppsm, interconnection (per list_artifact_requirements). |
| plan_id | string | – | Optional: ID of the agent-authored plan this write is part of. When supplied, the platform write is tagged with the plan and the plan's local produced_artifacts[] audit chain gets an entry. |
| step_index | integer | – | Optional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied. |
| sufficiency | object | – | Auditor sufficiency envelope for the attestation. All fields optional; supply what the producing recipe run knows. |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
cancel_campaign ~62
Persist cancellation for an exact local Plan-backed Campaign before delivery to its execution owner. Committed platform writes are never rolled back. This local safety operation remains available during platform authentication or consent outages.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_plan_id | string | yes | – |
| reason | string | – | – |
No output schema declared.
No examples provided.
cancel_plan ~128
Mark a plan as cancelled. Allowed only from 'active'. Idempotent: cancelling an already-cancelled plan is a no-op. Cannot cancel a completed plan. Cancellation skips the acceptance gate — a cancelled plan is 'stopped early', not 'delivered'.
| Name | Type | Req | Description |
|---|---|---|---|
| expected_version | integer | – | Optional optimistic-locking guard. If supplied, the call returns a structured version_conflict error if the plan's on-disk version no longer matches. |
| outcome_summary | string | – | Optional reason for cancellation. |
| plan_id | string | yes | – |
| postmortem | object | – | – |
No output schema declared.
No examples provided.
check_campaign_runtime ~146
Read-only first gate for Campaign execution. Inspect the local Python dependencies, selected agent runtime, embedded Hatchet runtime, and optional TUI observer separately. This tool makes no platform calls, downloads, installations, reservations, Campaigns, or Plans. Call it before source preflight or preview_campaign; continue only when launch_ready is true. Managed native runtimes reported in deferred_setup may be installed only after explicit START confirmation; configured or PATH runtimes in deferred_validation are launched for validation only after START.
| Name | Type | Req | Description |
|---|---|---|---|
| agent | string | – | Optional shared agent-harness override. |
| model | string | – | – |
| model_provider | string | – | – |
| reasoning_effort | string | – | – |
No output schema declared.
No examples provided.
check_context ~101
Cheap, unauthenticated probe of session grounding. Call at session start before start_task to learn whether the client is authenticated, which platform API endpoint and system/framework are active locally, and what to do next. Reads local CLI config only — no platform calls — so it's always safe and fast. Returns suggested_next as a plain-English hint, e.g., 'Run `pretorin login`' or 'Call `start_task` with an intent_verb'.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
check_sources ~168
Preflight source reachability and candidate recipes for one workflow/control. Use this after start_task and before opening recipe contexts.
| Name | Type | Req | Description |
|---|---|---|---|
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| framework_id | string | – | Optional framework ID; defaults to active scope |
| include_source_hints | boolean | – | Return full per-expectation source_hints instead of compact hint summaries. Default: false |
| system_id | string | – | Optional: The system ID or name |
| workflow_id | string | yes | Workflow id returned by start_task, e.g. single-control |
No output schema declared.
No examples provided.
claim_campaign_items ~98
Deprecated checkpoint compatibility only. Claim legacy prepared items for drafting with leases; Plan-backed Campaigns delegate dispatch and retries to embedded Hatchet.
| Name | Type | Req | Description |
|---|---|---|---|
| checkpoint_path | string | yes | Local campaign checkpoint path |
| item_ids | array | – | Optional exact items already assigned by an external orchestrator |
| lease_owner | string | – | Stable identifier for the claiming agent |
| lease_ttl_seconds | integer | – | – |
| max_items | integer | – | – |
No output schema declared.
No examples provided.
complete_issue_plan ~222
Complete an approved canonical Issue plan. Requires the plan to be approved and EVERY action on it to be completed. This moves the Issue to verification_pending, NOT closed — closure is the separate verify_issue decision.
| Name | Type | Req | Description |
|---|---|---|---|
| completion_note | string | yes | – |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| issue_id | string | yes | Canonical Issue ID |
| plan_id | string | yes | Issue treatment-plan ID |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
complete_plan ~275
Mark a plan as completed. Allowed only from 'active'. Idempotent: completing an already-completed plan is a no-op. Cannot complete a cancelled plan. The plan must declare at least one step, every step must be completed or skipped, and skipped steps must include an outcome_summary explaining why. Incomplete work returns a structured plan_incomplete error whose problems[] lists every unresolved step at once: each entry carries a reason of 'no_steps_declared' (plan-level, no step_index), 'step_not_terminal', or 'skipped_step_missing_reason', with step_index and status on the step-level entries. If the plan declares acceptance_criteria[], each criterion is evaluated against current platform state before the transition; any failures return a structured acceptance_failed error with the full list of failing criteria, and the plan stays active so the agent can fix the gaps and retry.
| Name | Type | Req | Description |
|---|---|---|---|
| expected_version | integer | – | Optional optimistic-locking guard. If supplied, the call returns a structured version_conflict error if the plan's on-disk version no longer matches — useful when the caller wants to be sure they are… |
| outcome_summary | string | – | One-paragraph summary of what the plan ultimately produced. |
| plan_id | string | yes | – |
| postmortem | object | – | – |
No output schema declared.
No examples provided.
confirm_issue_risk_evaluation ~282
Confirm a canonical Issue's risk evaluation — a governed determination, not a stronger append. Confirming supersedes or expires any active risk acceptance, recomputes gate_status, and can demote the control's approval gate. Requires the Issue to be open or in_progress. Use add_issue_risk_evaluation for a provisional assessment that decides nothing.
| Name | Type | Req | Description |
|---|---|---|---|
| basis | string | yes | Rationale for the confirmed determination |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| inherent_impact | string | yes | – |
| inherent_likelihood | string | yes | – |
| issue_id | string | yes | Canonical Issue ID |
| residual_impact | string | – | – |
| residual_likelihood | string | – | – |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
create_custom_policy ~50
Create a platform-native custom policy from an explicit definition. Evidence Locker content is supporting material and must never be converted into a definition.
| Name | Type | Req | Description |
|---|---|---|---|
| definition | object | yes | – |
| is_required | boolean | – | – |
No output schema declared.
No examples provided.
create_evidence ~664
Upsert an evidence item on the platform (find-or-create by default) using a short summary plus a standalone Markdown evidence artifact within one active system/framework scope. Evidence artifacts must not contain section headers, standalone bold labels, or gap/issue/remediation-backlog discussion.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified_sources | boolean | – | Allow writes when source attestation shows a mismatch. Defaults to false. |
| artifact_content | string | yes | Markdown body containing the actual evidence artifact. Start directly with factual content; omit section headers, standalone bold labels, and gap or issue discussion. |
| capture_method | string | – | Source capture method, e.g. repository_file_read, api_export, scanner_output |
| code_commit_hash | string | – | Git commit hash |
| code_file_path | string | – | Path to source file (relative to workspace root) |
| code_line_numbers | string | – | Line range (e.g., '10-25') |
| code_repository | string | – | Git repository URL |
| code_snippet | string | – | Relevant code excerpt |
| control_id | string | – | Optional: The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| dedupe | boolean | – | Whether to reuse exact-matching org evidence before creating |
| description | string | yes | Short human summary of what the evidence demonstrates |
| evidence_type | string | yes | Type of evidence (required, must be one of the canonical values) |
| framework_id | string | – | Optional: Associated framework ID; defaults to active scope |
| name | string | yes | Evidence name |
| plan_id | string | – | Optional: ID of the agent-authored plan this write is part of. When supplied, the platform write is tagged with the plan and the plan's local produced_artifacts[] audit chain gets an entry. |
| recipe_context_id | string | yes | Required for MCP agent writes. Active recipe execution context from start_recipe; the resulting evidence is stamped producer_kind='recipe' with the context's recipe id and version. |
| source_excerpt | string | – | Short quoted excerpt or source material used to produce the evidence claim |
| source_label | string | – | Human-readable source title or section label |
| source_locator | string | – | Precise source locator, e.g. 'section 3.7', 'lines 84-88', or 'page 4 paragraph 2'. Strongly recommended: the platform audit-metadata contract requires a locator for agent-produced evidence (issue #7… |
| source_uri | string | – | Stable source path, URL, object id, report id, or export id used for provenance |
| step_index | integer | – | Optional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
create_evidence_batch ~245
Create and link multiple evidence items within exactly one active system/framework scope. Evidence artifacts must not contain section headers, standalone bold labels, or gap/issue/remediation-backlog discussion.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified_sources | boolean | – | Allow writes when source attestation shows a mismatch. Defaults to false. |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| items | array | yes | Scoped evidence items to create and link |
| plan_id | string | – | Optional: ID of the agent-authored plan this write is part of. When supplied, the platform write is tagged with the plan and the plan's local produced_artifacts[] audit chain gets an entry. |
| recipe_context_id | string | yes | Required for MCP agent writes. Active recipe execution context from start_recipe; every item in the batch is stamped producer_kind='recipe'. All items share the same context — per-item context variat… |
| step_index | integer | – | Optional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
create_issue_action ~198
Append an action or milestone to a draft canonical Issue treatment plan.
| Name | Type | Req | Description |
|---|---|---|---|
| action | object | yes | Complete editable action or milestone |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| issue_id | string | yes | Canonical Issue ID |
| plan_id | string | yes | Issue treatment-plan ID |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
create_issue_plan ~185
Create the next editable treatment-plan version for a canonical Issue.
| Name | Type | Req | Description |
|---|---|---|---|
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| issue_id | string | yes | Canonical Issue ID |
| plan | object | yes | Complete editable treatment-plan draft |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
create_plan ~429
Persist an agent-authored work plan locally to ~/.pretorin/plans/<id>.json. Plans are the persistence layer for the canonical agent execution contract — a declarative, resumable, auditable record of scope, intent, steps, expected outputs, and acceptance criteria. A future session can resume, replace, or audit the work via the returned plan id. Plans are local-only today; nothing in the platform contract changes when a plan is written. Returns the full plan record including the generated plan id. When steps are omitted, the plan is created as a draft and must be activated before platform writes.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptance_criteria | array | – | Optional typed conditions the platform must verify before complete_plan succeeds. Empty list (default) leaves the gate open — plan can be completed unconditionally. Each criterion carries a fixed enu… |
| campaign_context | object | – | – |
| campaign_type | string | – | – |
| created_by_agent | string | – | Identifier for the agent creating the plan (e.g. 'claude-code-1.2.3'). |
| intent_inputs_snapshot | object | – | Free-form snapshot of inputs that shaped the plan (user prompt, active scope, etc.) so the audit trail captures the *why*. |
| intent_summary | string | yes | One-paragraph statement of what the agent intends to do and why. Used by future sessions to decide whether to resume or replace. |
| parent_plan_id | string | – | – |
| plan_kind | string | – | – |
| scope | object | – | Scope this plan operates on (system/framework/control). |
| steps | array | – | Ordered list of intended steps. Indices must be contiguous from 0. |
| workflow_id | string | yes | Workflow id this plan executes (e.g. 'single-control'). |
No output schema declared.
No examples provided.
create_risk ~242
Create a custom risk in a system's register. Pass `treatment` + `treatment_plan` + `treatment_due_date` to record a mitigation in one call. Auto-link is opt-in: supply `framework_id` AND `suggested_control_families` (and the system must have ControlImplementation rows for that framework) — otherwise the risk is created with zero links and the agent should follow up with link_risk_artifact.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | yes | Risk category |
| cia_category | string | – | – |
| description | string | – | – |
| framework_id | string | – | Framework ID — required for control auto-linking. |
| impact | string | – | – |
| likelihood | string | – | – |
| owner_id | string | – | – |
| review_frequency_days | integer | – | – |
| suggested_control_families | array | – | Control family IDs for auto-linking (requires framework_id). |
| system_id | string | yes | The system ID or name |
| title | string | yes | Risk title |
| treatment | string | – | – |
| treatment_due_date | string | – | ISO date |
| treatment_plan | string | – | – |
No output schema declared.
No examples provided.
create_stig_checklist ~138
Create an asset-scoped STIG checklist bound to a benchmark + asset. Returns the new checklist summary (including its id). Fails if one already exists for that (benchmark, asset), or if the benchmark/asset is unknown. Create-or-resolve a checklist this way before importing scanner output.
| Name | Type | Req | Description |
|---|---|---|---|
| inventory_item_id | string | yes | Asset inventory item ID to bind the checklist to |
| stig_benchmark_id | string | yes | STIG benchmark ID to bind (e.g. RHEL_9_STIG) |
| system_id | string | yes | The system ID or name |
| title | string | – | Optional checklist title |
No output schema declared.
No examples provided.
create_vendor ~138
Create a new vendor entity. Required: name, provider_type (csp, saas, managed_service, internal). Optional: description, authorization_level, owner_user_id, inherent_risk.
| Name | Type | Req | Description |
|---|---|---|---|
| authorization_level | string | – | Optional authorization level (e.g., FedRAMP High P-ATO) |
| description | string | – | Optional vendor description |
| inherent_risk | string | – | Inherent risk band. 'medium' is a deprecated alias for 'moderate'. |
| name | string | yes | Vendor name |
| owner_user_id | string | – | Optional vendor owner user ID |
| provider_type | string | yes | Type of provider |
No output schema declared.
No examples provided.
create_vendor_contact ~109
Create a contact for a vendor. Requires the server-side `vendor.pii` scope (or an admin token). Setting is_primary auto-demotes the prior primary contact.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | – | |
| is_primary | boolean | – | Mark as primary contact (auto-demotes the prior primary). |
| name | string | yes | Contact name |
| notes | string | – | – |
| phone | string | – | – |
| title | string | – | – |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
create_vendor_contract ~171
Create a contract for a vendor. Requires the server-side `vendor.pii` scope (or an admin token). status and is_expired are server-derived and cannot be set.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_renew | boolean | – | – |
| contract_type | string | yes | Contract type |
| document_evidence_item_id | string | – | – |
| end_date | string | – | End date (ISO-8601) |
| name | string | yes | Contract name |
| notes | string | – | – |
| notice_period_days | integer | – | – |
| renewal_date | string | – | Renewal date (ISO-8601) |
| start_date | string | – | Start date (ISO-8601) |
| terminated_at | string | – | Termination timestamp (ISO-8601) |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
delete_evidence ~149
Delete an evidence item from the platform (system-scoped, requires WRITE access)
| Name | Type | Req | Description |
|---|---|---|---|
| evidence_id | string | yes | The evidence item ID to delete |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| plan_id | string | – | Optional: ID of the agent-authored plan this write is part of. When supplied, the platform write is tagged with the plan and the plan's local produced_artifacts[] audit chain gets an entry. |
| step_index | integer | – | Optional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
delete_issue_action ~199
Delete an action while its canonical Issue treatment plan is still a draft.
| Name | Type | Req | Description |
|---|---|---|---|
| action_id | string | yes | Issue plan action ID |
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| control_implementation_id | string | yes | Control implementation ID returned by add_control_issue/get_control_issues |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| issue_id | string | yes | Canonical Issue ID |
| plan_id | string | yes | Issue treatment-plan ID |
| step_index | integer | – | Campaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
delete_vendor ~23
Delete a vendor entity.
| Name | Type | Req | Description |
|---|---|---|---|
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
delete_vendor_assessment_template ~34
Delete an org-scoped custom or imported vendor assessment template.
| Name | Type | Req | Description |
|---|---|---|---|
| template_id | string | yes | Assessment template ID |
No output schema declared.
No examples provided.
delete_vendor_contact ~50
Delete a vendor contact. Requires the server-side `vendor.pii` scope (or an admin token).
| Name | Type | Req | Description |
|---|---|---|---|
| contact_id | string | yes | Contact ID |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
delete_vendor_contract ~50
Delete a vendor contract. Requires the server-side `vendor.pii` scope (or an admin token).
| Name | Type | Req | Description |
|---|---|---|---|
| contract_id | string | yes | Contract ID |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
detach_vendor_system ~39
Detach a system from a vendor.
| Name | Type | Req | Description |
|---|---|---|---|
| system_id | string | yes | System ID to detach |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
end_recipe ~161
Close a recipe execution context and return the RecipeResult summary (status, evidence, narrative, and Issue counts, errors, elapsed time). Pass recipe_context_id returned by start_recipe; legacy context_id is accepted only for backwards compatibility. Must be called once the recipe's work is complete; failure to call leaves the context in place until the 1-hour expiry sweep.
| Name | Type | Req | Description |
|---|---|---|---|
| context_id | string | – | Deprecated alias for recipe_context_id; accepted for backwards compatibility. Prefer recipe_context_id. |
| recipe_context_id | string | – | Preferred: context id returned by start_recipe (the same value passed as recipe_context_id to update_narrative / add_control_issue / resolve_control_issue) |
| status | string | – | Caller-supplied disposition (defaults to 'pass') |
No output schema declared.
No examples provided.
export_stig_checklist ~188
Export a checklist to a local file as DISA .ckl (XML) or .cklb (JSON). Regenerated on demand (air-gap/FIPS-safe; no eMASS connector needed). Writes to output_path and returns {path, format, size_bytes, sha256} — the raw file is written to disk, not inlined in the response. Read the written file for the checklist content. Refuses an existing output_path unless overwrite=true, and never writes through a symlink.
| Name | Type | Req | Description |
|---|---|---|---|
| checklist_id | string | yes | Checklist ID to export |
| format | string | – | Export format: ckl (XML) or cklb (JSON) |
| output_path | string | yes | Local path to write the exported checklist file |
| overwrite | boolean | – | Replace output_path if it already exists. |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
fail_plan ~81
Mark an active plan as failed after an unrecoverable execution error. The terminal transition is sticky. Post-mortem delivery is best-effort and cannot change the failed result.
| Name | Type | Req | Description |
|---|---|---|---|
| expected_version | integer | – | – |
| outcome_summary | string | – | Bounded failure summary. |
| plan_id | string | yes | – |
| postmortem | object | – | – |
No output schema declared.
No examples provided.
generate_control_artifacts ~151
Generate read-only AI drafts for a control narrative, evidence recommendations, and recommended issues using the same Codex agent workflow as the CLI
| Name | Type | Req | Description |
|---|---|---|---|
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| framework_id | string | yes | The framework ID |
| model | string | – | Optional: model override for the Codex agent |
| system_id | string | yes | The system ID or name |
| working_directory | string | – | Optional: local workspace path for code-aware drafting |
No output schema declared.
No examples provided.
generate_inheritance_narrative ~111
AI-generate a grounded inheritance narrative for a control, using the vendor's evidence and documentation.
| Name | Type | Req | Description |
|---|---|---|---|
| control_id | string | yes | The control ID. Use canonical IDs from list_controls. NIST/FedRAMP IDs are zero-padded (e.g., ac-02). CMMC IDs use dotted notation (e.g., AC.L2-3.1.1). |
| framework_id | string | yes | Framework ID |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
generate_risk_assessment_report ~94
Synchronously generate or reuse the Risk Assessment Report (RAR) for one system/framework. Replay with force_regenerate=false is idempotent and returns the existing document ID with already_generated=true.
| Name | Type | Req | Description |
|---|---|---|---|
| force_regenerate | boolean | – | Create a fresh report instead of reusing the current one. |
| framework_id | string | yes | Active framework ID |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
get_active_recipes ~128
Read the active recipe set for the active (or given) scope — the curated subset of the cookbook provisioned for this compliance effort — plus a provisioning proposal: the recipes runnable on this host (candidates), source kinds ready but covered by no recipe (coverage_gaps), and active recipes whose pinned version has drifted (drift). Call this during preflight to seed the active set, and whenever deciding what to run.
| Name | Type | Req | Description |
|---|---|---|---|
| framework_id | string | – | Optional framework id; defaults to the active scope. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
What is the Pretorin Compliance MCP server?
Pretorin Compliance is an MCP server listed in the public MCP registry as io.github.pretorin-ai/pretorin. Access Pretorin controls, evidence, narratives, and local Plan-backed Campaigns from AI tools. This page covers its PyPI package (pretorin).
Is the Pretorin Compliance MCP server safe to use?
Pretorin Compliance scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Pretorin Compliance MCP server expose?
Pretorin Compliance exposes 270 tools: list_frameworks, get_framework, list_control_families, list_controls, get_control, and 265 more. Their descriptions and schemas cost roughly 37,551 tokens of context every time the server is loaded.
Is the Pretorin Compliance MCP server still maintained?
Pretorin Compliance is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the Pretorin Compliance MCP server under?
Pretorin Compliance declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.