1. Conduid
  2. Blockchain
  3. SD-JWT Agent Trust MCP for .NET
MCP server · Blockchain

SD-JWT Agent Trust MCP for .NET

Model Context Protocol (MCP) integration for agent trust capability token propagation and verification in MCP tool servers and clients.

Unclaimed blockchain
34Low

Scored 5 months ago · breakdown

About SD-JWT Agent Trust MCP for .NET

SD-JWT Agent Trust MCP for .NET is an MCP server published by openwallet-foundation-labs in the Blockchain category: model Context Protocol (MCP) integration for agent trust capability token propagation and verification in MCP tool servers and clients.

The repository has 5 stars and 5 forks, with the last commit 25 days ago. Recent commit activity is the strongest signal that reported issues will get attention.

Install

From source
git clone https://github.com/openwallet-foundation-labs/sd-jwt-dotnet

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

✦

Ask AI about SD-JWT Agent Trust MCP for .NET

Powered by Claude · Grounded in docs

I know everything about SD-JWT Agent Trust MCP for .NET. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ✓README presentThe repository ships documentation.

5 checks have not been run yet.

README

SD-JWT .NET Ecosystem

SD-JWT .NET Logo

NuGet Version CI License

Standards-aligned .NET libraries, protocol components, and trust infrastructure for Selective Disclosure JSON Web Tokens (SD-JWTs), verifiable credentials, and regulated digital identity workflows.

This project provides reusable building blocks for issuers, verifiers, wallet frameworks, enterprise APIs, and trust systems. It is not a full wallet application or end-user mobile app. Instead, it provides the standards and protocol infrastructure that wallet frameworks, identity platforms, and enterprise systems can build on.

For package maturity classifications, see MATURITY.md.

Quick Start

# Core SD-JWT functionality
dotnet add package SdJwt.Net

# Verifiable Credentials
dotnet add package SdJwt.Net.Vc

# Try the samples
git clone https://github.com/openwallet-foundation-labs/sd-jwt-dotnet.git
cd sd-jwt-dotnet/samples/SdJwt.Net.Samples
dotnet run

Package Ecosystem

Core

Package Release Specification Status
SdJwt.Net NuGet (MinVer) RFC 9901 Stable

Verifiable Credential Stack

Package Release Specification Status
SdJwt.Net.Vc NuGet (MinVer) draft-ietf-oauth-sd-jwt-vc-15 Draft-15
SdJwt.Net.StatusList NuGet (MinVer) draft-ietf-oauth-status-list-18 Draft-18

OpenID Identity Protocols

Package Release Specification Status
SdJwt.Net.Oid4Vci NuGet (MinVer) OpenID4VCI 1.0 Stable
SdJwt.Net.Oid4Vp NuGet (MinVer) OpenID4VP 1.0 Stable

Advanced Trust & Security

Package Release Specification Status
SdJwt.Net.OidFederation NuGet (MinVer) OpenID Federation 1.0 Stable
SdJwt.Net.PresentationExchange NuGet (MinVer) DIF PEX v2.1.1 Stable
SdJwt.Net.HAIP NuGet (MinVer) HAIP 1.0 Draft

ISO Credential Formats

Package Release Specification Status
SdJwt.Net.Mdoc NuGet (MinVer) ISO 18013-5 mDL Stable

Reference Infrastructure

Package Release Specification Status
SdJwt.Net.Wallet NuGet (MinVer) Generic wallet with plugin architecture Reference
SdJwt.Net.Eudiw NuGet (MinVer) eIDAS 2.0 EU Wallet ARF Reference

Not a standalone wallet product. Provides wallet infrastructure primitives and an EUDIW compliance reference that wallet frameworks can build on.

Agent Trust Kits

Package Release Specification / Design Source Status
SdJwt.Net.AgentTrust.Core NuGet (MinVer) Capability SD-JWT profile (project proposal) Preview
SdJwt.Net.AgentTrust.Policy NuGet (MinVer) Rule-based policy and delegation model Preview
SdJwt.Net.AgentTrust.AspNetCore NuGet (MinVer) ASP.NET Core middleware integration Preview
SdJwt.Net.AgentTrust.Maf NuGet (MinVer) MAF/MCP middleware and adapter integration Preview
SdJwt.Net.AgentTrust.OpenTelemetry NuGet (MinVer) Agent trust metrics and telemetry Preview
SdJwt.Net.AgentTrust.Policy.Opa NuGet (MinVer) OPA external policy engine integration Preview
SdJwt.Net.AgentTrust.Mcp NuGet (MinVer) MCP trust interceptor and guard Preview
SdJwt.Net.AgentTrust.A2A NuGet (MinVer) Agent-to-agent delegation chains Preview

Key Features

Enterprise Security

  • RFC 9901 Compliant: Full implementation with security hardening
  • HAIP Support: High Assurance Interoperability Profile for government and enterprise
  • Algorithm Enforcement: Blocks weak algorithms (MD5, SHA-1), enforces SHA-2 family
  • Attack Prevention: Protection against timing attacks, replay attacks, signature tampering
  • Verify-First Design: All tokens and claims are cryptographically verified before use

High Performance

  • Multi-Target: .NET 8, 9, 10 and .NET Standard 2.1
  • Platform-Aware Crypto: Uses SHA256.HashData() on .NET 6+ where available
  • Batch Throughput: Designed for high-volume issuance and verification
  • Low Allocation: Reduced allocations for high-volume scenarios

Standards Compliant

  • IETF Standards: RFC 9901 and SD-JWT VC draft-15
  • OpenID Foundation: OpenID4VCI, OpenID4VP, Federation, HAIP
  • W3C: Verifiable Credentials data model compatibility
  • DIF: Presentation Exchange v2.1.1
  • HAIP: High assurance security profiles (Levels 1-3)

Developer Experience

  • Samples: 19 tutorials organized by skill level (beginner to advanced)
  • Fluent APIs: Chainable builder interfaces
  • Documentation: Guides, deep dives, and security reference
  • Tested: 2,600+ tests across 20 packages

Ecosystem Architecture

The SD-JWT .NET Ecosystem is organized into four logical layers:

+-----------------------------------------------------------------+
| Enterprise Applications                                         |
| ASP.NET Core APIs, identity platforms, wallet frameworks,       |
| regulated workflows, AI agent systems                           |
+-------------------------------+---------------------------------+
                                |
+-------------------------------v---------------------------------+
| Reference Infrastructure                                        |
| Wallet primitives, EUDIW compliance, issuer reference server    |
+-------------------------------+---------------------------------+
                                |
+-------------------------------v---------------------------------+
| Protocol Components                                             |
| OID4VCI, OID4VP, Presentation Exchange, OpenID Federation, HAIP |
+-------------------------------+---------------------------------+
                                |
+-------------------------------v---------------------------------+
| Standard Libraries                                              |
| SD-JWT (RFC 9901), SD-JWT VC, Status List, mdoc (ISO 18013-5)  |
+-----------------------------------------------------------------+

See MATURITY.md for the maturity classification of each package.

Use Cases

Government & Civic (HAIP Level 3 - Sovereign)

// Digital identity for citizens accessing government services
var citizenCredential = await governmentIssuer.IssueDigitalIdAsync(citizen);
var ageProof = citizen.CreateAgeVerificationPresentation(minimumAge: 18);
await servicePortal.VerifyAndGrantAccessAsync(ageProof);

Education & Credentials

// University issues degree, student presents to employer
var degree = await university.IssueDegreeCredentialAsync(graduate);
var jobPresentation = graduate.CreateProfessionalPresentation(
    disclosure => disclosure.ClaimName is "degree" or "gpa" or "honors");
await employer.VerifyQualificationsAsync(jobPresentation);

Healthcare & Privacy

// Patient shares medical data with specialist
var medicalRecord = await hospital.IssueMedicalCredentialAsync(patient);
var specialistPresentation = patient.CreateSelectiveMedicalPresentation(
    shareConditions: ["allergies", "current_medications"],
    protectInfo: ["full_history", "mental_health"]);
await specialist.ProcessPatientDataAsync(specialistPresentation);

Financial Services (HAIP Level 2 - Very High)

// Privacy-preserving loan application with HAIP compliance
var employmentCredential = await employer.IssueEmploymentVerificationAsync(applicant);
var incomePresentation = applicant.CreateIncomeVerificationPresentation(
    disclose: ["employment_status", "salary_range"],
    protect: ["exact_salary", "performance_reviews"]);
await bank.ProcessLoanApplicationAsync(incomePresentation);

Mobile Driving License (ISO 18013-5 mdoc)

// DMV issues mDL, citizen presents at TSA checkpoint
using SdJwt.Net.Mdoc.Issuer;
using SdJwt.Net.Mdoc.Namespaces;

var mdl = await new MdocIssuerBuilder()
    .WithDocType("org.iso.18013.5.1.mDL")
    .WithIssuerKey(dmvSigningKey)
    .WithDeviceKey(citizenDeviceKey)
    .AddMdlElement(MdlDataElement.FamilyName, "Johnson")
    .AddMdlElement(MdlDataElement.GivenName, "Alice")
    .AddMdlElement(MdlDataElement.AgeOver21, true)
    .BuildAsync(cryptoProvider);

// Citizen presents only age verification (not birthdate)
await checkpoint.VerifyAgeOnlyAsync(mdl, selectElements: ["age_over_21"]);

Architecture Overview

graph TB
    subgraph ApplicationLayer[Application Layer]
        WalletApp[Wallet Application]
        IssuerApp[Issuer Service]
        VerifierApp[Verifier Service]
        GovApp[Government Portal]
        AgentRuntime[Agent Runtime]
    end

    subgraph ProtocolLayer[Protocol Layer]
        OID4VCI[SdJwt.Net.Oid4Vci: Credential Issuance]
        OID4VP[SdJwt.Net.Oid4Vp: Presentations]
        PEx[SdJwt.Net.PresentationExchange: DIF PE v2.1.1]
        OidFed[SdJwt.Net.OidFederation: Trust Chains]
    end

    subgraph WalletLayer[Wallet Layer]
        Wallet[SdJwt.Net.Wallet: Plugin Architecture]
        Eudiw[SdJwt.Net.Eudiw: eIDAS 2.0]
    end

    subgraph AgentTrustLayer[Agent Trust Layer]
        ATCore[AgentTrust.Core]
        ATPolicy[AgentTrust.Policy]
        ATAsp[AgentTrust.AspNetCore]
        ATMaf[AgentTrust.Maf]
        ATMcp[AgentTrust.Mcp]
        ATA2A[AgentTrust.A2A]
    end

    subgraph ComplianceLayer[Compliance Layer]
        HAIP[SdJwt.Net.HAIP: Level 1 / 2 / 3]
    end

    subgraph CoreLayer[Core Layer]
        Core[SdJwt.Net: RFC 9901]
        Vc[SdJwt.Net.Vc: W3C VC]
        Status[SdJwt.Net.StatusList: Revocation]
        Mdoc[SdJwt.Net.Mdoc: ISO 18013-5]
    end

    WalletApp --> Wallet
    WalletApp --> OID4VP
    WalletApp --> OID4VCI
    IssuerApp --> OID4VCI
    VerifierApp --> OID4VP
    VerifierApp --> PEx
    GovApp --> HAIP
    AgentRuntime --> ATMaf

    OID4VCI --> HAIP
    OID4VP --> HAIP
    PEx --> HAIP
    OidFed --> HAIP

    Wallet --> Core
    Wallet --> Mdoc
    Eudiw --> Mdoc
    Eudiw --> Vc

    ATCore --> Core
    ATPolicy --> ATCore
    ATAsp --> ATCore
    ATMaf --> ATCore
    ATMcp --> ATCore
    ATA2A --> ATCore

    HAIP --> Core
    HAIP --> Vc
    HAIP --> Status
    HAIP --> Mdoc
    OidFed --> Core
    OID4VP --> Mdoc

    style HAIP fill:#d62828,color:#fff
    style Core fill:#1b4332,color:#fff
    style Mdoc fill:#2a6478,color:#fff
    style ATCore fill:#7b2d8e,color:#fff

Quick Examples

Basic SD-JWT

using SdJwt.Net.Issuer;

// Create issuer
var issuer = new SdIssuer(signingKey, SecurityAlgorithms.EcdsaSha256);

// Issue with selective disclosure
var credential = issuer.Issue(claims, new SdIssuanceOptions
{
    DisclosureStructure = new { email = true, address = new { city = true } }
});

// Holder creates presentation
var holder = new SdJwtHolder(credential.Issuance);
var presentation = holder.CreatePresentation(
    disclosure => disclosure.ClaimName == "email");

HAIP-Compliant Verifiable Credentials

using SdJwt.Net.Vc.Issuer;
using SdJwt.Net.HAIP;

// Government issuer with Level 3 compliance
var haipValidator = new HaipCryptoValidator(HaipLevel.Level3_Sovereign, logger);
var keyValidation = haipValidator.ValidateKeyCompliance(signingKey, "ES512");

if (keyValidation.IsCompliant)
{
    var vcIssuer = new SdJwtVcIssuer(issuerKey, algorithm);
    var credential = vcIssuer.Issue("https://gov.example/national-id", vcPayload, options);
}

Status Management

using SdJwt.Net.StatusList.Issuer;

// Create status list
var statusManager = new StatusListManager(statusKey, algorithm);
var statusValues = new byte[] { 0, 1, 2 }; // valid, invalid, suspended
var statusList = await statusManager.CreateStatusListTokenAsync(
    statusListUrl, statusValues, bits: 2);

// Check credential status
var statusVerifier = new StatusListVerifier(httpClient);
var statusResult = await statusVerifier.CheckStatusAsync(statusClaim, keyResolver);
var isValid = statusResult.IsValid;

// Verify presentation with expected nonce
var result = await verifier.VerifyAsync(presentation, validationParams, kbParams, "expected-nonce");

Security Features

Cryptographic Security

  • Approved: SHA-256, SHA-384, SHA-512, ECDSA P-256/384/521
  • Blocked: MD5, SHA-1 (automatically rejected)
  • Enforced: Constant-time operations, secure random generation

HAIP Compliance Levels

  • Level 1 (High): ES256+, PS256+, proof of possession
  • Level 2 (Very High): ES384+, PS384+, wallet attestation, DPoP
  • Level 3 (Sovereign): ES512+, PS512+, HSM backing, qualified signatures

Attack Prevention

  • Signature Tampering: Cryptographic detection and prevention
  • Replay Attacks: Nonce and timestamp validation
  • Timing Attacks: Constant-time comparison operations
  • Key Confusion: Strong key binding validation

Privacy Protection

  • Selective Disclosure: Granular claim-level privacy control
  • Zero-Knowledge Patterns: Prove properties without revealing data
  • Context Isolation: Audience-specific presentations
  • Correlation Resistance: Multiple unlinkable presentations

Platform Support

Supported Frameworks

  • .NET 8.0 - Full support
  • .NET 9.0 - Full support
  • .NET 10.0 - Full support
  • .NET Standard 2.1 - Backward compatibility for legacy systems

Supported Platforms

  • Windows (x64, x86, ARM64)
  • Linux (x64, ARM64)
  • macOS (x64, Apple Silicon)
  • Container Ready (Docker, Kubernetes)
  • Cloud Native (Azure, AWS, GCP)

Performance Benchmarks

Performance is measured with a real BenchmarkDotNet harness in benchmarks/SdJwt.Net.Benchmarks.

Run benchmarks locally:

dotnet run --configuration Release --project benchmarks/SdJwt.Net.Benchmarks/SdJwt.Net.Benchmarks.csproj -- --job short --warmupCount 1 --iterationCount 3 --exporters markdown json

Benchmark results are generated in:

  • benchmarks/SdJwt.Net.Benchmarks/BenchmarkDotNet.Artifacts/results/

The CI performance-benchmarks job executes the same harness and uploads result artifacts for each run.

Documentation

Getting Started

Standards Implementation

Advanced Features

Enterprise Planning

Installation

Core Package

dotnet add package SdJwt.Net

Full Ecosystem

# Verifiable credential stack
dotnet add package SdJwt.Net
dotnet add package SdJwt.Net.Vc
dotnet add package SdJwt.Net.StatusList

# OpenID protocols
dotnet add package SdJwt.Net.Oid4Vci
dotnet add package SdJwt.Net.Oid4Vp

# Advanced features
dotnet add package SdJwt.Net.OidFederation
dotnet add package SdJwt.Net.PresentationExchange
dotnet add package SdJwt.Net.HAIP

# ISO credential formats
dotnet add package SdJwt.Net.Mdoc

# Agent trust kits
dotnet add package SdJwt.Net.AgentTrust.Core
dotnet add package SdJwt.Net.AgentTrust.Policy
dotnet add package SdJwt.Net.AgentTrust.AspNetCore
dotnet add package SdJwt.Net.AgentTrust.Maf
dotnet add package SdJwt.Net.AgentTrust.OpenTelemetry
dotnet add package SdJwt.Net.AgentTrust.Policy.Opa
dotnet add package SdJwt.Net.AgentTrust.Mcp
dotnet add package SdJwt.Net.AgentTrust.A2A

# Wallet infrastructure
dotnet add package SdJwt.Net.Wallet
dotnet add package SdJwt.Net.Eudiw

Try the Examples

git clone https://github.com/openwallet-foundation-labs/sd-jwt-dotnet.git
cd sd-jwt-dotnet/samples/SdJwt.Net.Samples
dotnet run

Contributing

We welcome contributions! Please see the CONTRIBUTING.md file for detailed guidelines and instructions.

Community & Support

Getting Help

Community

  • Open Wallet Foundation: Part of the OpenWallet Foundation ecosystem
  • Standards Participation: Active in IETF OAuth WG, OpenID Foundation, DIF

License

Licensed under the Apache License 2.0 - see the LICENSE file for details.

This permissive license allows commercial use, modification, distribution, and private use while providing license and copyright notice requirements.

Acknowledgments

This project builds on work from the identity standards community:

Special Thanks

  • All specification editors and contributors
  • Early adopters and feedback providers
  • Security researchers and auditors
  • The broader .NET and identity communities

README copy captured when this server was indexed; it may lag the repository. The original is authoritative.

Questions

About SD-JWT Agent Trust MCP for .NET

How do I install SD-JWT Agent Trust MCP for .NET?

No package has been published for this server, so install it from source: clone the repository and follow its README.

Is SD-JWT Agent Trust MCP for .NET safe to use with an AI agent?

Its trust score is 34 out of 100 (low). It passes 1 of the 1 static security checks run so far. It has no ConduID identity yet, so agent calls to it are not receipted.

Is SD-JWT Agent Trust MCP for .NET still maintained?

Yes — the last commit was 25 days ago. The repository has 5 stars and 5 forks.