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.

app.scfcontrolsplatform/mcp-server-scf

NPM · MCP-SERVER-SCF · SCANNED SEP 20

MCP server for the SCF Controls Platform — 187 tools for controls, evidence, risk, and TPRM.

Available components

0 this week 95 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 Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 95 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to MarkAC007/mcp-server-scf). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 2 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability81
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 20095 tokens (~107/item across 187 items; 187 tools + 0 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 Management91
  • Stability check failed: the tool surface changed between 2.1.0 and 3.4.2: 7 tool removals, 0 breaking changes, 59 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 15 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 187 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

How do I install the app.scfcontrolsplatform/mcp-server-scf server?

app.scfcontrolsplatform/mcp-server-scf runs locally as an npm package, launched with npx -y mcp-server-scf. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · mcp-server-scf

# add to Claude Code
claude mcp add app-scfcontrolsplatform-mcp-server-scf -- npx -y mcp-server-scf
// .cursor/mcp.json
{
  "mcpServers": {
    "app-scfcontrolsplatform-mcp-server-scf": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-server-scf"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "app-scfcontrolsplatform-mcp-server-scf": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-server-scf"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add app-scfcontrolsplatform-mcp-server-scf -- npx -y mcp-server-scf
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-scfcontrolsplatform-mcp-server-scf": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "mcp-server-scf"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add app-scfcontrolsplatform-mcp-server-scf --command npx --arg -y --arg mcp-server-scf
# ~/.hermes/config.yaml
mcp_servers:
  app-scfcontrolsplatform-mcp-server-scf:
    command: "npx"
    args: ["-y", "mcp-server-scf"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "app-scfcontrolsplatform-mcp-server-scf": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "mcp-server-scf"
      ]
    }
  }
}
# add to Vellum
assistant mcp add app-scfcontrolsplatform-mcp-server-scf -t stdio -c npx -a -y mcp-server-scf
// mcp.json
{
  "mcpServers": {
    "app-scfcontrolsplatform-mcp-server-scf": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-server-scf"
      ]
    }
  }
}
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.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 88 to 91.

  • 18 Sept 26 +1
    • Package version: 2.0.1 → 3.4.2 functional
  • 16 Sept 26 −3
    • Stability: pass → fail security
  • 15 Sept 26 +15
    • Malware scan: unverified → pass security
    • Stability: 0.97 → pass security
  • 14 Sept 26 −14
    • Known CVEs: pass → unverified security
    • Stability: 0.93 → unverified security
    • Malware scan: pass → unverified security
    • Tool safety: pass → unverified security
    • Schema quality: 13281 → 20095 functional
    • Dependency health: 0.84 → unverified functional
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Security disclosure: unverified → pass functional
    • Package version: 3.0.0 → 3.4.2 functional
    • Package version: 3.0.0 → 3.4.0 functional
    • Package version: 3.0.0 → 3.2.0 functional
  • 13 Sept 26 0
    • Security disclosure: pass → unverified functional
  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

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 20 Sept 2026 · Analysed npm/mcp-server-scf@3.4.2

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo MarkAC007/mcp-server-scf
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/MarkAC007/mcp-server-scf/.github/workflows/auto-release.yml@refs/heads/main
Rekor log index 2831944435
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:864b65ab73c8ad6895c0cb94a34e8e8c77fb60f3605ce4e019c1bb0382be5675b733fdd2f861d798f63a3acd72539efffeb70c25f95b3f0000fcfba33

Background: How many MCP packages publish verified provenance →

Dependencies 95 packages
Packages resolved 95
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 187 exposed · ~20,095 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
scf_preview_document ~76

Preview a document's assembled content as structured JSON (read — viewer role) — the merged result of generated and edited sections without rendering to a file.

NameTypeReqDescription
document_idstringyesGenerated document UUID — obtain from scf_list_documents
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_refresh_stale_window_assessments ~69

Queue a fresh windowed AI assessment for every evidence item whose newest file postdates its last assessment (write — editor role). Capped per run; returns how many were queued.

NameTypeReqDescription
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_remove_custom_risk_control ~132

Unlink a scoped control from a custom risk (write — editor+ role). The control and risk both remain; only the mapping is removed.

NameTypeReqDescription
org_idstringyesOrganization UUID — obtain from scf_list_organizations
risk_codestringyesCustom risk code in R-ORG-N format (e.g., 'R-ORG-1') — obtain from scf_list_custom_risks
scf_idstringyesSCF control ID to unlink (e.g., 'AST-01') — obtain from scf_list_custom_risk_controls

No output schema declared.

No examples provided.

scf_remove_engagement_auditor ~98

Revoke an auditor's access to one engagement (destructive write — admin role). Returns no content on success.

NameTypeReqDescription
auditor_idstringyesEngagement auditor record UUID — obtain from scf_list_engagement_auditors
engagement_idstringyesAudit engagement UUID — obtain from scf_list_engagements
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_remove_team_member ~91

Remove a user from a team (destructive write — admin role). The membership row is deleted; the audit trail keeps the history.

NameTypeReqDescription
org_idstringyesOrganization UUID — obtain from scf_list_organizations
team_idstringyesTeam UUID — obtain from scf_list_teams
user_idstringyesUser UUID — obtain from scf_get_team

No output schema declared.

No examples provided.

scf_resolve_document_section ~146

Resolve one section's merge state (write — editor role). keep_mine/take_generated settle a conflict; retire/keep dispose of a pending retirement. The wrong pair for the state returns 409.

NameTypeReqDescription
choicestringyeskeep_mine / take_generated answer a conflict; retire / keep answer a pending retirement
document_idstringyesGenerated document UUID — obtain from scf_list_documents
org_idstringyesOrganization UUID — obtain from scf_list_organizations
section_idstringyesSection identifier from the document detail (scf_get_document). May contain slashes — pass it exactly as returned, unescaped.

No output schema declared.

No examples provided.

scf_respond_to_engagement_query ~115

Add a response to an auditor query (write — org member or assigned auditor). Posting a response moves an open query to answered. Returns the updated query with its full thread.

NameTypeReqDescription
contentstringyesResponse text
engagement_idstringyesAudit engagement UUID — obtain from scf_list_engagements
org_idstringyesOrganization UUID — obtain from scf_list_organizations
query_idstringyesQuery UUID — obtain from scf_list_engagement_queries

No output schema declared.

No examples provided.

scf_revalidate_evidence_file ~116

Re-run the validation engine against an evidence file (write — editor+ role). Checks catalog existence, content type, field coverage, freshness, storage. Returns the updated result.

NameTypeReqDescription
evidence_idstringyesEvidence ID (e.g., 'ERL-IAM-001') — obtain from scf_list_evidence
file_idstringyesEvidence file UUID — obtain from scf_list_evidence_files
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_review_evidence_assessment ~182

Record a human decision on a file's current AI assessment (write — editor role). confirmed keeps the verdict; overridden needs a reason and at least one objective re-designation.

NameTypeReqDescription
ao_overridesarrayObjectives to re-designate — required (≥1) when overriding, forbidden when confirming; unlisted objectives keep the AI's designation
decisionstringyesconfirmed = AI verdict stands; overridden = you are changing it
evidence_idstringyesCatalog evidence ID the file belongs to, e.g. E-IAM-01
file_idstringyesEvidence file UUID — obtain from scf_list_evidence_files
org_idstringyesOrganization UUID — obtain from scf_list_organizations
reasonstringWhy the verdict is overridden — required when decision is overridden

No output schema declared.

No examples provided.

scf_review_evidence_file ~130

Approve, reject or request revision on one uploaded file (write — editor role). Returns 410 where per-window review is enabled — use scf_review_window_assessment there.

NameTypeReqDescription
evidence_idstringyesCatalog evidence ID the file belongs to, e.g. E-IAM-01
file_idstringyesEvidence file UUID — obtain from scf_list_evidence_files
org_idstringyesOrganization UUID — obtain from scf_list_organizations
review_notesstringReviewer notes
review_statusstringyesReview decision

No output schema declared.

No examples provided.

scf_review_window_assessment ~113

Set the review state of a windowed evidence assessment (write — editor role): approved, rejected, needs_revision, or not_reviewed to revoke a prior decision.

NameTypeReqDescription
ewa_idstringyesWindow assessment UUID — obtain from scf_list_window_assessments
org_idstringyesOrganization UUID — obtain from scf_list_organizations
review_notesstringReviewer notes
review_statusstringyesReview state to set; not_reviewed revokes

No output schema declared.

No examples provided.

scf_rollback_catalog_reconciliation ~105

Roll an applied reconciliation run back (destructive write — admin role). Asynchronous, and requires the typed confirmation string the run detail states.

NameTypeReqDescription
confirm_textstringyesThe exact confirmation phrase the platform requires for this rollback
org_idstringyesOrganization UUID — obtain from scf_list_organizations
run_idstringyesReconciliation run UUID — obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation

No output schema declared.

No examples provided.

scf_rotate_webhook_secret ~82

Rotate the HMAC signing secret for a webhook endpoint (write — admin role). The old secret is invalidated immediately. Returns the new plaintext secret exactly once.

NameTypeReqDescription
endpoint_idstringyesWebhook endpoint UUID — obtain from scf_list_webhooks
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_scope_framework ~92

Bulk-scope every control mapped to a framework into the organization (write — editor+ role). Creates a scoped-control entry for each control in the framework.

NameTypeReqDescription
framework_idstringyesFramework slug to scope (e.g., 'nist-800-53-r5') — obtain from scf_list_frameworks
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_set_reconciliation_actions ~142

Record decisions for a reconciliation run (write — admin role). REPLACES the run's planned actions, so send the complete list. Each deprecated entity gets migrate, retain or retire_only.

NameTypeReqDescription
actionsarrayyesThe complete set of planned actions for this run — partial lists overwrite the rest
confirmed_framework_idsarrayOn a first reconciliation, the confirmed framework list this organization is scoping to
org_idstringyesOrganization UUID — obtain from scf_list_organizations
run_idstringyesReconciliation run UUID — obtain from scf_list_reconciliation_runs or scf_preview_catalog_reconciliation

No output schema declared.

No examples provided.

scf_transition_document ~119

Move a document through its lifecycle — draft to review, review to approved, approved to published (write — approving and publishing need admin). Valid targets are enforced by the platform.

NameTypeReqDescription
document_idstringyesGenerated document UUID — obtain from scf_list_documents
org_idstringyesOrganization UUID — obtain from scf_list_organizations
reasonstringFree-text justification recorded on the transition
to_statusstringyesTarget lifecycle status (e.g. 'in_review', 'approved', 'published')

No output schema declared.

No examples provided.

scf_trigger_evidence_assessment ~140

Queue an AI assessment of a single evidence file (write — editor+ role, async). Returns a pending record; poll scf_get_evidence_assessment until status is sufficient/partial/insufficient.

NameTypeReqDescription
assessment_sourcestringOrigin tag for the request (default on_demand)
evidence_idstringyesEvidence ID (e.g., 'ERL-IAM-001') — obtain from scf_list_evidence
file_idstringyesEvidence file UUID — obtain from scf_list_evidence_files
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_trigger_vendor_assessment ~190

Queue an AI vendor security assessment (write — editor+ role, async, HTTP 202). Replaces the deprecated DPSIA trigger. Returns assessment_id + job_id; poll scf_get_vendor_assessment_status.

NameTypeReqDescription
additional_contextstringFree-text context, scope notes, or specific concerns to feed the assessor (max 5000 chars)
assessment_typestringAssessment type: 'initial', 'annual', or 'adhoc' (default 'initial')
data_rolestringGDPR data role (default 'Processor')
org_idstringyesOrganization UUID — obtain from scf_list_organizations
services_usedstringDescription of services the vendor provides, 1–2000 chars (auto-derived from the vendor record if omitted)
vendor_idstringyesVendor UUID — obtain from scf_list_vendors

No output schema declared.

No examples provided.

scf_trigger_vendor_research ~117

Queue AI security research for a vendor (write — editor+ role, async). Checks HIBP breach data, NVD vulnerabilities, and public posture. Returns a task ID; poll scf_get_vendor_research.

NameTypeReqDescription
domain_overridestringOverride the vendor's website domain used for research lookup (e.g., 'example.com')
org_idstringyesOrganization UUID — obtain from scf_list_organizations
vendor_idstringyesVendor UUID — obtain from scf_list_vendors

No output schema declared.

No examples provided.

scf_trigger_window_assessment ~123

Queue a windowed AI assessment that scores every file in the evidence item's frequency window as one portfolio (write — editor+ role, async). Returns 422 if tracking or frequency is missing.

NameTypeReqDescription
assessment_sourcestringOrigin tag for the request (default on_demand)
evidence_idstringyesEvidence ID (e.g., 'E-IAM-01'). Tracking row with a frequency must exist — set via scf_update_evidence first
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_update_comment ~79

Edit a comment you authored (write — author only). Replaces the body and, if given, the mentions; the platform keeps the edit history.

NameTypeReqDescription
comment_idstringyesComment UUID — obtain from scf_list_comments
contentstringyesNew comment body
mentionsarrayUser UUIDs to notify

No output schema declared.

No examples provided.

scf_update_compensating_control ~160

Update a vendor compensating control (write — editor role). Only passed fields change: gap description, control text, effectiveness rating, risk-reduction notes.

NameTypeReqDescription
cc_idstringyesCompensating control UUID — obtain from scf_list_compensating_controls
compensating_controlstringThe control that offsets the gap
effectiveness_ratingstringEffectiveness (default partial)
gap_descriptionstringThe gap the control offsets
org_idstringyesOrganization UUID — obtain from scf_list_organizations
risk_reduction_notesstringHow much residual risk this removes
vendor_idstringyesVendor UUID — obtain from scf_list_vendors

No output schema declared.

No examples provided.

scf_update_custom_risk ~145

Update a custom risk definition's metadata — title, description, category (write — editor+ role). Only provided fields are applied.

NameTypeReqDescription
category_colorstringNew hex color for the category badge
category_namestringNew category label
descriptionstringNew risk description
org_idstringyesOrganization UUID — obtain from scf_list_organizations
risk_codestringyesCustom risk code in R-ORG-N format (e.g., 'R-ORG-1') — obtain from scf_list_custom_risks
titlestringNew risk title (max 100 chars)

No output schema declared.

No examples provided.

scf_update_document_section ~130

Replace one section's content with a human edit (write — editor role). Tracked as a human layer, so a later regeneration reports a conflict instead of overwriting it silently.

NameTypeReqDescription
contentstringyesFull replacement markdown body for this section
document_idstringyesGenerated document UUID — obtain from scf_list_documents
org_idstringyesOrganization UUID — obtain from scf_list_organizations
section_idstringyesSection identifier from the document detail (scf_get_document). May contain slashes — pass it exactly as returned, unescaped.

No output schema declared.

No examples provided.

scf_update_document_settings ~125

Enable or configure document generation (write — admin role). Generation stays blocked until the SCF licence is acknowledged, so the first call usually sets both enabled and acknowledge_licence.

NameTypeReqDescription
acknowledge_licencebooleanRecord acknowledgement of the SCF content licence — required once before generation is permitted
derivative_generators_enabledbooleanAllow generators that derive content from other generated documents
enabledbooleanTurn document generation on or off for this organization
org_idstringyesOrganization UUID — obtain from scf_list_organizations

No output schema declared.

No examples provided.

scf_update_engagement ~168

Update an engagement's name, frameworks, status or dates (write — editor role). Only passed fields change; status moves are caller-controlled: draft → active → under_review → closed.

NameTypeReqDescription
end_datestringFieldwork end date, ISO 8601 (YYYY-MM-DD)
engagement_idstringyesAudit engagement UUID — obtain from scf_list_engagements
frameworksarrayReplacement framework identifier list
namestringNew engagement name
org_idstringyesOrganization UUID — obtain from scf_list_organizations
start_datestringFieldwork start date, ISO 8601 (YYYY-MM-DD)
statusstringNew engagement status: draft, active, under_review or closed

No output schema declared.

No examples provided.

scf_update_engagement_query_status ~118

Move an auditor query through its lifecycle (write — org member or assigned auditor). Allowed: open → answered|closed, answered → open|closed, closed → open. Others are refused.

NameTypeReqDescription
engagement_idstringyesAudit engagement UUID — obtain from scf_list_engagements
org_idstringyesOrganization UUID — obtain from scf_list_organizations
query_idstringyesQuery UUID — obtain from scf_list_engagement_queries
statusstringyesTarget query status

No output schema declared.

No examples provided.

scf_update_evidence ~261

Upsert an evidence item's tracking fields (write — editor+ role). Creates the tracking row if missing. All body fields are optional; only provided fields are applied.

NameTypeReqDescription
collecting_systemstringName of the tool or system that collects the evidence
commentsstringFree-text notes or context
evidence_idstringyesCatalog evidence ID (e.g., 'E-IAM-01') — obtain from scf_list_evidence or scf_list_evidence_catalog
frequencystringCollection cadence: 'daily', 'weekly', 'monthly', 'quarterly', or 'annually'
is_trackedbooleanToggle active tracking for this item
maturity_levelstringEvidence maturity level L0–L5 (e.g., 'L3'); omitting never clears the stored value
method_of_collectionstringCollection approach: 'automated', 'manual', or 'hybrid'
org_idstringyesOrganization UUID — obtain from scf_list_organizations
ownerstringPerson accountable for this evidence item
system_idstringSystem UUID to link this evidence to — obtain from scf_list_systems

No output schema declared.

No examples provided.

scf_update_evidence_task ~186

Update an evidence collection task (write — editor role). Only passed fields change: due date, status, type, priority, title, description, notes, assignee, owning team.

NameTypeReqDescription
assigned_user_idstringAssignee user UUID — obtain from scf_list_members
completion_notesstringNotes recorded on completion
descriptionstringWhat has to be collected and how
due_datestringDue date, YYYY-MM-DD
owning_team_idstringTeam that owns the task — obtain from scf_list_teams
prioritystringPriority
statusstringStatus
task_idstringyesEvidence task UUID — obtain from scf_list_evidence_tasks
task_typestringTask type
titlestringTask title

No output schema declared.

No examples provided.

scf_update_risk_assessment ~251

Update a scored risk by its code (write — editor role). Only passed fields change: inherent and residual likelihood/impact 1–5, treatment status and plan, due and review dates, owner, notes.

NameTypeReqDescription
impactintegerInherent impact on a 1–5 scale
likelihoodintegerInherent likelihood on a 1–5 scale
next_review_datestringYYYY-MM-DD
notesstringFree-text notes on this risk assessment
org_idstringyesOrganization UUID — obtain from scf_list_organizations
owner_user_idstringRisk owner — obtain from scf_list_members
residual_impactintegerResidual impact after treatment, 1–5 scale
residual_likelihoodintegerResidual likelihood after treatment, 1–5 scale
risk_codestringyesRisk code — catalog R-XX-N or custom R-ORG-N
treatment_due_datestringYYYY-MM-DD
treatment_planstringHow the risk is being treated
treatment_statusstringTreatment lifecycle state

No output schema declared.

No examples provided.

scf_update_scoped_control ~303

Update a scoped control's implementation fields (write — editor+ role). Identify by scf_id, not UUID. Only provided fields are applied.

NameTypeReqDescription
assigned_tostringAssignee responsible for implementation
completion_datestringActual completion date in ISO-8601 (YYYY-MM-DD)
implementation_notesstringFree-text implementation notes and context
implementation_statusstringNew implementation status (lowercase): not_started, in_progress, implemented, ready_for_review, monitored, not_applicable, at_risk, or deferred
maturity_levelstringMaturity level with L prefix: L0 Not Performed, L1 Performed, L2 Planned, L3 Well Defined, L4 Quantitatively Controlled, L5 Continuously Improving
org_idstringyesOrganization UUID — obtain from scf_list_organizations
ownerstringAccountable owner of the control
prioritystringImplementation priority: 'high', 'medium', or 'low'
scf_idstringyesSCF control identifier in DOMAIN-NN format (e.g., 'AST-01', 'GOV-02') — NOT the UUID
selection_reasonstringJustification for scoping decision — required for not_applicable or deferred
target_datestringTarget completion date in ISO-8601 (YYYY-MM-DD)

No output schema declared.

No examples provided.

scf_update_system ~190

Update an existing system record (write — editor+ role). All fields are optional; only provided fields are applied.

NameTypeReqDescription
catalog_template_idintegerNew system-catalog template ID link — obtain from scf_list_system_catalog
categorystringNew free-text category
descriptionstringNew system description
namestringNew system name
org_idstringyesOrganization UUID — obtain from scf_list_organizations
statusstringNew lifecycle status
system_idstringyesSystem UUID to update — obtain from scf_list_systems
system_typestringNew system classification
vendorstringNew legacy free-text vendor name (prefer vendor_id)
vendor_idstringNew structural vendor link (UUID, same org) — obtain from scf_list_vendors

No output schema declared.

No examples provided.

scf_update_system_capability ~171

Update a system's evidence capability (write — editor role). Only passed fields change; move status potential → configured → active as the collector is wired up.

NameTypeReqDescription
capability_idstringyesCapability UUID — obtain from scf_list_system_capabilities
capability_statusstringCapability status
collection_methodstringHow the evidence is collected
confidence_levelstringConfidence in evidence quality
data_formatstringFormat of the collected data, e.g. 'csv', 'json', 'pdf'
notesstringFree-text notes about the capability
org_idstringyesOrganization UUID — obtain from scf_list_organizations
system_idstringyesSystem UUID — obtain from scf_list_systems

No output schema declared.

No examples provided.

scf_update_team ~143

Update a team's name, description, function alignment or active flag (write — admin role). Set is_active=false to archive; the row is never deleted.

NameTypeReqDescription
descriptionstringNew description
function_idstringNew primary business function — obtain from scf_list_functions
function_idsarrayReplacement set of additional functions the team serves
is_activebooleanfalse archives the team
namestringNew team name
org_idstringyesOrganization UUID — obtain from scf_list_organizations
team_idstringyesTeam UUID — obtain from scf_list_teams

No output schema declared.

No examples provided.

scf_update_vendor ~139

Update an existing vendor record (write — editor+ role). Only provided fields are applied.

NameTypeReqDescription
categorystringNew category label
contact_emailstringNew primary contact email
criticalitystringNew criticality tier
descriptionstringNew free-text description
namestringNew vendor name
org_idstringyesOrganization UUID — obtain from scf_list_organizations
statusstringNew lifecycle status
vendor_idstringyesVendor UUID — obtain from scf_list_vendors
websitestringNew website URL

No output schema declared.

No examples provided.

scf_update_vendor_action_item ~200

Update a vendor action item (write — editor role). Only passed fields change; set status=completed with completed_date to close it.

NameTypeReqDescription
categorystringFree-text category, e.g. 'contractual', 'technical'
completed_datestringYYYY-MM-DD
descriptionstringAction item detail
due_datestringYYYY-MM-DD
item_idstringyesAction item UUID — obtain from scf_list_vendor_action_items
org_idstringyesOrganization UUID — obtain from scf_list_organizations
owner_namestringOwner name
owner_user_idstringOwner — obtain from scf_list_members
prioritystringPriority
statusstringStatus
titlestringAction item title
vendor_idstringyesVendor UUID — obtain from scf_list_vendors

No output schema declared.

No examples provided.

scf_update_vendor_certification ~194

Update a vendor certification (write — editor role). Only passed fields change; use it to mark a certificate expired or revoked, or to record the renewed expiry date.

NameTypeReqDescription
cert_idstringyesCertification UUID — obtain from scf_list_vendor_certifications
certificate_numberstringCertificate number
certification_bodystringIssuing body
certification_namestringCertification name, e.g. 'ISO 27001:2022'
expiry_datestringYYYY-MM-DD
issue_datestringYYYY-MM-DD
org_idstringyesOrganization UUID — obtain from scf_list_organizations
scopestringCertification scope statement
statusstringStatus
vendor_idstringyesVendor UUID — obtain from scf_list_vendors
verification_urlstringPublic verification URL

No output schema declared.

No examples provided.

Common questions

What is the app.scfcontrolsplatform/mcp-server-scf server?

app.scfcontrolsplatform/mcp-server-scf is listed in the public MCP registry as app.scfcontrolsplatform/mcp-server-scf. MCP server for the SCF Controls Platform, 187 tools for controls, evidence, risk, and TPRM. This page covers its npm package (mcp-server-scf).

Is the app.scfcontrolsplatform/mcp-server-scf server safe to use?

app.scfcontrolsplatform/mcp-server-scf scores 95 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 20 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. 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 app.scfcontrolsplatform/mcp-server-scf server expose?

app.scfcontrolsplatform/mcp-server-scf exposes 187 tools: scf_list_controls, scf_get_control, scf_list_frameworks, scf_list_domains, scf_list_evidence_catalog, and 182 more. Their descriptions and schemas cost roughly 20,095 tokens of context every time the server is loaded.

Is the app.scfcontrolsplatform/mcp-server-scf server still maintained?

app.scfcontrolsplatform/mcp-server-scf is still listed as active in the MCP registry. We last reached this channel on 20 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 app.scfcontrolsplatform/mcp-server-scf server under?

app.scfcontrolsplatform/mcp-server-scf declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.