Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Pretorin Compliance

PYPI · PRETORIN · SCANNED SEP 23

Access Pretorin controls, evidence, narratives, and local Plan-backed Campaigns from AI tools.

Available components

0 this week 63 Trust /100
Trust breakdown (7 categories)

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
Install

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

# add to Claude Code
claude mcp add pretorin-ai-pretorin -- uvx pretorin
// .cursor/mcp.json
{
  "mcpServers": {
    "pretorin-ai-pretorin": {
      "command": "uvx",
      "args": [
        "pretorin"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "pretorin-ai-pretorin": {
      "command": "uvx",
      "args": [
        "pretorin"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add pretorin-ai-pretorin -- uvx pretorin
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pretorin-ai-pretorin": {
      "type": "local",
      "command": [
        "uvx",
        "pretorin"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add pretorin-ai-pretorin --command uvx --arg pretorin
# ~/.hermes/config.yaml
mcp_servers:
  pretorin-ai-pretorin:
    command: "uvx"
    args: ["pretorin"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "pretorin-ai-pretorin": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "pretorin"
      ]
    }
  }
}
# add to Vellum
assistant mcp add pretorin-ai-pretorin -t stdio -c uvx -a pretorin
// mcp.json
{
  "mcpServers": {
    "pretorin-ai-pretorin": {
      "command": "uvx",
      "args": [
        "pretorin"
      ]
    }
  }
}
Changelog

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
Diagnostics

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 →

MCP tools · 282 exposed · ~40,261 tokens

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 →

Tool Tokens
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).

NameTypeReqDescription
captionstringOptional table caption.
headersarrayyesColumn headers.
rowsarrayyesRow 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).

NameTypeReqDescription
answer_textstringyesThe 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).

NameTypeReqDescription
assessment_notestringBrief explanation of how the cited excerpt informs the assessment
finding_labelstringyesShort label for what this excerpt demonstrates
snippetsarrayyesSnippet objects returned by search_corpus or detect_control_claims
target_controlstringyesControl 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).

NameTypeReqDescription
corpus_pathstringyesCorpus JSON path returned by ingest_documents
focus_controlsarrayOptional control IDs to restrict results
max_occurrencesintegerMaximum 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).

NameTypeReqDescription
include_globsarrayOptional glob patterns to include when path is a directory
max_file_bytesintegerMaximum bytes per file; larger files are skipped with a warning
pathstringyesFile 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).

NameTypeReqDescription
corpus_pathstringyesCorpus JSON path returned by ingest_documents
querystringyesSearch query
top_kintegerMaximum 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).

NameTypeReqDescription
contentstringyesRedacted artifact content to embed
secrets_redactedintegerNumber of secret-shaped values redacted before composition
source_labelstringHuman-readable artifact label
source_locatorstringOptional section, selector, page, or line locator
source_pathstringyesWorkspace-relative path, directory, glob, or summary label for the captured artifact
source_versionstringOptional source version anchor
user_prosestringShort 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).

NameTypeReqDescription
textstringyesRaw 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.

NameTypeReqDescription
assessmentstringyes
evidence_idsarrayyes
issue_idstring
limitationsarrayyes
plan_idstringyes
step_indexintegeryes

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.

NameTypeReqDescription
dispositionstringyes
evidence_idsarrayyes
limitationsarrayyes
plan_idstringyes
reasonstringyes
step_indexintegeryes
superseding_evidence_idsarrayyes
target_control_idstring

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.

NameTypeReqDescription
dispositionstringyes
evidence_idsarrayyes
limitationsarrayyes
next_actionstring
plan_idstringyes
reasonstringyes
step_indexintegeryes

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.

NameTypeReqDescription
dispositionstringyes
evidence_idsarrayyes
issue_idstring
limitationsarrayyes
objective_uuidstringyes
plan_idstringyes
step_indexintegeryes

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.

NameTypeReqDescription
connections_checkedarrayyes
limitationsarrayyes
plan_idstringyes
recipesarrayyes
searchesarrayyes
source_kindsarrayyes
statusstringyes
step_indexintegeryes

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.

NameTypeReqDescription
logical_artifact_keystringyes
payload_digeststringyesSHA-256 of the canonical typed-writer payload; the payload is not retained.
plan_idstringyes
result_codestring
statusstringyes
step_indexintegeryes
step_refstringyes
toolstringyes

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.

NameTypeReqDescription
destinationstring
generationinteger
job_idstring
plan_idstringyes
statestringyes
step_indexintegeryes

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.

NameTypeReqDescription
risk_idstringyesRisk ID
system_idstringyesThe 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.

NameTypeReqDescription
control_idstringyesThe 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_idstringyesControl implementation ID returned by add_control_issue/get_control_issues
framework_idstringOptional: Framework ID; defaults to active scope
issue_idstringyesCanonical Issue ID
plan_idstringyesIssue treatment-plan ID
reasonstringyes
step_indexintegerCampaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign.
system_idstringOptional: 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.

NameTypeReqDescription
control_idstringyesThe 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_idstringyesFramework ID
system_idstringyesThe 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.

NameTypeReqDescription
policy_idstringyesOrganization 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.

NameTypeReqDescription
framework_idstringyesFramework ID
system_idstringyesThe 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.

NameTypeReqDescription
assessment_idstringyesAssessment ID
reasonstringOptional audit reason for reopening (255 characters or fewer)
vendor_idstringVendor ID. Pass exactly one of vendor_id or vendor_name.
vendor_namestringExact 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.

NameTypeReqDescription
control_mappingsarrayyes
family_mappingsarrayyes
framework_idstringyes
policy_idstringyes

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.

NameTypeReqDescription
allow_unverified_sourcesbooleanAllow writes when source attestation shows a mismatch. Defaults to false.
contentstringOptional: updated issue content
control_idstringyesThe 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_idstringOptional: Framework ID; defaults to active scope
is_pinnedbooleanOptional: whether the issue is pinned
is_resolvedbooleanPass false to reopen; omit to update metadata without changing lifecycle state
issue_idstringyesID of the issue to resolve or update
plan_idstringOptional: 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_idstringyesActive 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_notestringOptional closure-justification metadata; it does not close the Issue.
step_indexintegerOptional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied.
system_idstringOptional: The system ID or name

No output schema declared.

No examples provided.

resolve_control_note ~271

Deprecated alias for resolve_control_issue.

NameTypeReqDescription
allow_unverified_sourcesbooleanAllow writes when source attestation shows a mismatch. Defaults to false.
contentstringOptional: updated note content
control_idstringyesThe 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_idstringOptional: Framework ID; defaults to active scope
is_pinnedbooleanOptional: whether the note is pinned
is_resolvedbooleanPass false to reopen; omit to update metadata without changing lifecycle state
note_idstringyesID of the note to resolve or update
recipe_context_idstringyesActive 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_notestringOptional closure-justification metadata; it does not close the Issue and is stored on the canonical record.
system_idstringOptional: 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.

NameTypeReqDescription
campaign_plan_idstringyes

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.

NameTypeReqDescription
control_idstringyesThe 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_idstringyesControl implementation ID returned by add_control_issue/get_control_issues
evidence_idsarray
framework_idstringOptional: Framework ID; defaults to active scope
issue_idstringyesCanonical Issue ID
next_review_atstringyesTimezone-aware ISO 8601
plan_idstringyesIssue treatment-plan ID
review_notestringyes
step_indexintegerCampaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign.
system_idstringOptional: 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.

NameTypeReqDescription
risk_idstringyesRisk ID
system_idstringyesThe 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.

NameTypeReqDescription
acknowledge_no_ai_reviewboolean
assessment_idstringyesAssessment ID
residual_impactstringyes
residual_likelihoodstringyes
vendor_idstringyesVendor 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.

NameTypeReqDescription
acceptance_idstringyes
control_idstringyesThe 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_idstringyesControl implementation ID returned by add_control_issue/get_control_issues
framework_idstringOptional: Framework ID; defaults to active scope
issue_idstringyesCanonical Issue ID
reasonstringyes
step_indexintegerCampaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign.
system_idstringOptional: The system ID or name

No output schema declared.

No examples provided.

save_vendor_assessment_responses ~48

Upsert answer responses for a vendor assessment.

NameTypeReqDescription
answersarrayyes
assessment_idstringyesAssessment ID
vendor_idstringyesVendor 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.

NameTypeReqDescription
assessment_typestringyes
assessor_contactstring
assessor_organizationstring
descriptionstring
framework_idstringyesActive framework ID
namestringyes
notesstring
scheduled_end_datestring
scheduled_start_datestring
system_idstringyesThe system ID or name

No output schema declared.

No examples provided.

score_vendor_assessment ~40

Run advisory AI scoring over a submitted vendor assessment.

NameTypeReqDescription
assessment_idstringyesAssessment ID
vendor_idstringyesVendor 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.

NameTypeReqDescription
control_idstringOptional: 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_idstringOptional: Framework ID; defaults to active scope
include_attachedbooleanWhen query is set, include evidence already attached to control_id
include_full_detailbooleanAlias for include_metadata for callers that need full search-result detail.
include_metadatabooleanWhen query is set, request full per-result metadata and control mappings. Default false returns compact counts only.
include_unattachedbooleanWhen query is set, include scoped evidence not attached to control_id, including org policy evidence
limitintegerMaximum number of results (default 20 for listing, 5 for RAG; RAG responses are clamped to 50)
max_body_charsintegerWhen 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_similaritynumberWhen query is set, minimum semantic similarity threshold
querystringNatural-language RAG query. Provide this before creating evidence to find currently attached evidence and reusable unattached evidence.
snippet_charsintegerWhen query is set, maximum characters returned for each body-field snippet. Default: 500
snippet_onlybooleanWhen query is set, replace large body fields such as artifact_content and matched_text with short snippets. Default: true
system_idstringOptional: 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.

NameTypeReqDescription
control_idstringOptional: 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_idstringOptional framework context for the requirement.
limitintegerMaximum number of capability matches to return.
querystringyesNatural-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.

NameTypeReqDescription
limitintegerMaximum ranked section matches to return (default 5).
min_similaritynumberMinimum cosine similarity required for a match (default 0.6).
policy_idstringyesOrganization policy ID
querystringyesNatural-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.

NameTypeReqDescription
framework_idstringyesFramework ID used for scoring and auto-linking.
system_idstringyesThe system ID or name
template_idsarrayyesLibrary 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).

NameTypeReqDescription
framework_idstringOptional framework id; defaults to the active scope.
modestringHow to apply recipe_ids to the active set. Defaults to 'replace'.
recipe_idsarrayyesRecipe ids to set/add/remove (may be empty only for mode='replace').
system_idstringOptional: 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.

NameTypeReqDescription
control_idstringyesThe 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_idstringyesFramework ID
responsibility_modestringyesHow this control is handled
source_control_idstringThe 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_idstringSource org-internal system id. Required when source_type is 'org_system'.
source_typestringWhere the inheritance comes from. 'provider' for a vendor entry on the Pretorin vendor portal, 'org_system' for an org-internal system.
system_idstringyesThe system ID or name
vendor_idstringVendor 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.

NameTypeReqDescription
control_idstringyesThe 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_idstringyesControl implementation ID returned by add_control_issue/get_control_issues
framework_idstringOptional: Framework ID; defaults to active scope
issue_idstringyesCanonical Issue ID
metadataobjectyes
step_indexintegerCampaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign.
system_idstringOptional: 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.

NameTypeReqDescription
framework_idstringOptional: Framework ID; defaults to the active scope
system_idstringOptional: The system ID or name
target_scale_tierstring|nullyesDeclared 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.

NameTypeReqDescription
reasonstringyesReason for the lifecycle transition (audit trail, <=500 chars)
target_statusstringyesTarget lifecycle status
vendor_idstringyesVendor 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.

NameTypeReqDescription
notestringOptional justification/note for the acceptance.
system_idstringyesAttached system ID to accept residual risk for
vendor_idstringyesVendor 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.

NameTypeReqDescription
assessment_idstringyes
system_idstringyesThe 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.

NameTypeReqDescription
campaign_plan_idstringyes
confirmation_digeststringyesExact launch-definition digest returned by preview_campaign.
confirmedbooleanyesMust 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).

NameTypeReqDescription
control_idstringOptional: 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_idsarrayEvidence ids supplied as inputs for narrative-producing recipes. Narrative writes must cite these ids.
forcebooleanOpen 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_idstringOptional framework ID; defaults to active scope
paramsobjectInputs the calling agent supplies, validated against the recipe's params schema. Explicit params override defaults derived from matching preflight binding scope/params.
plan_idstringOptional: 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_idstringyesRecipe id (must be loadable from the registry)
recipe_versionstringyesRecipe 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…
selectionobjectStructured RecipeSelection record from the engagement layer. Stored on the context for the eventual RecipeResult.
step_indexintegerOptional: zero-based index of the plan step that triggered this write. Only meaningful when plan_id is also supplied.
system_idstringOptional: 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.

NameTypeReqDescription
active_framework_idstringThe 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_idstringThe 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_contextobject
create_new_planbooleanstart_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…
entitiesobjectyesStructured 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_hintsbooleanFor 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_idstringTrusted parent Campaign Plan ID for an assigned child. Runtime-owned; never derive this value from prompt text. Requires campaign_context.
skip_inspectbooleanSkip 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.

NameTypeReqDescription
addedarrayArray 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…
decommissionedarrayArray of {external_id, rationale} for assets to mark decommissioned.
idempotency_keystringOptional. Defaults to sha256(system_id, recipe_id, scan_timestamp)[:32].
modifiedarrayArray of changed asset rows, keyed by external_id. Same shape as added.
recipe_context_idstringOptional. UUID returned by start_recipe — set when the diff is being produced inside an active recipe execution context.
recipe_idstringyesFree-form CLI recipe id (e.g., 'asset-inventory-aws-baseline'). The platform stores this as provenance per row.
system_idstringyesThe 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.

NameTypeReqDescription
checkpoint_pathstringyesLocal campaign checkpoint path
item_idstringyesCampaign item id to update
proposalobjectyesCampaign 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.

NameTypeReqDescription
control_idstringyesThe 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_idstringyesControl implementation ID returned by add_control_issue/get_control_issues
framework_idstringOptional: Framework ID; defaults to active scope
issue_idstringyesCanonical Issue ID
plan_idstringyesIssue treatment-plan ID
step_indexintegerCampaign workers: zero-based assigned child-Plan step for this governed Issue mutation. Ignored outside a Campaign.
system_idstringOptional: 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.

NameTypeReqDescription
policy_idstringyes

No output schema declared.

No examples provided.

Common questions

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.