Skip to content

SEP-2061: Action Security Metadata for MCP Tools#2061

Draft
rreichel3 wants to merge 5 commits intomodelcontextprotocol:mainfrom
rreichel3:main
Draft

SEP-2061: Action Security Metadata for MCP Tools#2061
rreichel3 wants to merge 5 commits intomodelcontextprotocol:mainfrom
rreichel3:main

Conversation

@rreichel3
Copy link
Copy Markdown

This PR proposes a new SEP that introduces Action Security Metadata for MCP tools.

Today MCP provides ways to label data in flight (e.g., trust, sensitivity, provenance), but there is no standardized way for tools to declare what they do with that data — whether they are read-only, send data externally, modify user state, or perform irreversible actions. As a result, runtimes and clients must infer risk from tool names or model behavior, which does not scale.

This SEP adds a small, declarative contract to each tool:

  • Destination — where input data may be stored or sent
  • Sensitivity — what kind of data the tool is designed to accept/return
  • Outcomes — whether invoking the tool is benign, consequential, or irreversible
  • Source — where returned data originates

These fields enable deterministic enforcement of privacy, consent, and prompt-injection resistance, and are designed to complement existing proposals for runtime trust and sensitivity annotations.

The SEP includes:

  • A protocol-level schema
  • Normative definitions for each enum value
  • A reference implementation showing read_drafts, list_inbox, and send_email with identical schemas but radically different security semantics

Per the contributing guidelines: I used AI to get the formatting for this better.

@rreichel3 rreichel3 changed the title SEP-XXXX: Action Security Metadata for MCP Tools SEP-0000: Action Security Metadata for MCP Tools Jan 7, 2026
@rreichel3 rreichel3 changed the title SEP-0000: Action Security Metadata for MCP Tools SEP-2061: Action Security Metadata for MCP Tools Jan 7, 2026
@0xbrainkid
Copy link
Copy Markdown

Strong proposal — the gap between "what a tool is named" and "what a tool actually does" is where most MCP security risks live today.

A few thoughts on how this interacts with the agent identity/trust layer:

1. Security metadata enables trust-differentiated access

With these fields declared, a server can make access decisions based on the calling agent's trust level combined with the tool's risk profile. Example:

  • send_email with outcomes: ["irreversible"] + destination: ["external"] → only accessible to agents with trust level ≥ 4
  • read_drafts with outcomes: ["benign"] + destination: ["none"] → accessible to any authenticated agent

This creates a risk matrix: tool security metadata × agent trust score = access decision. Without either dimension, you're either blocking everything or trusting everything.

2. Source provenance maps to agent attestation

The source field ("where returned data originates") has a natural extension: where does the agent originate? An agent with verified provenance (attested identity, behavioral history, cross-platform verification) calling a high-sensitivity tool is fundamentally different from an unknown agent making the same call.

Today 100% of ~2,000 scanned MCP servers lack authentication entirely (per the AIP ArXiv paper 2603.24775v1). This SEP, combined with agent identity verification, would close that gap.

3. Suggestion: add a requiredTrustLevel field

{
  "send_email": {
    "outcomes": ["irreversible"],
    "destination": ["external"],
    "sensitivity": ["personal"],
    "requiredTrustLevel": 4
  }
}

This would let tool authors declare the minimum trust level needed, making security metadata actionable rather than just informational. Trust providers (SATP, AgentScore, etc.) could then supply the verification.

Would be interested in collaborating on the trust-level extension if there's appetite for it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

proposal SEP proposal without a sponsor. SEP

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

5 participants