durinMCP IndexSuggest Provider

MCP Security Index methodology

A reproducible framework for comparing demonstrated safeguards, approval flows and advisory response across MCP providers.

Version 5Durin
Dated edition

Abstract

The Durin MCP Security Index compares public posture using independently collected documentation, endpoint and package evidence. Version 5 extends public capture receipts across package registries, publisher attribution, security contacts and advisory queries. Public posture score, public evidence confidence and runtime assurance remain separate. Category budgets, weighted subcriteria, confidence thresholds and the minimum evidence floor are unchanged.

A high score means the applicable baseline is supported by evidence. It is not a probability of safety, a certification, or proof that every deployed operation enforces the documented controls. Assessments are deterministic: collection, matching, scoring and ranking make no language-model calls.

Scope and units of comparison

The unit of assessment is a resolved MCP identity and its observed package release or endpoint scope. Providers are ranked within deployment cohorts because hosted services, installable packages and bridges expose different evidence. Functional categories such as productivity or identity support discovery; they do not change security scores or cohort ranks.

The MCP specification describes tools as model-controlled and recommends a human decision point for tool invocations. CoSAI identifies access control, tool design, human oversight and lifecycle governance as security concerns. The index adapts these themes into its own evidence requirements; the numerical weights are Durin policy. [2] [1]

MCP authorization is optional. A successful unauthenticated initialize request can serve a public endpoint or precede per-tool authentication. It does not by itself demonstrate an authentication bypass. The index records that case as unknown for the authentication-boundary check, rather than failed or not applicable. A 401 challenge can establish an observed boundary, but does not verify authorization of every action. [7] [8]

Table 1. Assessment cohorts
CohortAssessment unitEvidence boundary
Hosted servicesA public HTTPS endpoint and its stated configurationService documentation, public MCP definitions, transport and authorization metadata. Deployed server code and authenticated definitions may be inaccessible.
Local packagesAn exact registry package releaseRegistry identity, artifact metadata, published advisories and attributable documentation. Package code is not executed.
MCP bridgesA bridge package and its connection modelPackage evidence and declared mediation or execution-host controls. A bridge does not establish the safeguards of every upstream service.

Ranks are comparable within a cohort and assessment policy. A category filter preserves the original cohort ranks.

Evidence, uncertainty and confidence

Evidence is attached to an identity, a stable control ID, a source and an observation time. A criterion's freshness window determines when its evidence expires. Attributed documentation can establish a declared capability, while runtime verification requires evidence appropriate to that control. One does not silently become the other.

SLSA provenance concerns verifiable information about how an artifact was produced. The index distinguishes registry digests and provenance metadata from independent verification of their claims. Metadata inspection does not execute the artifact or establish the security of its behavior. [4]

MCP security guidance addresses authorization context, token handling and scope minimization. In this index, published OAuth and identity metadata establish observable configuration; they do not validate every runtime access decision. [3]

Missing mandatory evidence, an incomplete or expired assessment, active compromise, an unresolved affected release or insufficient assessed weight can prevent ranking. At least 20 category-budget units must have evidence. Confidence and evidence coverage are reported separately from the baseline score; a failed or partial required check cannot establish that there are no known findings.

Public posture describes what an independent observer can substantiate without publisher credentials or invoking tools. A positive documentation result establishes a published capability claim; a verified metadata result establishes the observed declaration or response. Neither establishes enforcement of a sensitive operation. Missing, unreachable or unmatched evidence remains unknown and earns no credit. A completed documentation search is not proof that a capability is absent. [7] [9]

Public evidence confidence uses the scored baseline only. High requires at least 80% known weighted coverage and 80% qualified capture coverage; Medium requires at least 50% of each. A qualified capture identifies its collector, public sources, SHA-256 digests, bounded passages or normalized observations, and collection time. Source-content receipts hash the fetched response text; advisory query receipts hash a retained normalized query manifest instead. Sources must link to the evidence record and have been collected or actually reconfirmed within 30 days. Reusing a cached fact or recalculating rankings does not renew its collection time. Old records without captures cannot automatically gain stronger confidence. The existing 180-day scoring expiry remains separate; hourly advisory freshness still applies.

Runtime assurance is reported separately as Not tested or scoped checks with test artifacts. A test must name its action, configuration and evidence artifact; it may support a pass or a failure. An observed HTTP status, registry digest, OAuth declaration, documentation match or tool annotation never becomes runtime enforcement proof. High confidence in public posture can coexist with runtime assurance Not tested. [9]

Table 2. Evidence states and their treatment
StateMeaningScoring treatment
VerifiedEvidence satisfies the verification requirement of the control.Uses the control's verified credit. Timed advisory credit also requires remediation evidence.
Documented onlyAn attributable source describes a capability; deployed enforcement has not been independently established.Earns the control's documented credit. The baseline can accept full documentation credit; advanced controls can require stronger evidence.
UnknownEvidence is missing, inaccessible, incomplete or expired.Earns zero. Applicable baseline points remain in the denominator.
FailedEvidence demonstrates that the control is not met.Earns zero. The finding remains visible.
Not applicableThe criterion explicitly permits exclusion for this configuration.Excluded from applicable points. Unsupported exclusions become unknown.

The control catalog gives the exact documented and verified credit rules. These states describe evidence, not an overall security verdict.

Table 3. Three distinct assessment outputs
OutputWhat it establishesWhat it does not establish
Public posture scoreWeighted evidence for the published safeguard baseline; unknown checks earn zero.Probability of safety or protection of every deployed action.
Public evidence confidenceKnown coverage and fresh linked captures of sources or observations.Independent runtime verification or a security certification.
Runtime assuranceExplicitly scoped behavioral evidence with a test artifact, when supplied.Untested operations, accounts, configurations or tenants.

The confidence thresholds are evidence-quality policy, not an attempt to assign a target fraction of providers a High label.

Public capture completeness and attestations

Public-source capture does not require a publisher to participate in the assessment. Collectors preserve the source URL, response digest, collector identity and observation time alongside independently observed facts. Package receipts bind to the registry, package name, exact version and recorded artifact digest. Publisher receipts bind to the endpoint and publisher identity. A changed subject, malformed response, unavailable page or incomplete required source collection cannot manufacture a qualified receipt.

Publisher attribution can be supported by a fresh exact namespace lookup in the official MCP Registry. Domain-based namespaces indicate control of the corresponding domain. For a pinned catalog attribution, a configured public document must name the publisher and exact endpoint before it can receive a public document receipt. An internal catalog record alone is insufficient capture proof. Publisher attribution does not establish that the service is safe. [12]

Advisory receipts describe a bounded query against the currently released configured corpus. The retained manifest identifies the resolved subject, source checkpoints and successful collection times, immutable advisory revision digests, matched records and remediation observations. Its digest covers that normalized query manifest, rather than claiming to hash an upstream HTTP response. Missing or stale required sources, unresolved subjects and incomplete assessments do not receive qualified query receipts. No match means no match in this corpus; it does not establish the absence of undisclosed vulnerabilities. [6]

These receipts are unsigned observer records, not publisher attestations. Existing public provenance and signed attestations can identify a producer and artifact, but their signatures and claims must be verified under an explicit trust policy before they can support stronger assurance. This collection release does not issue publisher attestations or automatically verify every public attestation. Signing an unchanged claim alone does not increase its confidence or score. [13] [14] [15]

Capture completeness describes how much observed evidence has reproducible collection material. Control evidence coverage describes how much of the scored baseline is known. Improving one cannot fill gaps in the other. Public receipts preserve documented or observed evidence states; they do not prove human approval enforcement, tenant isolation or other runtime behavior. Those claims require scoped tests and their artifacts. No tools or package code are executed to collect these receipts.

Table 4. Public receipts and their assurance boundary
Public sourceCaptured factAssurance boundary
npm and PyPI metadataExact release identity, listed artifact digest, release date and advertised provenance metadataRegistry declarations only; no artifact execution or automatic provenance signature verification
MCP Registry or configured public attribution pageExact domain namespace or publisher and endpoint declarationIdentity attribution; not a safety certification
security.txt or repository security policyPublic disclosure contact or policy and source response digestA published contact; no guarantee of response or remediation
Configured advisory corpusSubject-specific query, source checkpoints, revision digests and matched remediation recordsBounded known findings; no global absence claim
Documentation and MCP metadataMatched public passages, declarations and endpoint observationsDeclared capability or observed response; no sensitive-action enforcement proof

Only actual successful captures qualify. Bounded fetches restrict hosts, response size, time and redirects. Receipts remain protected assessment evidence; the public methodology describes their policy.

MCP definitions and discovery metadata

Definition collection examines the public, unauthenticated surface of a configured remote MCP endpoint. Initialization negotiates a supported protocol and records server information, capabilities, instructions and extension metadata. Only advertised capabilities are listed: tools, prompts, resources and resource templates. Tool descriptions, complete input and output schemas, annotations, execution hints, icons and metadata are retained within explicit bounds. Prompt bodies and resource contents are not requested; tools and package code are never executed. [8] [9]

Discovery examines the challenge-advertised protected-resource document and the path-specific and root OAuth well-known locations. It also examines permitted authorization-server and OpenID discovery documents, security.txt and two optional MCP manifest conventions. The manifest paths are collection choices, not MCP requirements. Requests are restricted to configured hosts and redirects are refused. Advertised icons, schema references, websites and extension URLs are recorded as data and are not automatically fetched. [7] [10] [11]

All collected definition text is untrusted, including descriptions, instructions, nested schema text and extension metadata. Versioned rules identify instruction-override wording, approval-bypass wording, model-role delimiters and invisible or bidirectional formatting. A pattern match is labeled Review and needs contextual investigation; legitimate documentation can match. No match means only that the configured patterns were not found in collected text. Neither result demonstrates prompt-injection resistance or establishes a vulnerability. Tool annotation hints do not verify behavior or grant human-approval credit. [9]

Complete surfaces receive canonical SHA-256 baselines. JSON key order and catalog entry order do not change a baseline. Changes to descriptions, schemas, annotations or metadata are reported for review, not classified as malicious. Partial, invalid, blocked and unavailable collections cannot replace the last complete baseline. The latest bounded snapshot and complete per-surface digests are retained; this is not an archive of every prior definition body.

Collection labels are separate from scored evidence states: Observed records what was collected, Review identifies a specific condition to investigate, and Unknown records a collection gap. Authentication refusal does not establish that a provider has no tools. Authenticated or tenant-specific definitions remain unknown, and a package without a remote endpoint is unsupported for runtime definition discovery. Missing optional metadata does not reduce a score. These additional observations preserve the existing category budgets, criterion weights, mandatory evidence requirements and ranking floor.

Table 5. Collected definition and discovery surfaces
SurfaceRetained observationsInterpretation boundary
InitializationNegotiated protocol, server identity and version, capabilities, instructions and extension fields.Advertised implementation information; not verification of deployed code.
ToolsNames, titles, descriptions, input/output schemas, annotation hints, execution hints, icons and metadata.Definitions are inspected without calling tools; annotations are untrusted claims.
Prompts and resourcesPrompt definitions and arguments; resource URIs, templates, descriptions, MIME types, annotations and metadata.Prompt bodies and resource contents are not requested.
OAuth and OpenID discoveryProtected-resource metadata, advertised issuers, scopes and authorization-server configuration at permitted hosts.Observable configuration does not establish runtime token, audience, tenant or permission enforcement.
Security and optional manifestssecurity.txt fields; optional /.well-known/mcp.json and /.well-known/mcp-server.json documents.Presence is an observation. Optional manifests are not required for a score.
TransportInitial HTTP status and selected authentication and security response headers.Cookies and MCP session identifiers are not stored in the snapshot.

The collected surface can differ by authentication, tenant, protocol and time. A complete public list does not establish the absence of private definitions.

Table 6. Bounded collection policy
BoundaryLimitTreatment when collection cannot complete
MCP response512 KiB per response; 8 seconds per request.Unavailable or partial; no safety claim is inferred.
RPC session60-second deadline.Unfinished capability discovery remains incomplete.
Each definition catalog8 pages, 512 entries and 192 KiB of retained definition bodies.Valid collected entries are retained; the inventory remains partial.
Initialization retention64 KiB.Oversized or unsupported initialization leaves definitions unknown.
Discovery documents16 KiB per document; up to 24 attempted documents.Missing, invalid and blocked documents remain explicit.
Nested JSONDepth and node-count bounds before recursive validation.Over-limit definitions are excluded and the collection remains partial.
Network and executionConfigured hosts; no redirects, credentials or tool invocation.Cross-host discovery is blocked until the host is explicitly permitted.

These limits and the text-pattern policy are Durin collection policy, not security thresholds prescribed by MCP or the cited RFCs. Definition collection does not use language models.

Independent subcriteria and weighted credit

One criterion is one real safeguard with a stable control ID and a fixed point budget. Its independent subcriteria have descriptive check IDs, explicit evidence requirements and weights that sum to the parent budget. For example, the 24-point human-approval criterion assigns 8 points each to an identified human review interface, explicitly covered sensitive actions and an approval decision independent of the agent or client prompt. These are three distinct checks, not 24 repetitions of the same result. [2] [5]

Each subcriterion is evaluated using its own evidence key, source, state and observation time. A legacy parent pass, a sibling pass or an old one-point allocation cannot satisfy another check. A missing, unreadable, stale or future-dated observation earns no credit. Metadata checks establish precisely the advertised field or observed HTTP result named by the check. They do not establish runtime token, tenant or scope enforcement. [7]

Weighted credit is the sum of each applicable subcriterion weight multiplied by its earned fraction. Unknown and failed checks contribute zero. Not-applicable evidence needs an explicit reviewed determination permitted by the criterion. Documentation can establish a capability at the parent policy rate; checks requiring an authorized runtime test receive zero documentation credit. Atomic criteria such as advisory response and release age remain single checks rather than being split artificially.

Version 2 introduced independently evidenced subcriteria; Version 3 added observational definition collection. Version 4 retains their parent budgets and scored roster while revising public evidence confidence and the interpretation of anonymous initialization. Version 5 extends reproducible public collection receipts while preserving Version 4 scoring and confidence rules. Historical editions retain their original rules. Rank movement is shown only for comparable baselines. New catalog observations cannot change a score or confidence; scored admission remains explicitly versioned and simulated.

Table 7. Independent assessment of the human-approval criterion
CheckWeightEvidence required
Human review interface8First-party instructions identify the person and provider or execution-host review interface.
Covered sensitive actions8Action-specific approval coverage is explicitly identified.
Independent approval gate8The provider or host decision is distinguished from an agent flag or client tool prompt.

A full documented result totals 24/24. Bypass resistance, parameter binding and runtime expiry remain separate advanced checks.

Scoring model and stability

For each category, earned baseline credit is divided by applicable baseline points, including unknown requirements at zero credit. The effective category weight is the smaller of its fixed budget and its applicable baseline points. The index normalizes the weighted category credits to a score from 0 to 100. Criterion credit is represented in thousandths, and the final score is rounded to the nearest integer.

In notation: effective weight = min(category budget, applicable baseline points); category credit = earned baseline points / applicable baseline points; score = round(100 × sum(effective weight × category credit) / sum(effective weight)). A category with no applicable points contributes no weight.

For a simple illustrative case with all 100 budget units applicable, unknown approval evidence earns zero of the 30 approval units. If every other category earns full credit, the resulting score is 70, assuming all other ranking requirements are met. Real configurations can have a different applicable denominator.

New criteria begin as observations outside the scored roster. Adding them does not change existing scores, scored confidence or ranks, although total catalog coverage changes. Promotion into scoring requires versioned review: existing weights and budgets remain fixed, the 20-unit evidence floor remains, and newly admitted weight must bound movement for already-graded providers to five points. A larger recalibration requires a new baseline edition.

Table 8. Fixed category budgets
CategoryMaximum budgetAssessment focus
Human approval30Independent confirmation for named sensitive actions, plus expiry of pending approval requests.
Least privilege20Scoped capabilities and access, with effective revocation and appropriate separation of authority.
Authentication15Attributable identities, secure authorization and protection of credentials and authorization context.
Supply chain15Exact release identity, artifact integrity and attributable provenance evidence.
Audit and recovery10Traceable activity and documented ways to revoke, recover or investigate.
Maintenance10Current advisory evidence, confirmed remediation and applicable release-maintenance observations.

Budgets, the evidence floor and promotion limits are Durin policy. They are not weights prescribed by MCP, CoSAI, SLSA or OSV.

Independent human approval

The baseline allocates 24 points to an independent approval flow for named sensitive actions and 6 points to request expiry. Attributable provider or execution-host documentation can meet this capability baseline. An agent-controlled approval flag, an ordinary client tool prompt or initial OAuth consent is not sufficient for this control.

Stripe documents Dashboard review for selected actions, independently of the client's tool-approval setting. Unapproved requests expire after 24 hours. Confirmation depends on the action: a generic write tool can also perform actions outside that approval flow. This is the reference capability, not a claim that every Stripe mutation requires human review. [5]

CoSAI discusses managed host confirmation and server-requested user confirmation as approaches to human oversight. The index recognizes attributable provider and host flows. Exact-action binding, bypass resistance and stronger enforcement assurance remain distinct advanced controls, visible outside the baseline score. [1]

Advisories and remediation timing

Advisories match a resolved package version or endpoint scope. OSV represents affected version ranges with events such as introduction and a fixed release; the presence of a reported fixed version is not evidence that a provider has deployed it. Remediation timing begins at the first attributable public disclosure and ends at a confirmed fixed release publication or reviewed incident end time. [6]

MCP-MNT-002 has four points. A complete, current advisory check with no matching advisory earns full credit. When advisories do match, the worst confirmed remediation latency determines credit. Missing timing evidence stays unknown, while an active affected release earns no credit for this criterion and affects ranking eligibility. Affected providers are checked hourly; this check's evidence expires after two hours without confirmation.

Table 9. Advisory-handling credit
ObservationCriterion creditPoints out of 4
Complete check; no matching advisory100%4
Confirmed remediation within 24 hours100%4
More than 24 hours, within 7 days75%3
More than 7 days, within 30 days25%1
More than 30 days, or still affected0%0

These timing bands are Durin policy. An import timestamp, healthy endpoint response or reported fixed version alone does not establish remediation.

Catch-all execution as an independent finding

A catch-all red flag identifies an advertised generic execution surface: code, shell commands, unrestricted SQL, dispatch or generic requests. Detection uses inspected tool schemas or configured first-party documentation. Constrained enumerations do not trigger this rule; unavailable or partial inventories remain unknown unless an attributable source independently establishes the capability. Collection never invokes the tools.

CoSAI identifies overly permissive tool capabilities as a security boundary concern. The index treats this as a capability finding, independent of vulnerability advisories and baseline points. A documented approval flow and a catch-all red flag can therefore coexist. Stripe's generic API write tool illustrates why the two observations must remain separate. [1] [5]

Interpretation and limitations

The index describes demonstrated safeguards for a stated configuration at an observation time. First-party claims do not verify all production settings, and unauthenticated metadata does not establish authorization enforcement on every action. Hosted code, authenticated tool inventories and tenant-specific policies can be unavailable. Such gaps remain explicit rather than being filled by inference.

A complete advisory collection with no match is a bounded observation, not proof that no undisclosed vulnerability exists. Package code is not executed. Definition text patterns do not test model behavior or establish prompt-injection resistance, and functional categories are not risk ratings. Operators should read the control evidence, affected versions and independent findings alongside the score.

Dated editions preserve methodology text, control definitions, confidence policy, point rules, checks, taxonomy and references. From Version 3 they also freeze the definition-collection signal policy. The undated URL points to the current edition. Historical assessments retain their original calculation policy; editions with different scoring or confidence baselines are not compared as rank movement.

Deterministic checks

Checks describe what collection can establish. Unsupported observations remain explicit. A release waiting period is not a security verdict, and unavailable hosted code is not assumed to be safe.

Table 5. Identity, release and advisory checks
Check IDApplies toRequirementObservation
identity_resolvedpackage, hostedRequiredThe MCP resolves to an exact package release or a public HTTPS endpoint scope.
artifact_integritypackageRequiredThe registry supplies an artifact digest for the exact release.
advisory_matchpackage, hostedRequiredPublished Durin advisories are matched against the exact release or endpoint scope.
release_agepackageInformationalThe release is older than the configured waiting period. Age is a waiting period, not a verdict.
install_scriptspackageInformationalInstall-time scripts are reported as a review signal.
dependency_graphpackageInformationalResolved transitive dependency assessment (later capability).
remote_transporthostedRequiredThe configured endpoint uses HTTPS on a public origin.
deployed_codehostedInformationalHosted deployed code is not visible; reported as unsupported rather than assumed.

Assessment validity: 7 days. Release waiting period: 60 minutes.

Table 6. Additional evidence and capability checks
Check IDScopeObservation
public_documentationPackages and hosted servicesFetches configured first-party pages with bounded requests and matches reviewed phrase rules. Permission, revocation and approval claims receive documented-only credit. Unavailable statements become unknown; documentation does not renew runtime verification.
human_approvalPackages and hosted servicesRecognizes attributed server confirmation, execution-host permission policies, application review and held human workflows for named sensitive actions. Ordinary client prompts, annotations and OAuth consent do not qualify. Expiry is assessed separately.
advisory_remediation_hourlyKnown affected releases and hosted incidentsRefreshes known affected releases and checks fixed-version publication or reviewed incident end times every hour. Missing evidence stays unknown.
catch_all_executionInspectable inventories or configured documentationInspects advertised names and unconstrained inputs for generic code, command, SQL, dispatch or request capabilities. Protected or incomplete inventories remain unknown unless first-party documentation independently declares the capability. Tools are not executed.
definition_initializeConfigured remote endpointsNegotiates a supported protocol and retains server information, capabilities, instructions and extension metadata. Selected response headers are recorded without cookies or session identifiers.
definition_catalogsAdvertised tools, prompts, resources and templatesLists advertised definitions with bounded pagination. Retains descriptions, schemas, annotations and metadata. Reports field coverage and duplicate definition identifiers. Tools are not invoked, resource contents are not read and prompt bodies are not requested.
discovery_metadataConfigured endpoint and permitted discovery hostsExamines protected-resource, authorization-server and OpenID discovery; security.txt; and optional MCP manifests. Invalid, blocked and unavailable documents remain explicit. Optional metadata is not a scoring requirement.
definition_resource_bindingPreferred readable protected-resource metadataCompares the preferred advertised resource identifier with the scanned endpoint, normalizing equivalent root URLs. A difference is a review signal; this check does not test token enforcement.
definition_text_signalsCollected definitions and metadata textMatches versioned patterns for instruction overrides, approval bypasses, model-role delimiters and invisible or bidirectional formatting. Matches require contextual review; neither matches nor absence establish exploitability or resistance.
definition_change_detectionComplete definition and discovery surfacesCompares canonical SHA-256 baselines across scans. Entry and JSON key ordering are normalized. Partial or unavailable collections preserve the previous complete baseline. A change requires review and is not an advisory or score penalty.
package_capture_receiptConfigured npm and PyPI releasesRetains bounded registry response digests and exact release bindings for identity, integrity, release recency and provenance metadata. Invalid metadata and digest conflicts cannot publish new capture evidence.
publisher_capture_receiptConfigured public endpointsCaptures an exact registry namespace or a configured public publisher and endpoint declaration. An unavailable internal catalog source does not become public capture proof.
security_contact_capture_receiptConfigured domains and repositoriesRetains security.txt or repository policy response digests with public disclosure-contact evidence.
advisory_query_receiptResolved subjects with complete fresh advisory sourcesRetains a normalized corpus query manifest, source checkpoints and revision digests. The receipt is unsigned and does not claim a raw upstream response or runtime safety.

Appendix A. Control catalog

Control IDs identify the same safeguard across providers. Baseline controls contribute to the score; advanced assurance remains visible outside it. Each criterion has a fixed weight. Independent subcriteria have distinct evidence requirements and contribute their stated share; atomic criteria retain one evidence check. Historical editions preserve their original allocations.

Hosted services

Table A0. Evidence confidence thresholds
ConfidenceMinimum evidence coverageMinimum verified share
high80%0%
medium50%0%
low0%0%

Coverage and verified share use applicable baseline points. Confidence describes evidence, not a probability of safety.

MCP-APR-001Does the provider or trusted execution host offer independent human approval for named sensitive actions?

Baseline24 possible points

Baseline: attributed first-party documentation describes an independent human approval flow for named sensitive actions, separate from an agent-controlled flag or ordinary client tool prompt. Stripe documents Dashboard confirmation for selected actions. This does not claim every mutation requires approval or that bypass resistance was tested.

Table A1. MCP-APR-001 point allocation
Control or check IDEvidence requirementWeight
MCP-APR-001/HUMAN_REVIEWIs there an identified human review interface? First-party instructions identify a human reviewer and a provider or execution-host review interface, such as a dashboard or approval URL. A client tool prompt alone does not qualify.8
MCP-APR-001/COVERED_ACTIONSAre the sensitive actions covered by approval explicitly identified? Documentation identifies action-specific approval coverage, with named sensitive actions or explicit action-level confirmation markers. A general recommendation to enable approvals is insufficient.8
MCP-APR-001/INDEPENDENT_GATEIs approval independent of the agent and its client prompt? Documentation explicitly distinguishes the provider or trusted execution-host approval decision from an agent flag or ordinary MCP client prompt. This does not establish tested bypass resistance.8

MCP-APR-002Is a confirmation bound to the exact action, recipient and amount, so it cannot be changed after approval?

Advanced assurance8 possible points

Checks whether approval is bound to the exact action and its resources, recipient and amount. Changing the action after approval must invalidate it. This needs an authorized sandbox or attributed reviewed evidence.

Table A2. MCP-APR-002 point allocation
Control or check IDEvidence requirementWeight
MCP-APR-002/ACTION_TARGET_BINDINGDoes approval bind the action and target? An attributed authorized test changes the operation or target after approval and confirms refusal with no side effect.4
MCP-APR-002/PARAMETER_BINDINGDoes approval bind sensitive parameters? An attributed authorized test changes recipient, amount or another sensitive parameter after approval and confirms refusal with no side effect.4

MCP-APR-003Can the agent avoid confirmation by self-approving, setting a flag, replaying an approval or using an alternate write path?

Advanced assurance6 possible points

Checks whether self-approval, agent-controlled flags, replay and alternate mutation paths can bypass confirmation. A verified control resists those attempts. The index does not infer this from a tool description.

Table A3. MCP-APR-003 point allocation
Control or check IDEvidence requirementWeight
MCP-APR-003/SELF_APPROVALIs agent self-approval refused? An authorized test attempts to approve with the requesting agent identity or an agent-controlled flag and records refusal.2
MCP-APR-003/REPLAYIs approval replay refused? An authorized test reuses a consumed approval token and confirms the operation cannot execute again.2
MCP-APR-003/ALTERNATE_PATHDo alternate write paths retain the approval gate? An authorized test attempts an equivalent mutation through a different tool or API path and confirms approval is still required.2

MCP-APR-004Are denied, expired and revoked approvals refused with no effect?

Advanced assurance4 possible points

Checks that denied, expired and revoked approvals cause no side effect. Verification needs an authorized sandbox or reviewed evidence of those outcomes.

Table A4. MCP-APR-004 point allocation
Control or check IDEvidence requirementWeight
MCP-APR-004/DENIED_REQUESTDoes denial prevent execution? An authorized test denies the request and confirms no downstream effect.2
MCP-APR-004/EXPIRED_REQUESTDoes expiry prevent execution? An authorized test retries an expired approval and confirms no downstream effect.1
MCP-APR-004/REVOKED_REQUESTDoes approval revocation prevent execution? An authorized test revokes an outstanding approval and confirms no downstream effect.1

MCP-APR-005Do unapproved sensitive-action requests expire within 24 hours?

Baseline6 possible points

Baseline: the provider or trusted execution host documents that pending sensitive-action approval requests expire within 24 hours without approval, matching Stripe. Documentation establishes the capability; runtime refusal after expiry remains independently testable.

Table A5. MCP-APR-005 point allocation
Control or check IDEvidence requirementWeight
MCP-APR-005/PENDING_EXPIRYDo unapproved requests expire? Documentation ties expiry to an outstanding human approval request; OAuth session or access-token expiry alone is insufficient.3
MCP-APR-005/BOUNDED_LIFETIMEIs the approval deadline at most 24 hours? Documentation states a positive approval-request lifetime no greater than 24 hours. The collector parses the numeric duration; runtime enforcement is a separate advanced check.3

MCP-PRV-001Can access be limited to narrow, named permissions?

Baseline20 possible points

Collects published OAuth scope metadata where available. Multiple advertised scopes establish documentation, not enforcement. Verifying narrow permissions on actual privileged operations requires an authorized account or reviewed evidence.

Table A6. MCP-PRV-001 point allocation
Control or check IDEvidence requirementWeight
MCP-PRV-001/PERMISSION_INVENTORYAre named limited permissions available? Protected-resource metadata advertises multiple OAuth scopes, or first-party documentation names configurable permissions. This establishes available scopes, not runtime denial.10
MCP-PRV-001/PERMISSION_SELECTIONCan access be restricted when connecting the MCP? Instructions describe selecting or limiting scopes, permissions or roles for the MCP connection, including per-account or environment configuration.10

MCP-PRV-002Is a read-only mode or tool subset available and enforced?

Advanced assurance6 possible points

Checks for an enforced read-only mode or explicit tool subset. A documented option can earn limited credit; proving writes are refused requires an authorized sandbox or reviewed evidence.

Table A7. MCP-PRV-002 point allocation
Control or check IDEvidence requirementWeight
MCP-PRV-002/READ_ONLY_CONFIGURATIONIs a read-only configuration offered? First-party instructions describe how to configure the MCP or its execution host for read-only access.3
MCP-PRV-002/WRITE_REFUSALAre writes refused in read-only mode? An authorized test enables the documented read-only configuration and confirms a mutation is denied without side effects.3

MCP-PRV-003Are files, processes, network and accounts bounded to the configured resources?

Advanced assurance6 possible points

Checks whether file access, process execution, network access and connected accounts stay within configured resources. These boundaries require reviewed configuration and controlled tests; metadata alone does not establish enforcement.

Table A8. MCP-PRV-003 point allocation
Control or check IDEvidence requirementWeight
MCP-PRV-003/FILESYSTEM_BOUNDARYAre filesystem boundaries enforced? Authorized traversal and symlink tests cannot access a path outside the configured allowed roots. Inapplicability requires explicit reviewed evidence.2
MCP-PRV-003/NETWORK_BOUNDARYAre network destinations restricted? An authorized test attempts an out-of-policy destination and confirms refusal.2
MCP-PRV-003/ACCOUNT_BOUNDARYAre account or workspace boundaries enforced? An authorized test attempts an out-of-scope account or workspace operation and confirms refusal.2

MCP-AUT-001Is an authentication boundary and OAuth discovery observable for the endpoint?

Baseline6 possible pointsRequired to rank

Public observation of HTTP 401, protected-resource discovery and advertised PKCE. Successful public initialization leaves the authentication boundary unknown; it does not prove sensitive operations are exposed. No protected action is invoked.

Table A9. MCP-AUT-001 point allocation
Control or check IDEvidence requirementWeight
MCP-AUT-001/UNAUTHENTICATED_REFUSALDoes unauthenticated initialization expose an authentication boundary? HTTP 401 is observable authentication-boundary evidence. Public initialization alone is inconclusive, and does not earn or lose credit as an authentication bypass. Sensitive-operation authorization requires separate scoped tests.2
MCP-AUT-001/OAUTH_DISCOVERYDoes protected-resource metadata identify an authorization server? A fetched protected-resource metadata document identifies at least one authorization server. This verifies discoverability, not token issuance or runtime authorization.2
MCP-AUT-001/PKCE_S256Does authorization-server metadata advertise PKCE S256? Fetched authorization-server metadata advertises S256 code challenges. This verifies the declaration, not a completed OAuth flow.2

MCP-AUT-002Is the intended service audience or account and environment scope declared?

Baseline5 possible points

Baseline: attributed documentation or protected-resource metadata declares the intended service audience or account and environment boundary. Wrong-audience rejection and authorization on every operation require additional assurance evidence.

Table A10. MCP-AUT-002 point allocation
Control or check IDEvidence requirementWeight
MCP-AUT-002/RESOURCE_IDENTIFIERDoes the OAuth resource identifier match this endpoint? The protected-resource identifier has the same URL origin and a path-segment boundary containing the configured endpoint. String-prefix collisions do not qualify.3
MCP-AUT-002/TENANT_SCOPEIs account, tenant or environment scoping described? First-party instructions specify which account, tenant, workspace or environment a connection or credential can access. Wrong-tenant enforcement requires an authorized test.2

MCP-AUT-003Is delegated agent authentication documented without sharing a personal long-lived key?

Baseline4 possible points

Baseline: the provider documents delegated OAuth or an equivalent constrained agent-authentication option. This establishes an offered capability, not that every configuration avoids long-lived credentials or that logs were inspected.

Table A11. MCP-AUT-003 point allocation
Control or check IDEvidence requirementWeight
MCP-AUT-003/DELEGATED_AUTHENTICATIONIs delegated authentication available? The endpoint refuses unauthenticated initialization and publishes an OAuth authorization server, or first-party instructions explicitly describe delegated MCP OAuth authentication. This does not establish safe storage.2
MCP-AUT-003/CONSTRAINED_CREDENTIALSAre credentials constrained to the access needed? Instructions describe restricting agent credentials, short-lived tokens or selected scopes instead of giving the agent an unrestricted personal secret.2

MCP-SUP-001Is an attributed publisher identity available for the endpoint?

Baseline9 possible pointsRequired to rank

Baseline: a registry-verified namespace or attributed reviewed provider catalog identifies the endpoint publisher. Evidence retains its verified or documented-only label; a familiar name or popularity alone does not establish ownership.

Table A12. MCP-SUP-001 point allocation
Control or check IDEvidence requirementWeight
MCP-SUP-001/PUBLISHER_ATTRIBUTIONIs a publisher explicitly attributed? The resolved identity includes a named publisher with attributed identity evidence. A name alone is insufficient.4
MCP-SUP-001/PUBLISHER_DOMAINIs the endpoint domain attributable to that publisher? A verified registry namespace or the reviewed provider catalog associates the configured endpoint domain with this publisher. Catalog attribution remains documented evidence.5

MCP-SUP-002Is the endpoint served over verified HTTPS on the publisher's domain?

Baseline6 possible points

Checks that the endpoint answers over verified TLS. A registry-verified publisher domain can earn full credit; TLS without that attribution earns documented credit. Merely configuring an HTTPS URL does not establish this evidence.

Table A13. MCP-SUP-002 point allocation
Control or check IDEvidence requirementWeight
MCP-SUP-002/VERIFIED_TLSDoes the endpoint use verified HTTPS? A bounded request to the configured endpoint completes with TLS certificate verification enabled. An HTTPS URL string without a successful request is insufficient.3
MCP-SUP-002/DOMAIN_ATTRIBUTIONIs the served endpoint on an attributed provider domain? A verified registry namespace or reviewed provider catalog attributes the endpoint domain. Domain attribution is assessed separately from TLS.3

MCP-SUP-003Can the deployed release be independently identified?

Advanced assurance6 possible points

Checks whether the code version deployed behind a hosted endpoint can be independently identified. A service URL, successful handshake or healthy response does not identify the deployed release.

Table A14. MCP-SUP-003 point allocation
Control or check IDEvidence requirementWeight
MCP-SUP-003/DEPLOYED_VERSIONCan the deployed service version be identified? Attributed evidence identifies the exact code version running at the assessed endpoint and time.3
MCP-SUP-003/DEPLOYMENT_PROVENANCECan that deployment be traced to reviewed source? Attributed provenance connects the identified deployment to its reviewed source or immutable build artifact.3

MCP-AUD-001Are actions attributable and recorded?

Advanced assurance4 possible points

Checks whether actions are recorded with an attributable actor and useful audit context. Verification requires reviewed audit records or an authorized sandbox; published claims alone earn limited credit.

Table A15. MCP-AUD-001 point allocation
Control or check IDEvidence requirementWeight
MCP-AUD-001/ATTRIBUTABLE_ACTORDo action records identify the actor? Documentation describes action or audit records that identify the requesting user, agent or principal.2
MCP-AUD-001/ACTION_CONTEXTDo action records include operation and outcome? Documentation specifies an operation, timestamp and result or outcome in action or audit records.2

MCP-AUD-002Is an explicit session or credential revocation mechanism documented?

Baseline10 possible points

Baseline: the provider documents how a person or administrator can revoke a session or credential and describes its account or environment scope. Runtime enforcement after revocation is a separate assurance question; documented evidence keeps its documented-only label.

Table A16. MCP-AUD-002 point allocation
Control or check IDEvidence requirementWeight
MCP-AUD-002/REVOCATION_PROCEDUREIs there an actionable revocation procedure? First-party steps identify how to revoke an MCP session, credential or connection. Generic account deletion or logout guidance alone does not qualify.5
MCP-AUD-002/REVOCATION_SCOPEIs the effect and scope of revocation described? Documentation states what access revocation removes or invalidates and identifies its session, account, workspace or environment scope. This does not verify runtime revocation.5

MCP-AUD-003Is practical remediation documented?

Advanced assurance2 possible points

Checks for practical, attributed recovery instructions such as fixed versions, removal steps or credential rotation. Published guidance earns documented credit; tested remediation requires additional evidence.

Table A17. MCP-AUD-003 point allocation
Control or check IDEvidence requirementWeight
MCP-AUD-003/FIXED_RELEASE_GUIDANCEIs there an actionable fixed-release or mitigation instruction? First-party documentation identifies an upgrade, fixed version or concrete mitigation for the affected software.1
MCP-AUD-003/CREDENTIAL_RECOVERYDoes recovery guidance address credential exposure? First-party incident or remediation guidance describes rotating or revoking potentially exposed keys, sessions or credentials.1

MCP-MNT-001Is a security contact published?

Baseline3 possible points

Fetches security.txt for the publisher domain, then a repository SECURITY.md when available. A published contact earns documented credit; this does not measure whether the provider responds promptly.

Table A18. MCP-MNT-001 point allocation
Control or check IDEvidence requirementWeight
MCP-MNT-001Fetches security.txt for the publisher domain, then a repository SECURITY.md when available. A published contact earns documented credit; this does not measure whether the provider responds promptly.3

MCP-MNT-002Are there no matching published advisories, or were known advisories remediated promptly?

Baseline4 possible points

A complete, current advisory check with no matching published advisory earns full credit. Known advisories are checked hourly. Confirmed remediation earns 100% within 24 hours, 75% within 7 days, 25% within 30 days and zero afterward. Open or unknown cases earn zero; check evidence expires after two hours.

Table A19. MCP-MNT-002 point allocation
Control or check IDEvidence requirementWeight
MCP-MNT-002A complete, current advisory check with no matching published advisory earns full credit. Known advisories are checked hourly. Confirmed remediation earns 100% within 24 hours, 75% within 7 days, 25% within 30 days and zero afterward. Open or unknown cases earn zero; check evidence expires after two hours.4

MCP-MNT-003Has a package release been published within the last 12 months?

Baseline3 possible points

Compares the package registry publication timestamp with a 12-month window. This measures release recency, not documentation quality or maintenance. It is not applicable to hosted services with no public package; an unknown timestamp earns no credit.

Table A20. MCP-MNT-003 point allocation
Control or check IDEvidence requirementWeight
MCP-MNT-003Compares the package registry publication timestamp with a 12-month window. This measures release recency, not documentation quality or maintenance. It is not applicable to hosted services with no public package; an unknown timestamp earns no credit.3

Appendix B. Provider classification

One reviewed primary functional category per MCP identity. Classify the exposed service, not its transport, name, security controls or safety score.

Table B1. Functional provider categories
CategoryDefinition
Productivity & CollaborationDocuments, spreadsheets, calendars, forms, project management and shared workspaces.
Communication & MessagingEmail, chat, voice, meetings, notifications and message-delivery services.
Identity & Access ManagementAuthentication, authorization, agent identities, credential access and identity trust.
Security & ComplianceVulnerability assessment, threat protection, security policy, privacy and security assurance.
Developer ToolsSource control, APIs, software testing, code intelligence and developer documentation.
Cloud & InfrastructureCompute, hosting, storage infrastructure, networks, DNS, containers and deployment operations.
Data & AnalyticsDatabases, data platforms, data engineering, business intelligence and general web/product analytics.
Observability & MonitoringLogs, traces, errors, uptime, reliability monitoring and incident response.
Sales & CRMCustomer relationships, prospecting, lead enrichment, sales engagement and deal pipelines.
Customer SupportCustomer service, help desks, service management and support operations.
Marketing & AdvertisingCampaigns, advertising, SEO, social publishing, audience growth and marketing-specific analytics.
Finance & PaymentsBanking, payments, accounting, billing, treasury and financial-market data.
Content & Knowledge ManagementFile repositories, content management systems, knowledge bases and learning-content access.
Design & MediaDesign tools, visual assets, diagrams, creative production, audio and video.
Search & ResearchWeb search, crawling, research literature and specialized information discovery.
Automation & IntegrationWorkflow automation, API integration, general tool gateways and MCP transport bridges.
AI & Machine LearningModel platforms, inference gateways, agent orchestration and persistent agent memory.
Legal & RegulatoryLegal research, regulatory intelligence, contract operations and statutory compliance.
Human ResourcesRecruiting, hiring, employee management and people operations.
Business OperationsEnterprise resource planning and integrated operational business workflows.

Functional categories are separate from deployment cohorts and security scores.

References

  1. Model Context Protocol (MCP) Security

    CoSAI, Workstream 4. Version 2.0, updated 12 August 2026; control sections 3.2.2, 3.2.8–3.2.11. Accessed 2026-11-11.

  2. Tools: User Interaction Model

    Model Context Protocol. Specification dated 25 November 2025. Accessed 2026-11-11.

  3. Security Best Practices

    Model Context Protocol. Confused deputy, token passthrough, SSRF and scope minimization guidance. Accessed 2026-11-11.

  4. SLSA: Provenance

    OpenSSF / SLSA. SLSA 1.2. Accessed 2026-11-11.

  5. Model Context Protocol: confirmation and tools

    Stripe. Action-specific Dashboard confirmation, expiry and generic API tool documentation. Accessed 2026-11-11.

  6. Open Source Vulnerability format

    OpenSSF / OSV. Schema 1.9.2, 13 October 2026; affected ranges and fixed events. Accessed 2026-11-11.

  7. MCP authorization specification

    Model Context Protocol. 2025-11-25 specification. Accessed 2026-11-11.

  8. MCP lifecycle and version negotiation

    Model Context Protocol. 2025-11-25 specification; initialization and capability negotiation. Accessed 2026-11-12.

  9. MCP schema reference: definitions and annotation hints

    Model Context Protocol. 2025-11-25 specification; tools, prompts, resources, metadata and untrusted annotation hints. Accessed 2026-11-12.

  10. OAuth 2.0 Protected Resource Metadata

    IETF / RFC Editor. RFC 9728; resource metadata and discovery. Accessed 2026-11-12.

  11. A File Format to Aid in Security Vulnerability Disclosure

    IETF / RFC Editor. RFC 9116; security.txt fields and location. Accessed 2026-11-12.

  12. Authentication for the Official MCP Registry

    Model Context Protocol. Domain and namespace authentication. Accessed 2026-11-12.

  13. Generating provenance statements

    npm. Provenance identity and security limitations. Accessed 2026-11-12.

  14. Introduction to Attestations

    Python Package Index. Public package attestations. Accessed 2026-11-12.

  15. Attestation statement specification

    in-toto. Statement v1; immutable subjects and digests. Accessed 2026-11-12.

Edition history

Dated links preserve released methodology content. The undated address opens the current edition.

  1. Version 5 · 2026-11-12-v5Current edition
  2. Version 4 · 2026-11-12-v4
  3. Version 3 · 2026-11-12
  4. Version 2 · 2026-11-11-v2
  5. Version 1 · 2026-11-11

Edition fingerprint: sha256:3f77fa825240f25bfce57cfdf1285f6a3fda5610e83ebe45212614b212122ddf