Reference the Presentation Exchange 2.0 specification at https://identity.foundation/presentation-exchange/ (Decentralized Identity Foundation); implement a Presentation Definition JSON object describing the credentials the employer wants to verify
Construct a Presentation Definition with input_descriptors array; each descriptor specifies id, name, and constraints.fields filtering for specific VC properties (e.g., type containing 'AchievementCredential', issuer matching an approved issuer DID)
Deliver the Presentation Definition to the applicant's wallet via a QR code or deep link using the OpenID for Verifiable Presentations (OID4VP) protocol; the request_uri parameter points to a JWS-signed Presentation Request object
Receive the Verifiable Presentation at your redirect_uri; parse the vp_token parameter to extract the VP, then verify each inner credential's proof using the issuer's DID and public key
Validate that the presented credentials satisfy the Presentation Definition by running the input descriptor matching algorithm: check that all required fields, value patterns, and credential type constraints are met
Log the verification result (pass/fail) with a timestamp and the verifier DID for audit purposes; do not store the raw VC contents beyond what is necessary per data minimization principles
Known gotchas
Presentation Exchange does not mandate a transport protocol; OID4VP, CHAPI, and DIDComm are all viable transports but are not interchangeable—wallets and verifiers must agree on the transport layer before presentation requests can succeed
The input descriptor matching algorithm is complex; subtle errors in constructing the path field (JSONPath expressions) in constraints.fields cause legitimate credentials to fail matching silently
Selective disclosure (presenting only certain claims from a credential) requires the VC to have been issued using a selective disclosure-capable proof type such as BBS+ (BBS-2023 cryptosuite); standard eddsa-rdfc-2022 credentials do not support selective disclosure
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp