Pretorin Compliance
PYPI · PRETORIN · SCANNED SEP 23
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 Security50
- Malware scan not yet available for this package.Unverified
- 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 72 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 41809 tokens (~137/item across 305 items; 282 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 Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 75% 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 284 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.
- 23 Sept 26 0
- Stability: 0.97 → pass security
- Package version: 0.29.18 → 0.29.19 functional
- 22 Sept 26 −14
- Malware scan: pass → unverified ▼ security
- Package version: 0.29.17 → 0.29.18 functional
- 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
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 23 Sept 2026 · Analysed pypi/pretorin@0.29.19
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 72 packages
| Packages resolved | 72 |
|---|---|
| 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 →
recipe_scope_artifact_compose__render_table ~100
[Recipe scope-artifact-compose (official)] Render a brand-styled, fully-escaped HTML table for a tabular artifact (PPSM, interconnection). Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| caption | string | – | Optional table caption. |
| headers | array | yes | Column headers. |
| rows | array | yes | Row data — each row is an array of cell strings. |
No output schema declared.
No examples provided.
recipe_scope_q_answer__redact_answer ~72
[Recipe scope-q-answer (official)] Run the candidate answer through pretorin.evidence.redact and return cleaned text + counts. Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| answer_text | string | yes | The candidate answer text to redact before submission. |
No output schema declared.
No examples provided.
recipe_ssp_gap_analysis__compose_excerpt_evidence ~120
[Recipe ssp-gap-analysis (official)] Compose auditor-facing Markdown evidence from one or more cited document snippets. Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_note | string | – | Brief explanation of how the cited excerpt informs the assessment |
| finding_label | string | yes | Short label for what this excerpt demonstrates |
| snippets | array | yes | Snippet objects returned by search_corpus or detect_control_claims |
| target_control | string | yes | Control the excerpt supports or informs |
No output schema declared.
No examples provided.
recipe_ssp_gap_analysis__detect_control_claims ~104
[Recipe ssp-gap-analysis (official)] Detect NIST-style control IDs and CCI IDs in the corpus and return cited occurrences grouped by identifier. Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| corpus_path | string | yes | Corpus JSON path returned by ingest_documents |
| focus_controls | array | – | Optional control IDs to restrict results |
| max_occurrences | integer | – | Maximum occurrences returned per identifier |
No output schema declared.
No examples provided.
recipe_ssp_gap_analysis__ingest_documents ~111
[Recipe ssp-gap-analysis (official)] Extract supported document text into a local page/chunk corpus JSON file with file hashes and warnings. Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| include_globs | array | – | Optional glob patterns to include when path is a directory |
| max_file_bytes | integer | – | Maximum bytes per file; larger files are skipped with a warning |
| path | string | yes | File or directory path to ingest |
No output schema declared.
No examples provided.
recipe_ssp_gap_analysis__search_corpus ~96
[Recipe ssp-gap-analysis (official)] Search the ingested document corpus and return top cited snippets without loading the full corpus into context. Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| corpus_path | string | yes | Corpus JSON path returned by ingest_documents |
| query | string | yes | Search query |
| top_k | integer | – | Maximum number of snippets to return |
No output schema declared.
No examples provided.
recipe_workspace_capture__compose_artifact ~162
[Recipe workspace-capture (official)] Compose an auditor-facing Markdown evidence body with provenance for any workspace artifact. Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | Redacted artifact content to embed |
| secrets_redacted | integer | – | Number of secret-shaped values redacted before composition |
| source_label | string | – | Human-readable artifact label |
| source_locator | string | – | Optional section, selector, page, or line locator |
| source_path | string | yes | Workspace-relative path, directory, glob, or summary label for the captured artifact |
| source_version | string | – | Optional source version anchor |
| user_prose | string | – | Short explanation of what the artifact demonstrates |
No output schema declared.
No examples provided.
recipe_workspace_capture__redact_secrets ~66
[Recipe workspace-capture (official)] Run pretorin's secret redactor over the supplied workspace artifact text. Requires an active recipe execution context for this recipe (call start_recipe first).
| Name | Type | Req | Description |
|---|---|---|---|
| text | string | yes | Raw artifact text to scan and redact |
No output schema declared.
No examples provided.
record_campaign_assessment ~124
Record the independent assessment axis only for a Campaign item that has no frozen objective roster. Objective-backed items must instead use record_campaign_objective_disposition exactly once per UUID; their aggregate assessment is derived. grounded requires scoped evidence, gap requires an authoritative control-gap Issue, and needs_input requires a limitation. This does not alter execution or review.
| Name | Type | Req | Description |
|---|---|---|---|
| assessment | string | yes | – |
| evidence_ids | array | yes | – |
| issue_id | string | – | – |
| limitations | array | yes | – |
| plan_id | string | yes | – |
| step_index | integer | yes | – |
No output schema declared.
No examples provided.
record_campaign_evidence_disposition ~126
Record retained, remapped, superseded, or needs_input for the frozen evidence artifact/set. The server verifies every evidence ID remains inside the assigned control. Remapping requires a matching typed evidence_link artifact; superseding records replacements without deleting data.
| Name | Type | Req | Description |
|---|---|---|---|
| disposition | string | yes | – |
| evidence_ids | array | yes | – |
| limitations | array | yes | – |
| plan_id | string | yes | – |
| reason | string | yes | – |
| step_index | integer | yes | – |
| superseding_evidence_ids | array | yes | – |
| target_control_id | string | – | – |
No output schema declared.
No examples provided.
record_campaign_issue_disposition ~108
Record one bounded outcome for the exact frozen Issue. The server re-reads the assigned canonical Issue and verifies lifecycle state and evidence before persisting it. This does not approve treatment, accept risk, or void an Issue.
| Name | Type | Req | Description |
|---|---|---|---|
| disposition | string | yes | – |
| evidence_ids | array | yes | – |
| limitations | array | yes | – |
| next_action | string | – | – |
| plan_id | string | yes | – |
| reason | string | yes | – |
| step_index | integer | yes | – |
No output schema declared.
No examples provided.
record_campaign_objective_disposition ~105
Record one bounded process disposition for one frozen assessment-objective UUID. grounded requires persisted evidence IDs; needs_input requires a concrete limitation. This does not approve the parent control and stores no narrative body.
| Name | Type | Req | Description |
|---|---|---|---|
| disposition | string | yes | – |
| evidence_ids | array | yes | – |
| issue_id | string | – | – |
| limitations | array | yes | – |
| objective_uuid | string | yes | – |
| plan_id | string | yes | – |
| step_index | integer | yes | – |
No output schema declared.
No examples provided.
record_campaign_preflight ~183
Deprecated compatibility tool for Campaign records created before coordinator-owned preflight snapshots. Current Campaign worker profiles do not expose this tool: preflight runs once before dispatch and children read the frozen snapshot. Connection, source, status, and search facts are normalized from the server's current local preflight authority and this attempt's recorded reads; caller values cannot manufacture them. Recipe IDs must be trusted built-ins and selected recipes must match an active content pin. This stores bounded decisions and limitations, not evidence bodies. An unavailable source is a limitation and never prevents best-effort assessment.
| Name | Type | Req | Description |
|---|---|---|---|
| connections_checked | array | yes | – |
| limitations | array | yes | – |
| plan_id | string | yes | – |
| recipes | array | yes | – |
| searches | array | yes | – |
| source_kinds | array | yes | – |
| status | string | yes | – |
| step_index | integer | yes | – |
No output schema declared.
No examples provided.
record_campaign_resource_receipt ~147
Record a content-free skipped or terminal-error outcome that no typed writer can observe. The server derives the logical idempotency key from the parent Plan, child Plan, structural version, step ref, and stable artifact identity. Reusing that identity with different content is a hard conflict.
| Name | Type | Req | Description |
|---|---|---|---|
| logical_artifact_key | string | yes | – |
| payload_digest | string | yes | SHA-256 of the canonical typed-writer payload; the payload is not retained. |
| plan_id | string | yes | – |
| result_code | string | – | – |
| status | string | yes | – |
| step_index | integer | yes | – |
| step_ref | string | yes | – |
| tool | string | yes | – |
No output schema declared.
No examples provided.
record_campaign_review ~82
Record the existing platform review job/generation for the assigned child Plan. This is an observer correlation, not a local approval or review decision.
| Name | Type | Req | Description |
|---|---|---|---|
| destination | string | – | – |
| generation | integer | – | – |
| job_id | string | – | – |
| plan_id | string | yes | – |
| state | string | yes | – |
| step_index | integer | yes | – |
No output schema declared.
No examples provided.
refresh_risk_summary ~83
Re-score the risk and trigger a best-effort AI summary refresh. The endpoint always returns 200 with the latest entry — the re-score commits regardless of AI availability. To confirm AI ran, check whether ai_summary_generated_at advanced after the call.
| Name | Type | Req | Description |
|---|---|---|---|
| risk_id | string | yes | Risk ID |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
reject_issue_plan ~213
Reject a submitted canonical Issue treatment plan. Runs no readiness checks — an incomplete plan is still rejectable — and leaves gate_status and the Issue's lifecycle_status unchanged.
| 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_id | string | yes | Issue treatment-plan ID |
| reason | 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.
remove_control_responsibility ~102
Remove an inheritance edge, making the control system-specific.
| 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.
reopen_policy ~69
Reopen an approved policy for editing (regress it to draft, clearing approval and bumping the version). Records a monitoring regression event + audit. Use before update_policy_narrative, answering questions, or regenerating when the policy is approved.
| Name | Type | Req | Description |
|---|---|---|---|
| policy_id | string | yes | Organization policy ID |
No output schema declared.
No examples provided.
reopen_scope ~74
Reopen a completed scope for editing (regress it to in_progress). Records a monitoring regression event + audit. Use before update_scope_narrative, answering questions, or regenerating when the scope is completed.
| Name | Type | Req | Description |
|---|---|---|---|
| framework_id | string | yes | Framework ID |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
reopen_vendor_assessment ~162
Reopen a reviewed vendor assessment for correction, moving it to in_progress. This revokes any live vendor portal link, resets the AI advisory to not_run, and retains the prior review as a superseded review_revision. AI scoring must be re-run after resubmission, or the next review must set acknowledge_no_ai_review=true. Only reviewed assessments can be reopened. Pass exactly one of vendor_id or vendor_name.
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_id | string | yes | Assessment ID |
| reason | string | – | Optional audit reason for reopening (255 characters or fewer) |
| vendor_id | string | – | Vendor ID. Pass exactly one of vendor_id or vendor_name. |
| vendor_name | string | – | Exact vendor name. Pass exactly one of vendor_id or vendor_name. |
No output schema declared.
No examples provided.
replace_policy_mappings ~59
Atomically replace only one framework's policy mappings; unrelated frameworks remain unchanged.
| Name | Type | Req | Description |
|---|---|---|---|
| control_mappings | array | yes | – |
| family_mappings | array | yes | – |
| framework_id | string | yes | – |
| policy_id | string | yes | – |
No output schema declared.
No examples provided.
resolve_control_issue ~378
Reopen or update one existing control Issue while evaluating it through the bounded issue-evaluate recipe. This cannot create child Issues or close through generic metadata update. Closure is governed: use verify_issue after treatment or void_issue for a finding that was never valid.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified_sources | boolean | – | Allow writes when source attestation shows a mismatch. Defaults to false. |
| content | string | – | Optional: updated issue content |
| 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 |
| is_pinned | boolean | – | Optional: whether the issue is pinned |
| is_resolved | boolean | – | Pass false to reopen; omit to update metadata without changing lifecycle state |
| issue_id | string | yes | ID of the issue to resolve or update |
| 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-evaluate recipe context id from start_recipe. May be a single-control context or a family (multi-control) context for this control's system + framework. |
| resolution_note | string | – | Optional closure-justification metadata; it does not close the 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 |
No output schema declared.
No examples provided.
resolve_control_note ~271
Deprecated alias for resolve_control_issue.
| Name | Type | Req | Description |
|---|---|---|---|
| allow_unverified_sources | boolean | – | Allow writes when source attestation shows a mismatch. Defaults to false. |
| content | string | – | Optional: updated note content |
| 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 |
| is_pinned | boolean | – | Optional: whether the note is pinned |
| is_resolved | boolean | – | Pass false to reopen; omit to update metadata without changing lifecycle state |
| note_id | string | yes | ID of the note to resolve or update |
| 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 +… |
| resolution_note | string | – | Optional closure-justification metadata; it does not close the Issue and is stored on the canonical record. |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
resume_campaign ~54
Nonblockingly adopt or resume an exact confirmed Plan-backed Campaign through the shared coordinator. Unconfirmed drafts require explicit start_campaign confirmation; eligible failed items are reopened without rebuilding the frozen hierarchy.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_plan_id | string | yes | – |
No output schema declared.
No examples provided.
review_issue_opa ~237
Record a periodic authorized review of an APPROVED CMMC Operational Plan of Action. Only valid on an approved plan whose kind is cmmc_opa.
| 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 | – | – |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| issue_id | string | yes | Canonical Issue ID |
| next_review_at | string | yes | Timezone-aware ISO 8601 |
| plan_id | string | yes | Issue treatment-plan ID |
| review_note | 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.
review_risk ~64
Record an explicit completed review of one risk and reset its review cadence. Use only after inspecting the risk, its linked controls/evidence, scoring, and treatment.
| Name | Type | Req | Description |
|---|---|---|---|
| risk_id | string | yes | Risk ID |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
review_vendor_assessment ~85
Finalize a vendor assessment with reviewer residual likelihood and impact. Set acknowledge_no_ai_review when finalizing without a successful AI advisory summary.
| Name | Type | Req | Description |
|---|---|---|---|
| acknowledge_no_ai_review | boolean | – | – |
| assessment_id | string | yes | Assessment ID |
| residual_impact | string | yes | – |
| residual_likelihood | string | yes | – |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
revoke_issue_risk_acceptance ~232
Withdraw an active Issue risk acceptance. Unlike the other governed writes this has no Issue-lifecycle restriction — it works on a verification_pending, closed, or voided Issue — and it can demote the control's approval gate. Only an active acceptance is revocable.
| Name | Type | Req | Description |
|---|---|---|---|
| acceptance_id | 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 |
| reason | 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.
save_vendor_assessment_responses ~48
Upsert answer responses for a vendor assessment.
| Name | Type | Req | Description |
|---|---|---|---|
| answers | array | yes | – |
| assessment_id | string | yes | Assessment ID |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
schedule_assessment ~132
Schedule a formal assessment against the active system/framework so it can be started and displayed in the Auditor Portal. The scheduled end date must be on or after the scheduled start date.
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_type | string | yes | – |
| assessor_contact | string | – | – |
| assessor_organization | string | – | – |
| description | string | – | – |
| framework_id | string | yes | Active framework ID |
| name | string | yes | – |
| notes | string | – | – |
| scheduled_end_date | string | – | – |
| scheduled_start_date | string | – | – |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
score_vendor_assessment ~40
Run advisory AI scoring over a submitted vendor assessment.
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_id | string | yes | Assessment ID |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
search_evidence ~432
Search evidence within exactly one active system/framework scope. With query, performs RAG semantic search over attached evidence and scoped unattached evidence, including org policy documents, so agents can reuse existing evidence before creating new artifacts. Without query, lists evidence linked to control_id or the current framework scope.
| Name | Type | Req | Description |
|---|---|---|---|
| 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). |
| framework_id | string | – | Optional: Framework ID; defaults to active scope |
| include_attached | boolean | – | When query is set, include evidence already attached to control_id |
| include_full_detail | boolean | – | Alias for include_metadata for callers that need full search-result detail. |
| include_metadata | boolean | – | When query is set, request full per-result metadata and control mappings. Default false returns compact counts only. |
| include_unattached | boolean | – | When query is set, include scoped evidence not attached to control_id, including org policy evidence |
| limit | integer | – | Maximum number of results (default 20 for listing, 5 for RAG; RAG responses are clamped to 50) |
| max_body_chars | integer | – | When query is set and snippet_only is false, maximum characters to keep per body field. Use a positive value to opt into capped body content. Default: 0 |
| min_similarity | number | – | When query is set, minimum semantic similarity threshold |
| query | string | – | Natural-language RAG query. Provide this before creating evidence to find currently attached evidence and reusable unattached evidence. |
| snippet_chars | integer | – | When query is set, maximum characters returned for each body-field snippet. Default: 500 |
| snippet_only | boolean | – | When query is set, replace large body fields such as artifact_content and matched_text with short snippets. Default: true |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
search_platform_capabilities ~188
Search the product-facing Pretorin Platform Capability Index for features that can satisfy a compliance requirement. Call this before creating local tracking documents, spreadsheets, registers, or placeholder artifacts; if Pretorin has a matching platform surface, use that surface as the system of record. Unauthenticated.
| Name | Type | Req | Description |
|---|---|---|---|
| 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). |
| framework_id | string | – | Optional framework context for the requirement. |
| limit | integer | – | Maximum number of capability matches to return. |
| query | string | yes | Natural-language requirement or proposed local artifact, e.g. 'vendor management system for third-party risk' or 'POA&M weakness tracking with milestones'. |
No output schema declared.
No examples provided.
search_policy_narrative ~143
Search one org policy's generated narrative for a natural-language concept. Use this as the supported first step for 'does this policy cover X?' questions before reading every section or editing the policy. Returns ranked section matches with stable section IDs, titles, similarity scores, and short excerpts; an empty matches list means no section met the requested similarity threshold.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum ranked section matches to return (default 5). |
| min_similarity | number | – | Minimum cosine similarity required for a match (default 0.6). |
| policy_id | string | yes | Organization policy ID |
| query | string | yes | Natural-language policy coverage question or concept. |
No output schema declared.
No examples provided.
seed_risks ~100
Bulk-seed risks from org-level library templates. Auto-links controls per template's suggested_control_families when the system has ControlImplementation rows for the given framework. Returns the seeded entries; raises 400 if no template ids resolve.
| Name | Type | Req | Description |
|---|---|---|---|
| framework_id | string | yes | Framework ID used for scoring and auto-linking. |
| system_id | string | yes | The system ID or name |
| template_ids | array | yes | Library template IDs to instantiate. |
No output schema declared.
No examples provided.
set_active_recipes ~205
Edit the active recipe set for the active (or given) scope and persist it on the preflight artifact. mode='replace' (default) sets the active set to exactly recipe_ids; 'add' activates them and re-pins reviewed same-version, same-source content drift; 'remove' deactivates them. Seed the set from get_active_recipes' candidates during preflight, then adjust as the effort evolves. Ids not in the cookbook are skipped and reported. Establishing an active set makes it the confirmed menu: start_recipe then refuses recipes outside it (unless force=true).
| Name | Type | Req | Description |
|---|---|---|---|
| framework_id | string | – | Optional framework id; defaults to the active scope. |
| mode | string | – | How to apply recipe_ids to the active set. Defaults to 'replace'. |
| recipe_ids | array | yes | Recipe ids to set/add/remove (may be empty only for mode='replace'). |
| system_id | string | – | Optional: The system ID or name |
No output schema declared.
No examples provided.
set_control_responsibility ~263
Create or update an inheritance edge for a control. Set responsibility_mode to 'inherited' or 'shared', with source_type and optional vendor_id.
| 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 |
| responsibility_mode | string | yes | How this control is handled |
| source_control_id | string | – | The control id on the source side. Defaults to the target control_id when omitted, which fits the common vendor-inheritance case where the source covers the same control concept. |
| source_system_id | string | – | Source org-internal system id. Required when source_type is 'org_system'. |
| source_type | string | – | Where the inheritance comes from. 'provider' for a vendor entry on the Pretorin vendor portal, 'org_system' for an org-internal system. |
| system_id | string | yes | The system ID or name |
| vendor_id | string | – | Vendor provider id from the Pretorin vendor portal. Required when source_type is 'provider'. |
No output schema declared.
No examples provided.
set_issue_poam_metadata ~183
Replace the Issue-owned facts consumed by formal POA&M projections.
| 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 |
| metadata | object | 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.
set_target_scale_tier ~111
Declare or clear the system's target scale tier for a framework scope. The response includes the declared, derived, and effective tiers; pass null to clear the override and fall back to the derived tier.
| Name | Type | Req | Description |
|---|---|---|---|
| framework_id | string | – | Optional: Framework ID; defaults to the active scope |
| system_id | string | – | Optional: The system ID or name |
| target_scale_tier | string|null | yes | Declared target tier. Use null to clear the override and use the derived tier. |
No output schema declared.
No examples provided.
set_vendor_lifecycle ~106
Transition a vendor to a new lifecycle status (onboarding, active, inactive). Requires the server-side `vendor.pii` scope (or an admin token); the platform returns 403 if the token is not authorized. A non-empty reason (<=500 chars) is required.
| Name | Type | Req | Description |
|---|---|---|---|
| reason | string | yes | Reason for the lifecycle transition (audit trail, <=500 chars) |
| target_status | string | yes | Target lifecycle status |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
sign_vendor_residual_acceptance ~104
Sign authorizing-official acceptance of a vendor's residual risk for one attached system. Idempotent per (vendor, system). Requires the org's evidence attestation-envelope capability and attestation process mode; when signing is disabled the tool returns a clear error.
| Name | Type | Req | Description |
|---|---|---|---|
| note | string | – | Optional justification/note for the acceptance. |
| system_id | string | yes | Attached system ID to accept residual risk for |
| vendor_id | string | yes | Vendor ID |
No output schema declared.
No examples provided.
start_assessment ~71
Start a scheduled formal assessment and queue its immutable auditor snapshot. Starting before its scheduled start date is rejected. Replay is a no-op once the snapshot is freezing or frozen; use get_assessment to poll.
| Name | Type | Req | Description |
|---|---|---|---|
| assessment_id | string | yes | – |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
start_campaign ~86
Confirm an exact frozen Campaign preview by digest and start its detached shared coordinator. Returns immediately; use get_campaign or the informational same-host CLI watch command to observe it.
| Name | Type | Req | Description |
|---|---|---|---|
| campaign_plan_id | string | yes | – |
| confirmation_digest | string | yes | Exact launch-definition digest returned by preview_campaign. |
| confirmed | boolean | yes | Must be exactly true after the human has accepted the displayed frozen effects. |
No output schema declared.
No examples provided.
start_recipe ~743
Open a recipe execution context. Returns a context_id the caller passes on subsequent platform-API write tool calls so audit metadata is stamped with producer_kind='recipe' automatically. Pass control_id to pin the context to a single control; OMIT control_id to open a FAMILY (multi-control) context scoped to system_id + framework_id — one family context stamps writes for every control in that scope, so a family/campaign run can author N controls without reopening a context per control (each write still names its own control_id). The response 'scope' field reports 'control' or 'family'. One recipe per session at a time (nesting forbidden in v1). Contexts auto-expire after 1 hour of inactivity. When executing a declared Plan recipe step, pass plan_id and step_index; the step must be in_progress and its recipe id/version must match. Only the resulting start/end receipt permits that step to complete. Opening a context is a platform write, so it is refused when the resolved system/framework doesn't match the active context; switch the active context with `pretorin context set` to target another scope. It is also refused when a source kind the recipe requires is verified missing in the local preflight verdict, or — on a provisioned scope — when the recipe is not in the active set or its pinned version/content/source has drifted (re-activate same-version/same-source content; replace a changed version/source pin; or pass force=true to run it ad hoc).
| Name | Type | Req | Description |
|---|---|---|---|
| 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). |
| evidence_ids | array | – | Evidence ids supplied as inputs for narrative-producing recipes. Narrative writes must cite these ids. |
| force | boolean | – | Open the context ad hoc even when a required source kind is verified missing in the preflight verdict, OR when the recipe is not in the scope's active set or has drifted on a provisioned scope. Defau… |
| framework_id | string | – | Optional framework ID; defaults to active scope |
| params | object | – | Inputs the calling agent supplies, validated against the recipe's params schema. Explicit params override defaults derived from matching preflight binding scope/params. |
| 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_id | string | yes | Recipe id (must be loadable from the registry) |
| recipe_version | string | yes | Recipe version the caller intends to run. Required. Read this from `get_recipe(recipe_id).manifest.version` (or the `version` field returned by `list_recipes`) before calling — passing a hard-coded v… |
| selection | object | – | Structured RecipeSelection record from the engagement layer. Stored on the context for the eventual RecipeResult. |
| 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.
start_task ~575
Route a user prompt to the right workflow. Call this after check_context whenever the user references compliance work (a control, system, framework, questionnaire, source preflight, or campaign). The calling agent extracts entities from the user prompt and supplies them as structured args; pretorin applies deterministic rules to pick a workflow and bundles the platform read-state (workflow_state, compliance_status, pending items) into the response. The agent then reads the selected workflow's body via get_workflow and follows it. ARGUMENT SHAPE: all prompt-derived fields (intent_verb, raw_prompt, system_id, framework_id, control_ids, scope_question_ids, policy_id, policy_question_ids) MUST be nested inside the `entities` object. Only `active_system_id`, `active_framework_id`, `skip_inspect`, `create_new_plan`, `parent_plan_id`, and `campaign_context` live at the top level — those come from the CLI runtime, not the user prompt. Flattening prompt entities to the top level is a common caller bug: such top-level copies are ignored by the handler (not read, not rejected), so the route is decided from `entities` alone and the misplaced fields silently have no effect.
| Name | Type | Req | Description |
|---|---|---|---|
| active_framework_id | string | – | The user's active CLI context framework_id, if any. Used by inspect_status when the user asks for current status without naming a framework explicitly. |
| active_system_id | string | – | The user's active CLI context system_id, if any. Used to detect cross-system writes — when the resolved system doesn't match this, the response is ambiguous. |
| campaign_context | object | – | – |
| create_new_plan | boolean | – | start_task reuses an existing non-terminal Plan in the identical execution context instead of creating a duplicate: a single match is adopted and returned as `plan_id`, while two or more come back in… |
| entities | object | yes | Structured entities extracted from the user prompt. intent_verb and raw_prompt are required; everything else is optional and only populated when the user actually named it. All prompt-derived entitie… |
| include_source_hints | boolean | – | For single-control start_task responses, return full source_hints instead of compact hint summaries. Multi-control responses return bounded per-control summaries; call check_sources for full detail.… |
| parent_plan_id | string | – | Trusted parent Campaign Plan ID for an assigned child. Runtime-owned; never derive this value from prompt text. Requires campaign_context. |
| skip_inspect | boolean | – | Skip the server-side platform reads. Use when the calling agent already has fresh state. |
No output schema declared.
No examples provided.
submit_asset_inventory_diff ~383
Submit an asset-inventory diff produced by a recipe-driven scan. At least one of `added` / `modified` / `decommissioned` must be non-empty. `recipe_id` is a free-form CLI string the platform records as `cli:<recipe_id>` provenance per row. `idempotency_key` defaults to sha256(system_id, recipe_id, scan_timestamp); pass your own when replaying a scan. `recipe_context_id` (from start_recipe) is optional — the diff endpoint accepts it cleanly but does not require it.
| Name | Type | Req | Description |
|---|---|---|---|
| added | array | – | Array of new asset rows. Required per row: external_id. Recommended: name, asset_type, environment, data_classification, criticality. The platform validates these enums (a wrong value is a 422): asse… |
| decommissioned | array | – | Array of {external_id, rationale} for assets to mark decommissioned. |
| idempotency_key | string | – | Optional. Defaults to sha256(system_id, recipe_id, scan_timestamp)[:32]. |
| modified | array | – | Array of changed asset rows, keyed by external_id. Same shape as added. |
| recipe_context_id | string | – | Optional. UUID returned by start_recipe — set when the diff is being produced inside an active recipe execution context. |
| recipe_id | string | yes | Free-form CLI recipe id (e.g., 'asset-inventory-aws-baseline'). The platform stores this as provenance per row. |
| system_id | string | yes | The system ID or name |
No output schema declared.
No examples provided.
submit_campaign_proposal ~73
Deprecated checkpoint compatibility only. Persist one external-agent proposal on a legacy prepared item without applying it. Plan-backed workers publish through typed MCP writers.
| Name | Type | Req | Description |
|---|---|---|---|
| checkpoint_path | string | yes | Local campaign checkpoint path |
| item_id | string | yes | Campaign item id to update |
| proposal | object | yes | Campaign proposal payload |
No output schema declared.
No examples provided.
submit_issue_plan ~196
Submit a complete canonical Issue treatment plan for approval review. The reviewer then calls approve_issue_plan or reject_issue_plan.
| 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_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.
submit_policy_for_review ~34
Submit a ready policy for first-party human review. This cannot approve a policy.
| Name | Type | Req | Description |
|---|---|---|---|
| policy_id | string | yes | – |
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 63 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 23 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 282 tools: list_frameworks, get_framework, list_control_families, list_controls, get_control, and 277 more. Their descriptions and schemas cost roughly 40,261 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 23 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.