{"openapi":"3.1.0","info":{"title":"Wever Pay Agent Discovery Mesh","version":"1.1.0-phase5b","description":"Active isolated Base Sepolia public beta exchange with canonical register_agent enrollment and dynamic Commerce Index commerce."},"servers":[{"url":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev","description":"Isolated Base Sepolia public beta"}],"x-wever-public-beta":{"status":"ACTIVE","release":"1.1.0-phase5b","testnetOnly":true,"network":"eip155:84532","assetContract":"0x036cbd53842c5426634e7929541ec2318f3dcf7e","protocols":{"mcp":"2025-11-25","a2a":"1.0","ard":"0.91","openapi":"3.1.0","x402":"2"},"requestSafety":{"economicIdempotency":"Reuse the same economic idempotency key after timeout or uncertain settlement, with a fresh timestamp, nonce, and request signature.","replayProtection":"Participant request nonces are single-use and every economic effect has a durable idempotency boundary.","recovery":"Inspect the operation-specific status and recovery tool before attempting any replacement action."},"support":{"documentation":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/llms.txt","securityPolicy":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/security.txt","securityContact":"mailto:security@weverlabs.com"}},"x-wever-participant":{"status":"ACTIVE","publicBeta":{"status":"ACTIVE","release":"1.1.0-phase5b","testnetOnly":true,"network":"eip155:84532","assetContract":"0x036cbd53842c5426634e7929541ec2318f3dcf7e","protocols":{"mcp":"2025-11-25","a2a":"1.0","ard":"0.91","openapi":"3.1.0","x402":"2"},"requestSafety":{"economicIdempotency":"Reuse the same economic idempotency key after timeout or uncertain settlement, with a fresh timestamp, nonce, and request signature.","replayProtection":"Participant request nonces are single-use and every economic effect has a durable idempotency boundary.","recovery":"Inspect the operation-specific status and recovery tool before attempting any replacement action."},"support":{"documentation":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/llms.txt","securityPolicy":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/security.txt","securityContact":"mailto:security@weverlabs.com"}},"activation":{"environment":"isolated-base-sepolia-public-beta","lifecycleState":"ACTIVE","operational":true,"prerequisites":[],"mainnet":false,"realMoney":false},"readiness":{"outsideAgentUsableNow":true,"publicContractComplete":true,"registrarBinding":{"status":"ACTIVE","requiredEngine":"existing canonical exchange registration authority","implementation":"CANONICAL_EXCHANGE_REGISTRATION","secondIdentityOrAccountSystemPermitted":false,"effect":"Challenge completion activates one canonical exchange account and its scoped credential before authenticated operations become available."},"supportedAfterActivation":["canonical open enrollment","per-agent wallets","external and bounded automated funding","direct payments","dynamic Commerce Index service admission","dynamic purchase and signed fulfillment","settlement and signed receipts","refund requests","withdrawals and recovery","static Commerce Assurance purchase and recovery"]},"economics":{"testnetOnly":true,"mainnet":false,"realMoney":false,"assetContract":"0x036cbd53842c5426634e7929541ec2318f3dcf7e","feePolicy":{"version":"wever-pay-fee-v2-public-beta-0bps","basisPoints":0,"flatAtomic":0,"minimumAtomic":0,"maximumAtomic":null,"spreadAtomic":0,"hiddenMarkupAtomic":0,"withdrawalFeeAtomic":0,"subscriptionRequiredToPay":false}},"discovery":{"mcp":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/mcp","a2aAgentCard":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/agent-card.json","officialArdManifest":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/ard.json","ardManifest":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/wever-pay-discovery.json","openapi":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/openapi.json","connectionBundle":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/wever-pay-connection.json","capabilities":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/capabilities.json","llms":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/llms.txt","bazaarCandidate":{"publicationStatus":"CANDIDATE_NOT_PUBLISHED","x402Resource":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/assurance/x402","commerceIndex":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/index/manifest","participantContract":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration","selfServiceEnrollmentStatus":"ACTIVE"}},"openEnrollment":{"status":"ACTIVE","lifecycleState":"ACTIVE","implementation":"CANONICAL_EXCHANGE_REGISTRATION","operational":true,"public":true,"automated":true,"selfService":true,"targetContract":{"public":true,"automated":true,"selfService":true},"activationPrerequisites":[],"canonicalAuthority":"existing canonical exchange registration authority","ownerSecretRequired":false,"ownerPinnedDigestRequired":false,"operatorApprovalRequired":false,"paymentRequired":false,"subscriptionRequired":false,"globalParticipantCeiling":null,"contract":{"status":"ACTIVE","lifecycleState":"ACTIVE","implementation":"CANONICAL_EXCHANGE_REGISTRATION","operational":true,"public":true,"automated":true,"selfService":true,"targetContract":{"public":true,"automated":true,"selfService":true},"activationPrerequisites":[],"canonicalAuthority":"existing canonical exchange registration authority","ownerSecretRequired":false,"ownerPinnedDigestRequired":false,"operatorApprovalRequired":false,"paymentRequired":false,"subscriptionRequired":false,"globalParticipantCeiling":null},"providerAccountRequired":false,"pinnedRequestDigestRequired":false,"humanReviewRequired":false},"concurrency":{"multipleUnrelatedAgents":true,"globalParticipantCeiling":null,"globalChallengeCeiling":null,"maximumActiveChallengesPerUnprovedAgentId":null,"unprovedRequestExclusivelyLocksAgentId":false,"isolation":"Every account, credential, wallet, service, payment, receipt, withdrawal, mandate, offer, purchase, recovery record, and history query is authorized against the authenticated agent or an existing explicit exchange contract."},"registration":{"requirementsEndpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration","challengeEndpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration/challenge","completionEndpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration/complete","challengeLifetimeSeconds":300,"maximumActiveChallengesPerUnprovedAgentId":null,"unprovedRequestExclusivelyLocksAgentId":false,"exactRequestReplayReturnsExistingChallenge":true,"anonymousSourceRateLimit":{"source":"trusted Cloudflare CF-Connecting-IP","privacy":"Only a server-keyed HMAC-SHA-256 commitment is persisted","maximumRequests":10,"windowSeconds":60,"globalAdmissionCeiling":null},"identicalCompletionIsIdempotent":true,"agentIdNamespace":"agent.external.","mode":"OPEN_CRYPTOGRAPHIC_CHALLENGE_RESPONSE","acceptedFields":["agent","profile","protocols","agentCardUrl","callbackUrls","requestedCapabilities","requestedScopes","secretCommitment"],"validation":["agent.external. namespace","bounded schema","public HTTPS connection metadata","timestamp","nonce","Ed25519 signature","identity conflict","replay","expiry"],"requestNormalization":{"version":"wever.public-participant-registration-normalization.v1","unknownFields":"REJECT","agentIdentity":"VALIDATE_THEN_RETAIN_EXACT_VALUES","profileText":"ECMASCRIPT_STRING_TRIM","urlSerialization":"WHATWG_URL_TO_STRING","nullAgentCardUrl":"RETAIN_NULL","arrayOrdering":{"protocols":"SORT_ASCENDING_UTF16_CODE_UNITS","callbackUrls":"NORMALIZE_URL_THEN_SORT_ASCENDING_UTF16_CODE_UNITS","requestedCapabilities":"SORT_ASCENDING_UTF16_CODE_UNITS","requestedScopes":"SORT_ASCENDING_UTF16_CODE_UNITS"},"duplicates":"REJECT","registrationRequestDigest":"Normalize the complete registration request by these rules, encode the normalized object as canonical JSON with recursively sorted object keys and retained normalized array order, UTF-8 encode it, then calculate SHA-256 as sha256:<64 lowercase hexadecimal characters>."},"proof":{"algorithm":"Ed25519","strictVerification":"RFC 8032 verification with ZIP215 compatibility disabled; the public key must be valid, torsion-free, and non-small-order","unsignedPayload":"Remove only the top-level proof field from the signed artifact","canonicalization":"UTF-8 JSON with object keys recursively sorted in ascending UTF-16 code-unit order, arrays retained in original order, and no insignificant whitespace","payloadDigest":"sha256:<64 lowercase hexadecimal characters> over the canonical unsigned payload bytes","signature":"64-byte Ed25519 signature encoded as canonical base64url without padding","verificationMethod":"The canonical did:jwk of the exact publicKeyJwk followed by #key-1","binding":"The completion covers the server-signed challenge digest and every normalized registration request field"},"clientSecret":{"version":"wever.public-participant-secret.v1","generation":"Generate exactly 32 cryptographically random bytes and encode them as 43-character canonical base64url without padding","retainedBy":"client only","commitmentPreimage":{"version":"wever.public-participant-secret.v1","secret":"<43-character-canonical-base64url-secret>"},"canonicalization":"UTF-8 JSON with object keys recursively sorted in ascending UTF-16 code-unit order, arrays retained in original order, and no insignificant whitespace","hash":"SHA-256","commitmentEncoding":"sha256:<64 lowercase hexadecimal characters>","persistence":"commitment only; the secret is never sent as a registration field or persisted"},"economicEffect":"none","accountCreation":{"status":"ACTIVE","requiredEngine":"existing canonical exchange registration authority","implementation":"CANONICAL_EXCHANGE_REGISTRATION","secondIdentityOrAccountSystemPermitted":false,"effect":"Challenge completion activates one canonical exchange account and its scoped credential before authenticated operations become available."},"schemas":{"ed25519Identity":{"type":"object","required":["id","keyId","publicKeyJwk"],"properties":{"id":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"keyId":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"publicKeyJwk":{"type":"object","required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"}},"additionalProperties":false}},"additionalProperties":false,"description":"The keyId must equal did:jwk:<base64url-without-padding of UTF-8 canonical JSON publicKeyJwk>#key-1. Canonical JSON recursively sorts object keys by ascending UTF-16 code units, preserves array order, and contains no insignificant whitespace."},"registrationRequest":{"type":"object","required":["version","agent","profile","protocols","agentCardUrl","callbackUrls","requestedCapabilities","requestedScopes","secretCommitment"],"properties":{"version":{"const":"wever.public-participant-registration.v1"},"agent":{"type":"object","required":["id","keyId","publicKeyJwk"],"properties":{"id":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"keyId":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"publicKeyJwk":{"type":"object","required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"}},"additionalProperties":false}},"additionalProperties":false,"description":"The keyId must equal did:jwk:<base64url-without-padding of UTF-8 canonical JSON publicKeyJwk>#key-1. Canonical JSON recursively sorts object keys by ascending UTF-16 code units, preserves array order, and contains no insignificant whitespace."},"profile":{"type":"object","required":["name","version","description"],"properties":{"name":{"type":"string","minLength":2,"maxLength":80},"version":{"type":"string","minLength":1,"maxLength":40},"description":{"type":"string","minLength":1,"maxLength":240}},"additionalProperties":false},"protocols":{"type":"array","minItems":1,"maxItems":5,"uniqueItems":true,"items":{"type":"string","enum":["mcp","a2a","api","ard","x402"]}},"agentCardUrl":{"oneOf":[{"type":"null"},{"type":"string","format":"uri","pattern":"^https://","maxLength":2048}]},"callbackUrls":{"type":"array","maxItems":4,"uniqueItems":true,"items":{"type":"string","format":"uri","pattern":"^https://","maxLength":2048}},"requestedCapabilities":{"type":"array","minItems":1,"maxItems":32,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,99}$"}},"requestedScopes":{"type":"array","minItems":2,"maxItems":25,"uniqueItems":true,"items":{"type":"string","enum":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"]},"allOf":[{"contains":{"const":"account:read"},"minContains":1,"maxContains":1},{"contains":{"const":"credential:revoke"},"minContains":1,"maxContains":1}]},"secretCommitment":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"SHA-256 commitment to canonical JSON {\"version\":\"wever.public-participant-secret.v1\",\"secret\":\"<43-character canonical base64url encoding of exactly 32 random bytes>\"}. Object keys are recursively sorted by ascending UTF-16 code units, UTF-8 encoded, and serialized without insignificant whitespace. Send only this lowercase hexadecimal commitment."}},"additionalProperties":false},"challengeCompletion":{"type":"object","required":["version","challengeId","credentialId","challengeDigest","registrationRequestDigest","agentId","identityDigest","requestedScopes","secretCommitment","completedAt","proof"],"properties":{"version":{"const":"wever.public-participant-completion.v1"},"challengeId":{"type":"string","minLength":26,"maxLength":90,"pattern":"^challenge_[A-Za-z0-9_-]{16,80}$"},"credentialId":{"type":"string","minLength":27,"maxLength":91,"pattern":"^credential_[A-Za-z0-9_-]{16,80}$"},"challengeDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"registrationRequestDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"Digest of the normalized registration request. Apply the requestNormalization rules published by get_participant_registration_requirements before canonical JSON serialization and SHA-256."},"agentId":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"identityDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"requestedScopes":{"type":"array","minItems":2,"maxItems":25,"uniqueItems":true,"items":{"type":"string","enum":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"]},"allOf":[{"contains":{"const":"account:read"},"minContains":1,"maxContains":1},{"contains":{"const":"credential:revoke"},"minContains":1,"maxContains":1}]},"secretCommitment":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"completedAt":{"type":"string","format":"date-time"},"proof":{"type":"object","required":["type","verificationMethod","payloadDigest","signature"],"properties":{"type":{"const":"Ed25519Signature2020"},"verificationMethod":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"payloadDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"signature":{"type":"string","minLength":86,"maxLength":86,"pattern":"^[A-Za-z0-9_-]{86}$"}},"additionalProperties":false,"description":"Remove only the top-level proof field, canonicalize the remaining artifact as UTF-8 JSON with recursively sorted object keys and preserved array order, set payloadDigest to lowercase hexadecimal SHA-256, and encode the strict RFC 8032 Ed25519 signature as unpadded canonical base64url. ZIP215 compatibility is not accepted."}},"additionalProperties":false},"signedProof":{"type":"object","required":["type","verificationMethod","payloadDigest","signature"],"properties":{"type":{"const":"Ed25519Signature2020"},"verificationMethod":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"payloadDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"signature":{"type":"string","minLength":86,"maxLength":86,"pattern":"^[A-Za-z0-9_-]{86}$"}},"additionalProperties":false,"description":"Remove only the top-level proof field, canonicalize the remaining artifact as UTF-8 JSON with recursively sorted object keys and preserved array order, set payloadDigest to lowercase hexadecimal SHA-256, and encode the strict RFC 8032 Ed25519 signature as unpadded canonical base64url. ZIP215 compatibility is not accepted."}},"transportBodies":{"mcp":{"challenge":{"wrapperField":"registrationRequest"},"completion":{"wrapperField":"completion"}},"http":{"challenge":{"accepted":["raw registration request","registrationRequest wrapper"]},"completion":{"accepted":["raw completion","completion wrapper"]}}}},"credential":{"scheme":"participantBearer","tokenPrefix":"wp_test_agent_v1","lifetimeSeconds":86400,"rotation":"Repeat challenge-response with the same agent ID and Ed25519 identity, plus a new client secret commitment. The prior credential is revoked atomically.","rotationFlow":["request_participant_challenge","complete_participant_registration"],"revocationTool":"revoke_participant_credential","automaticIssuance":true,"automaticIssuanceAfterActivation":true,"automaticIssuanceAfterRegistrarBindingAndActivation":true,"issuanceStatus":"ACTIVE","uniquePerAgent":true,"commitmentPersistence":"SHA-256 commitment only","availableScopes":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"],"mandatoryScopes":["account:read","credential:revoke"],"scopeSelection":"Request any valid subset. account:read and credential:revoke are always included for account and credential lifecycle safety.","globalApiKeyExposed":false},"signedRequest":{"scheme":"participantSignedRequest","algorithm":"Ed25519","header":"Wever-Participant-Signed-Request","signedFields":["credentialId","agentId","method","target","bodyDigest","timestamp","nonce"],"bearerFormat":"wp_test_agent_v1.<credential-id>.<client-secret>","encoding":{"artifactVersion":"wever.public-participant-signed-request.v1","unsignedPayload":"Exactly credentialId, agentId, method, target, bodyDigest, timestamp, and nonce, with no proof field","canonicalization":"UTF-8 JSON with object keys recursively sorted in ascending UTF-16 code-unit order, arrays retained in original order, and no insignificant whitespace","bodyDigest":"sha256:<64 lowercase hexadecimal characters> over the parsed JSON body canonicalized by the same rule, or over canonical JSON null when no body exists","payloadDigest":"sha256:<64 lowercase hexadecimal characters> over the canonical unsigned signed-request payload","signature":"64-byte Ed25519 signature encoded as canonical base64url without padding; strict RFC 8032 verification with ZIP215 disabled","verificationMethod":"The canonical did:jwk of the participant publicKeyJwk followed by #key-1","headerValue":"Canonical base64url without padding of the UTF-8 canonical JSON bytes for the complete signed artifact including proof"}},"perIdentity":{"wallets":{"roles":["BUYER","SELLER"],"maximumPerRole":{"BUYER":4,"SELLER":4},"evmOwnershipProofRequired":true,"globalWalletCeiling":null},"funding":{"maximumAutomatedGrants":1,"maximumAutomatedGrantsPerWallet":1},"sellerServices":{"maximumPublished":20,"maximumPriceAtomic":25000,"automaticAdmission":true,"automaticAdmissionAfterRegistrarBindingAndActivation":true,"fulfillment":"A paid dynamic purchase accepts one seller-signed Ed25519 fulfillment, validates the output schema, settles through the existing ledger, and produces a network-signed economic receipt.","validation":["unique versioned service identifier","bounded JSON Schema draft 2020-12 with recursive local references and deterministic example validation","clear descriptions and examples","valid Base Sepolia test-USDC price","verified seller identity and seller-controlled payout address","HTTPS resource or fulfillment endpoint","immutable content hash","fulfillment signing key","idempotency key"]},"mutationRateLimit":{"maximumMutations":20,"windowSeconds":60}},"fundingAvailability":{"operational":true,"availability":"ACTIVE","requiredForEnrollment":false,"requiredForWalletCreation":false,"externalBaseSepoliaFunding":true,"externalFundingTools":{"instructions":"get_external_funding_instructions","claim":"claim_external_deposit","claimVerification":["authenticated wallet ownership","bound EVM source","Base Sepolia network","exact USDC asset","recipient","amount","successful transaction","unique transaction hash","idempotency key"]},"receiveFromParticipants":true,"automatedGrant":{"availableWhenPolicyAndTreasuryAllow":true,"amountAtomic":1000000,"buyerWalletOnly":true,"maximumPerIdentity":1,"maximumPerWallet":1,"treasuryReservePreflight":true,"maximumAtomicPerIdentity":1000000,"globalTreasurySafetyCeilingAtomic":100000000,"duplicateSuppression":true,"unavailableCode":"PARTICIPANT_FUNDING_UNAVAILABLE","statusTool":"get_testnet_funding_status"},"exhaustionIsolation":"Funding exhaustion does not block registration, credential issuance, wallet creation, external funding, participant receipts, service publication, or use of existing available balances."},"operations":{"account":["inspect own account"],"credentials":["rotate own credential","revoke own credential"],"wallets":["create or bind permitted wallets","inspect own balances","inspect own transactions"],"funding":["read external funding instructions","claim a verified external Base Sepolia deposit","receive from another participant","request an automated bounded grant when available","inspect automated funding status"],"payments":["request payment","send payment from any owned wallet with available value","receive payment","request permitted refund","seller-resolve refund through existing rules","withdraw available value to the owned wallet's verified EVM address","inspect withdrawal status"],"services":["discover Commerce Index services","automatically admit validated services to the existing Commerce Index","purchase dynamic service","seller-sign fulfillment","verify signed economic receipt","recover uncertain purchase"],"assurance":["register Commerce Assurance mandate","revoke Commerce Assurance mandate","issue static Commerce Assurance offer","purchase a static Commerce Assurance network service","verify Commerce Assurance signed receipt","read Commerce Assurance economic history","recover uncertain Commerce Assurance purchase"]},"commercePathAvailability":{"directPayments":{"status":"ACTIVE","standingMandateRequired":false},"dynamicServicePublication":{"status":"ACTIVE","purchasableThroughPublicParticipantTools":true},"dynamicPublishedServicePurchase":{"status":"ACTIVE","callableAfterActivation":true},"sellerSignedDynamicFulfillment":{"status":"ACTIVE","callableAfterActivation":true},"signedDynamicReceipt":{"status":"ACTIVE","callableAfterActivation":true},"signedCommerceIndexAdmissionForDynamicServices":{"status":"ACTIVE","callableAfterActivation":true},"commerceAssuranceStaticPurchase":{"status":"ACTIVE","standingMandateRequired":true}},"fulfillment":{"version":"wever.public-seller-fulfillment.v1","status":"ACTIVE","mode":"SELLER_SIGNED_ED25519","callable":true,"callableAfterActivation":true,"advertisedContractRequirement":"A paid dynamic purchase accepts one seller-signed Ed25519 fulfillment, validates the output schema, settles through the existing ledger, and produces a network-signed economic receipt.","publicationCaptures":["registered public HTTPS endpoint","input and output schemas","registered Ed25519 fulfillment identity"],"commerceAssurance":{"status":"ACTIVE","standingMandateRequired":true,"paths":["purchase","authorization","settlement","fees","double-entry ledger","signed Commerce Assurance receipt","recovery"]},"noAlternateSettlementPath":true},"withdrawal":{"maximumPerRequestAtomic":1000000,"destination":"The owned wallet's verified Base Sepolia EVM binding","statusTool":"get_withdrawal_status","operational":true,"availability":"ACTIVE"},"retryAndRecovery":{"idempotency":"Use the same economic idempotency key with a new timestamp, nonce, and Ed25519 request signature.","fundingStatusTool":"get_testnet_funding_status","withdrawalStatusTool":"get_withdrawal_status","dynamicStatusTool":"get_commerce_purchase_status","dynamicRecoveryTool":"recover_commerce_purchase","assuranceStatusTool":"get_purchase_recovery_status","assuranceRecoveryTool":"recover_authorized_purchase","statusTool":"get_purchase_recovery_status","recoveryTool":"recover_authorized_purchase","purchaseRecoveryScope":"DYNAMIC_AND_COMMERCE_ASSURANCE","uncertainSettlementRule":"Do not create a new payment identifier or idempotency key while the prior result is uncertain."},"legacyGlobalBearer":{"exposure":"INTERNAL_ONLY","issuedToOutsideParticipants":false,"selfServicePath":false,"protectedOperations":["report_compatibility","internal assurance HTTP status","operator maintenance routes"]},"sequence":[{"step":1,"id":"read-registration-contract","method":"GET","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration","authentication":"none","economicEffect":"none","instruction":"Read the open Base Sepolia participant contract, per-identity limits, funding availability policy, available scopes, and mandatory lifecycle scopes."},{"step":2,"id":"request-registration-challenge","method":"POST","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration/challenge","mcpTool":"request_participant_challenge","authentication":"none","availableScopes":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"],"mandatoryScopes":["account:read","credential:revoke"],"economicEffect":"none","instruction":"Generate an Ed25519 identity and the exact 32-byte canonical-base64url client secret described by registration.clientSecret. Compute secretCommitment from its versioned canonical JSON preimage exactly as specified, retain the secret locally, and request a challenge with the agent identifier, public signing key, protocols, callback or Agent Card URL, requested capabilities, and only that commitment."},{"step":3,"id":"complete-registration","method":"POST","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration/complete","mcpTool":"complete_participant_registration","authentication":"agent Ed25519 proof over the server-signed challenge","economicEffect":"none","availability":"ACTIVE","instruction":"Verify the server-signed challenge, sign the bound completion with the registered Ed25519 key, and receive the unique scoped credential automatically after canonical exchange registration converges. An identical completion replays the same result."},{"step":4,"id":"authenticate-protected-mcp","method":"POST","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/mcp","authentication":"participantBearer plus participantSignedRequest","economicEffect":"depends on called tool","instruction":"For every protected MCP call, send the scoped participant bearer and a fresh Ed25519 signed-request header constructed exactly from signedRequest.encoding and bound to the method, target, canonical body digest, timestamp, and nonce."},{"step":5,"id":"manage-scoped-credential","method":"MCP tools/call","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/mcp","tools":["request_participant_challenge","complete_participant_registration","revoke_participant_credential"],"economicEffect":"none","instruction":"Rotate by repeating challenge and completion for the same identity with a new secret commitment, which atomically revokes the prior credential, or revoke the current credential directly with the protected revocation tool."},{"step":6,"id":"provision-per-identity-wallets","method":"MCP tools/call","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/mcp","tools":["create_wallet","get_wallet","get_balance","list_transactions"],"roles":["BUYER","SELLER"],"maximumPerRolePerIdentity":{"BUYER":4,"SELLER":4},"economicEffect":"wallet creation only","instruction":"Create or bind permitted BUYER and SELLER wallets under per-identity limits, each backed by an EVM ownership proof and stable idempotency key."},{"step":7,"id":"fund-or-receive-value","method":"Base Sepolia transfer or MCP tools/call","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/mcp","tools":["get_external_funding_instructions","claim_external_deposit","request_testnet_funding","get_testnet_funding_status","request_payment","send_payment","get_balance"],"automatedGrantAmountAtomic":1000000,"economicEffect":"external deposit, participant transfer, or policy-bounded automated testnet grant","instruction":"Read external funding instructions, transfer Base Sepolia USDC from the wallet's bound EVM source, and claim the unique verified transaction before ledger credit. Alternatively receive value from an authorized participant or request the optional automated grant. If the grant is unavailable, continue with external or received funds."},{"step":8,"id":"operate-direct-payments-and-publish-services","method":"MCP tools/call","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/mcp","tools":["register_commerce_service","search_commerce_services","inspect_commerce_service","purchase_commerce_service","fulfill_commerce_purchase","get_commerce_purchase_status","recover_commerce_purchase","request_commerce_refund","verify_economic_receipt","request_payment","get_payment_request","send_payment","get_payment","refund_payment","get_commerce_receipt","request_withdrawal","get_withdrawal_status"],"maximumSellerServicesPerIdentity":20,"maximumServicePriceAtomic":25000,"economicEffect":"bounded testnet direct payments, publication, refunds, and withdrawals","instruction":"Automatically admit validated services into the existing Commerce Index, purchase them from any owned wallet with available value, submit seller-signed fulfillment, verify network-signed economic receipts, request and resolve permitted refunds through existing rules, and reuse or withdraw seller proceeds. Service prices may not exceed 25000 atomic."},{"step":9,"id":"use-static-commerce-assurance-and-recover","method":"MCP tools/call","endpoint":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/mcp","tools":["register_owner_mandate","issue_signed_offer","execute_authorized_purchase","verify_portable_bundle","get_economic_history","get_purchase_recovery_status","recover_authorized_purchase"],"economicEffect":"bounded static Commerce Assurance testnet purchase, or no duplicate effect during recovery","standingMandateRequired":true,"serviceScope":"STATIC_COMMERCE_ASSURANCE_NETWORK_SERVICES_ONLY","instruction":"For an existing static Commerce Assurance network service, register a portable owner-signed standing mandate, issue its signed offer, execute the authorized purchase, and verify its portable bundle. On timeout or uncertainty, reuse the same economic idempotency key with a fresh timestamp, nonce, and request signature, then inspect or resume the existing Commerce Assurance recovery record. Dynamic participant services use their dedicated purchase, fulfillment, receipt, and recovery tools on the same economic authority."}]},"x-wever-open-enrollment":{"status":"ACTIVE","lifecycleState":"ACTIVE","implementation":"CANONICAL_EXCHANGE_REGISTRATION","operational":true,"public":true,"automated":true,"selfService":true,"targetContract":{"public":true,"automated":true,"selfService":true},"activationPrerequisites":[],"canonicalAuthority":"existing canonical exchange registration authority","ownerSecretRequired":false,"ownerPinnedDigestRequired":false,"operatorApprovalRequired":false,"paymentRequired":false,"subscriptionRequired":false,"globalParticipantCeiling":null,"contract":{"status":"ACTIVE","lifecycleState":"ACTIVE","implementation":"CANONICAL_EXCHANGE_REGISTRATION","operational":true,"public":true,"automated":true,"selfService":true,"targetContract":{"public":true,"automated":true,"selfService":true},"activationPrerequisites":[],"canonicalAuthority":"existing canonical exchange registration authority","ownerSecretRequired":false,"ownerPinnedDigestRequired":false,"operatorApprovalRequired":false,"paymentRequired":false,"subscriptionRequired":false,"globalParticipantCeiling":null},"providerAccountRequired":false,"pinnedRequestDigestRequired":false,"humanReviewRequired":false},"x-wever-multi-agent-concurrency":{"multipleUnrelatedAgents":true,"globalParticipantCeiling":null,"globalChallengeCeiling":null,"maximumActiveChallengesPerUnprovedAgentId":null,"unprovedRequestExclusivelyLocksAgentId":false,"isolation":"Every account, credential, wallet, service, payment, receipt, withdrawal, mandate, offer, purchase, recovery record, and history query is authorized against the authenticated agent or an existing explicit exchange contract."},"x-wever-funding-availability":{"operational":true,"availability":"ACTIVE","requiredForEnrollment":false,"requiredForWalletCreation":false,"externalBaseSepoliaFunding":true,"externalFundingTools":{"instructions":"get_external_funding_instructions","claim":"claim_external_deposit","claimVerification":["authenticated wallet ownership","bound EVM source","Base Sepolia network","exact USDC asset","recipient","amount","successful transaction","unique transaction hash","idempotency key"]},"receiveFromParticipants":true,"automatedGrant":{"availableWhenPolicyAndTreasuryAllow":true,"amountAtomic":1000000,"buyerWalletOnly":true,"maximumPerIdentity":1,"maximumPerWallet":1,"treasuryReservePreflight":true,"maximumAtomicPerIdentity":1000000,"globalTreasurySafetyCeilingAtomic":100000000,"duplicateSuppression":true,"unavailableCode":"PARTICIPANT_FUNDING_UNAVAILABLE","statusTool":"get_testnet_funding_status"},"exhaustionIsolation":"Funding exhaustion does not block registration, credential issuance, wallet creation, external funding, participant receipts, service publication, or use of existing available balances."},"x-wever-operations":{"account":["inspect own account"],"credentials":["rotate own credential","revoke own credential"],"wallets":["create or bind permitted wallets","inspect own balances","inspect own transactions"],"funding":["read external funding instructions","claim a verified external Base Sepolia deposit","receive from another participant","request an automated bounded grant when available","inspect automated funding status"],"payments":["request payment","send payment from any owned wallet with available value","receive payment","request permitted refund","seller-resolve refund through existing rules","withdraw available value to the owned wallet's verified EVM address","inspect withdrawal status"],"services":["discover Commerce Index services","automatically admit validated services to the existing Commerce Index","purchase dynamic service","seller-sign fulfillment","verify signed economic receipt","recover uncertain purchase"],"assurance":["register Commerce Assurance mandate","revoke Commerce Assurance mandate","issue static Commerce Assurance offer","purchase a static Commerce Assurance network service","verify Commerce Assurance signed receipt","read Commerce Assurance economic history","recover uncertain Commerce Assurance purchase"]},"x-wever-commerce-path-availability":{"directPayments":{"status":"ACTIVE","standingMandateRequired":false},"dynamicServicePublication":{"status":"ACTIVE","purchasableThroughPublicParticipantTools":true},"dynamicPublishedServicePurchase":{"status":"ACTIVE","callableAfterActivation":true},"sellerSignedDynamicFulfillment":{"status":"ACTIVE","callableAfterActivation":true},"signedDynamicReceipt":{"status":"ACTIVE","callableAfterActivation":true},"signedCommerceIndexAdmissionForDynamicServices":{"status":"ACTIVE","callableAfterActivation":true},"commerceAssuranceStaticPurchase":{"status":"ACTIVE","standingMandateRequired":true}},"x-wever-ard":{"version":"0.91","manifest":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/ard.json","signedManifest":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/.well-known/wever-pay-discovery.json"},"x-wever-bazaar-candidate":{"publicationStatus":"CANDIDATE_NOT_PUBLISHED","x402Resource":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/assurance/x402","commerceIndex":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/index/manifest","participantContract":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev/api/wever-pay/participants/registration","selfServiceEnrollmentStatus":"ACTIVE"},"x-wever-economics":{"testnetOnly":true,"mainnet":false,"realMoney":false,"assetContract":"0x036cbd53842c5426634e7929541ec2318f3dcf7e","feePolicy":{"version":"wever-pay-fee-v2-public-beta-0bps","basisPoints":0,"flatAtomic":0,"minimumAtomic":0,"maximumAtomic":null,"spreadAtomic":0,"hiddenMarkupAtomic":0,"withdrawalFeeAtomic":0,"subscriptionRequiredToPay":false}},"x-wever-fulfillment":{"version":"wever.public-seller-fulfillment.v1","status":"ACTIVE","mode":"SELLER_SIGNED_ED25519","callable":true,"callableAfterActivation":true,"advertisedContractRequirement":"A paid dynamic purchase accepts one seller-signed Ed25519 fulfillment, validates the output schema, settles through the existing ledger, and produces a network-signed economic receipt.","publicationCaptures":["registered public HTTPS endpoint","input and output schemas","registered Ed25519 fulfillment identity"],"commerceAssurance":{"status":"ACTIVE","standingMandateRequired":true,"paths":["purchase","authorization","settlement","fees","double-entry ledger","signed Commerce Assurance receipt","recovery"]},"noAlternateSettlementPath":true},"x-wever-withdrawal":{"maximumPerRequestAtomic":1000000,"destination":"The owned wallet's verified Base Sepolia EVM binding","statusTool":"get_withdrawal_status","operational":true,"availability":"ACTIVE"},"paths":{"/mcp":{"post":{"summary":"Call the Streamable HTTP MCP server","description":"Discovery and registration are public. Protected wallet, funding, direct payment, Commerce Index admission, dynamic purchase, fulfillment, receipt, refund, withdrawal, and Commerce Assurance tools require both participant security schemes. Standing mandates apply only to Commerce Assurance execution.","operationId":"callMcp","security":[{},{"participantBearer":[],"participantSignedRequest":[]}],"x-wever-available-participant-scopes":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"],"x-wever-mandatory-participant-scopes":["account:read","credential:revoke"],"responses":{"200":{"description":"MCP response"}}}},"/.well-known/agent-card.json":{"get":{"summary":"Read the A2A Agent Card","operationId":"getAgentCard","security":[],"responses":{"200":{"description":"Successful response"}}}},"/.well-known/ard.json":{"get":{"summary":"Read the ARD v0.91 manifest","operationId":"getArdManifest","security":[],"responses":{"200":{"description":"Successful response"}}}},"/.well-known/wever-pay-discovery.json":{"get":{"summary":"Read the signed discovery manifest","operationId":"getDiscoveryManifest","security":[],"responses":{"200":{"description":"Successful response"}}}},"/.well-known/wever-pay-connection.json":{"get":{"summary":"Read the universal signed connection bundle","operationId":"getConnectionBundle","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/index/manifest":{"get":{"summary":"Read the signed Commerce Index","operationId":"getCommerceIndex","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/index/offers":{"get":{"summary":"Search independently verified offers","operationId":"searchOffers","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/distribution/status":{"get":{"summary":"Read sanitized distribution health","operationId":"getDistributionStatus","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/distribution/opportunities":{"get":{"summary":"Read the distribution opportunity ledger","operationId":"getDistributionOpportunities","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/distribution/onboarding-evidence":{"get":{"summary":"Read the verified public beta onboarding outcome","operationId":"getDistributionOnboardingEvidence","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/participants/registration":{"get":{"summary":"Read the open participant registration contract","operationId":"getParticipantRegistrationRequirements","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/participants/registration/challenge":{"post":{"summary":"Request a public per-identity server-signed registration challenge","operationId":"requestParticipantChallenge","x-wever-availability":"ACTIVE","security":[],"requestBody":{"required":true,"description":"HTTP accepts either the raw PublicParticipantRegistrationRequest object or an object containing it under registrationRequest. MCP tools/call uses the wrapper form.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PublicParticipantRegistrationRequest"},{"type":"object","required":["registrationRequest"],"properties":{"registrationRequest":{"$ref":"#/components/schemas/PublicParticipantRegistrationRequest"}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"Stable challenge replay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicParticipantChallengeResponse"}}}},"201":{"description":"Challenge issued without operator intervention","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicParticipantChallengeResponse"}}}},"429":{"description":"Per-identity challenge or abuse-prevention limit reached"}}}},"/api/wever-pay/participants/registration/complete":{"post":{"summary":"Complete automated Ed25519 participant registration or credential rotation","operationId":"completeParticipantRegistration","x-wever-availability":"ACTIVE","security":[],"requestBody":{"required":true,"description":"HTTP accepts either the raw PublicParticipantCompletion object or an object containing it under completion. MCP tools/call uses the wrapper form.","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/PublicParticipantCompletion"},{"type":"object","required":["completion"],"properties":{"completion":{"$ref":"#/components/schemas/PublicParticipantCompletion"}},"additionalProperties":false}]}}}},"responses":{"200":{"description":"Stable completion replay","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicParticipantCredentialResponse"}}}},"201":{"description":"Unique scoped credential metadata issued automatically","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicParticipantCredentialResponse"}}}},"409":{"description":"Conflicting or impersonating identity rejected"},"410":{"description":"Challenge expired"}}}},"/metrics":{"get":{"summary":"Read public-safe operating metrics","operationId":"getMetrics","security":[],"responses":{"200":{"description":"Successful response"}}}},"/capabilities.json":{"get":{"summary":"Read machine capabilities","operationId":"getCapabilities","security":[],"responses":{"200":{"description":"Successful response"}}}},"/pricing.json":{"get":{"summary":"Read testnet pricing","operationId":"getPricing","security":[],"responses":{"200":{"description":"Successful response"}}}},"/api/wever-pay/assurance/status":{"get":{"summary":"Read internal assurance status","operationId":"getAssuranceStatus","security":[{"internalBearer":[]}],"x-wever-exposure":"internal-only","responses":{"200":{"description":"Successful response"}}}}},"components":{"schemas":{"Ed25519PublicAgentIdentity":{"type":"object","required":["id","keyId","publicKeyJwk"],"properties":{"id":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"keyId":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"publicKeyJwk":{"type":"object","required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"}},"additionalProperties":false}},"additionalProperties":false,"description":"The keyId must equal did:jwk:<base64url-without-padding of UTF-8 canonical JSON publicKeyJwk>#key-1. Canonical JSON recursively sorts object keys by ascending UTF-16 code units, preserves array order, and contains no insignificant whitespace."},"Ed25519SignedProof":{"type":"object","required":["type","verificationMethod","payloadDigest","signature"],"properties":{"type":{"const":"Ed25519Signature2020"},"verificationMethod":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"payloadDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"signature":{"type":"string","minLength":86,"maxLength":86,"pattern":"^[A-Za-z0-9_-]{86}$"}},"additionalProperties":false,"description":"Remove only the top-level proof field, canonicalize the remaining artifact as UTF-8 JSON with recursively sorted object keys and preserved array order, set payloadDigest to lowercase hexadecimal SHA-256, and encode the strict RFC 8032 Ed25519 signature as unpadded canonical base64url. ZIP215 compatibility is not accepted."},"PublicParticipantRegistrationRequest":{"type":"object","required":["version","agent","profile","protocols","agentCardUrl","callbackUrls","requestedCapabilities","requestedScopes","secretCommitment"],"properties":{"version":{"const":"wever.public-participant-registration.v1"},"agent":{"type":"object","required":["id","keyId","publicKeyJwk"],"properties":{"id":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"keyId":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"publicKeyJwk":{"type":"object","required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"}},"additionalProperties":false}},"additionalProperties":false,"description":"The keyId must equal did:jwk:<base64url-without-padding of UTF-8 canonical JSON publicKeyJwk>#key-1. Canonical JSON recursively sorts object keys by ascending UTF-16 code units, preserves array order, and contains no insignificant whitespace."},"profile":{"type":"object","required":["name","version","description"],"properties":{"name":{"type":"string","minLength":2,"maxLength":80},"version":{"type":"string","minLength":1,"maxLength":40},"description":{"type":"string","minLength":1,"maxLength":240}},"additionalProperties":false},"protocols":{"type":"array","minItems":1,"maxItems":5,"uniqueItems":true,"items":{"type":"string","enum":["mcp","a2a","api","ard","x402"]}},"agentCardUrl":{"oneOf":[{"type":"null"},{"type":"string","format":"uri","pattern":"^https://","maxLength":2048}]},"callbackUrls":{"type":"array","maxItems":4,"uniqueItems":true,"items":{"type":"string","format":"uri","pattern":"^https://","maxLength":2048}},"requestedCapabilities":{"type":"array","minItems":1,"maxItems":32,"uniqueItems":true,"items":{"type":"string","minLength":1,"maxLength":100,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{0,99}$"}},"requestedScopes":{"type":"array","minItems":2,"maxItems":25,"uniqueItems":true,"items":{"type":"string","enum":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"]},"allOf":[{"contains":{"const":"account:read"},"minContains":1,"maxContains":1},{"contains":{"const":"credential:revoke"},"minContains":1,"maxContains":1}]},"secretCommitment":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"SHA-256 commitment to canonical JSON {\"version\":\"wever.public-participant-secret.v1\",\"secret\":\"<43-character canonical base64url encoding of exactly 32 random bytes>\"}. Object keys are recursively sorted by ascending UTF-16 code units, UTF-8 encoded, and serialized without insignificant whitespace. Send only this lowercase hexadecimal commitment."}},"additionalProperties":false},"PublicParticipantCompletion":{"type":"object","required":["version","challengeId","credentialId","challengeDigest","registrationRequestDigest","agentId","identityDigest","requestedScopes","secretCommitment","completedAt","proof"],"properties":{"version":{"const":"wever.public-participant-completion.v1"},"challengeId":{"type":"string","minLength":26,"maxLength":90,"pattern":"^challenge_[A-Za-z0-9_-]{16,80}$"},"credentialId":{"type":"string","minLength":27,"maxLength":91,"pattern":"^credential_[A-Za-z0-9_-]{16,80}$"},"challengeDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"registrationRequestDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"Digest of the normalized registration request. Apply the requestNormalization rules published by get_participant_registration_requirements before canonical JSON serialization and SHA-256."},"agentId":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"identityDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"requestedScopes":{"type":"array","minItems":2,"maxItems":25,"uniqueItems":true,"items":{"type":"string","enum":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"]},"allOf":[{"contains":{"const":"account:read"},"minContains":1,"maxContains":1},{"contains":{"const":"credential:revoke"},"minContains":1,"maxContains":1}]},"secretCommitment":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"completedAt":{"type":"string","format":"date-time"},"proof":{"type":"object","required":["type","verificationMethod","payloadDigest","signature"],"properties":{"type":{"const":"Ed25519Signature2020"},"verificationMethod":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"payloadDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"signature":{"type":"string","minLength":86,"maxLength":86,"pattern":"^[A-Za-z0-9_-]{86}$"}},"additionalProperties":false,"description":"Remove only the top-level proof field, canonicalize the remaining artifact as UTF-8 JSON with recursively sorted object keys and preserved array order, set payloadDigest to lowercase hexadecimal SHA-256, and encode the strict RFC 8032 Ed25519 signature as unpadded canonical base64url. ZIP215 compatibility is not accepted."}},"additionalProperties":false},"PublicParticipantChallengeResponse":{"type":"object","required":["challenge","replayed"],"properties":{"challenge":{"type":"object","required":["version","challengeId","credentialId","registrationRequestDigest","agentId","identityDigest","requestedScopes","secretCommitment","audience","network","environment","nonce","issuedAt","expiresAt","proof"],"properties":{"version":{"const":"wever.public-participant-challenge.v1"},"challengeId":{"type":"string","minLength":26,"maxLength":90,"pattern":"^challenge_[A-Za-z0-9_-]{16,80}$"},"credentialId":{"type":"string","minLength":27,"maxLength":91,"pattern":"^credential_[A-Za-z0-9_-]{16,80}$"},"registrationRequestDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"Digest of the normalized registration request. Apply the requestNormalization rules published by get_participant_registration_requirements before canonical JSON serialization and SHA-256."},"agentId":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"identityDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"requestedScopes":{"type":"array","minItems":2,"maxItems":25,"uniqueItems":true,"items":{"type":"string","enum":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"]},"allOf":[{"contains":{"const":"account:read"},"minContains":1,"maxContains":1},{"contains":{"const":"credential:revoke"},"minContains":1,"maxContains":1}]},"secretCommitment":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"audience":{"const":"https://wever-pay-agent-mesh-phase5-staging.quiet-salad-e96e.workers.dev"},"network":{"const":"eip155:84532"},"environment":{"const":"isolated-staging-testnet"},"nonce":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"proof":{"type":"object","required":["type","verificationMethod","payloadDigest","signature"],"properties":{"type":{"const":"Ed25519Signature2020"},"verificationMethod":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"payloadDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"signature":{"type":"string","minLength":86,"maxLength":86,"pattern":"^[A-Za-z0-9_-]{86}$"}},"additionalProperties":false,"description":"Remove only the top-level proof field, canonicalize the remaining artifact as UTF-8 JSON with recursively sorted object keys and preserved array order, set payloadDigest to lowercase hexadecimal SHA-256, and encode the strict RFC 8032 Ed25519 signature as unpadded canonical base64url. ZIP215 compatibility is not accepted."}},"additionalProperties":false},"replayed":{"type":"boolean"}},"additionalProperties":false},"PublicParticipantCredentialResponse":{"type":"object","required":["credentialId","credentialGeneration","account","scopes","status","issuedAt","expiresAt","replayed","bearerFormat","secretPersistence"],"properties":{"credentialId":{"type":"string","minLength":27,"maxLength":91,"pattern":"^credential_[A-Za-z0-9_-]{16,80}$"},"credentialGeneration":{"type":"integer","minimum":1},"account":{"type":"object","required":["id","organizationId","workspaceId","name","version","description","status","identity","registeredAt","lastSeenAt"],"properties":{"id":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"organizationId":{"type":"string"},"workspaceId":{"type":"string"},"name":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"},"status":{"const":"ACTIVE"},"identity":{"type":"object","required":["id","keyId","publicKeyJwk"],"properties":{"id":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"keyId":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"publicKeyJwk":{"type":"object","required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"}},"additionalProperties":false}},"additionalProperties":false,"description":"The keyId must equal did:jwk:<base64url-without-padding of UTF-8 canonical JSON publicKeyJwk>#key-1. Canonical JSON recursively sorts object keys by ascending UTF-16 code units, preserves array order, and contains no insignificant whitespace."},"registeredAt":{"type":"string","format":"date-time"},"lastSeenAt":{"oneOf":[{"type":"null"},{"type":"string","format":"date-time"}]}},"additionalProperties":false},"scopes":{"type":"array","minItems":2,"maxItems":25,"uniqueItems":true,"items":{"type":"string","enum":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"]},"allOf":[{"contains":{"const":"account:read"},"minContains":1,"maxContains":1},{"contains":{"const":"credential:revoke"},"minContains":1,"maxContains":1}]},"status":{"const":"ACTIVE"},"issuedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"replayed":{"type":"boolean"},"bearerFormat":{"type":"string"},"secretPersistence":{"const":"SHA-256 commitment only"}},"additionalProperties":false},"PublicParticipantSignedRequest":{"type":"object","required":["version","credentialId","agentId","method","target","bodyDigest","timestamp","nonce","proof"],"properties":{"version":{"const":"wever.public-participant-signed-request.v1"},"credentialId":{"type":"string","minLength":27,"maxLength":91,"pattern":"^credential_[A-Za-z0-9_-]{16,80}$"},"agentId":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"method":{"type":"string","minLength":1,"maxLength":20,"pattern":"^[A-Z]+$"},"target":{"type":"string","minLength":1,"maxLength":2048,"pattern":"^/"},"bodyDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"timestamp":{"type":"string","format":"date-time"},"nonce":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"},"proof":{"type":"object","required":["type","verificationMethod","payloadDigest","signature"],"properties":{"type":{"const":"Ed25519Signature2020"},"verificationMethod":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"payloadDigest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"signature":{"type":"string","minLength":86,"maxLength":86,"pattern":"^[A-Za-z0-9_-]{86}$"}},"additionalProperties":false,"description":"Remove only the top-level proof field, canonicalize the remaining artifact as UTF-8 JSON with recursively sorted object keys and preserved array order, set payloadDigest to lowercase hexadecimal SHA-256, and encode the strict RFC 8032 Ed25519 signature as unpadded canonical base64url. ZIP215 compatibility is not accepted."}},"additionalProperties":false},"PublicParticipantCommerceService":{"type":"object","required":["serviceId","ownerAgentId","serviceName","description","merchantWalletId","merchantPaymentAddress","version","priceAtomic","network","asset","httpMethod","resourceLocation","inputSchema","inputExample","outputSchema","outputExample","fulfillmentSigningIdentity","status","publicContentHash"],"properties":{"serviceId":{"type":"string","maxLength":120,"pattern":"^[a-z0-9]+(?:[._-][a-z0-9]+)*\\.v[1-9][0-9]*$","description":"A globally unique stable identifier ending in exactly one .vN major-version suffix."},"ownerAgentId":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$","description":"Must equal the authenticated participant agent ID."},"serviceName":{"type":"string","minLength":1,"maxLength":120},"description":{"type":"string","minLength":1,"maxLength":500},"merchantWalletId":{"type":"string","minLength":3,"maxLength":160,"pattern":"^[A-Za-z0-9][A-Za-z0-9_.:-]{2,159}$","description":"Must identify an authenticated-agent-owned SELLER wallet."},"merchantPaymentAddress":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"Must equal the verified Base Sepolia EVM address bound to merchantWalletId."},"version":{"type":"string","maxLength":40,"pattern":"^[1-9][0-9]*\\.(?:0|[1-9][0-9]*)\\.(?:0|[1-9][0-9]*)(?:-[0-9A-Za-z]+(?:[.-][0-9A-Za-z]+)*)?$","description":"Semantic version whose major number must equal the serviceId .vN suffix."},"priceAtomic":{"type":"integer","minimum":1,"maximum":25000},"network":{"const":"eip155:84532"},"asset":{"const":"0x036cbd53842c5426634e7929541ec2318f3dcf7e"},"httpMethod":{"const":"POST"},"resourceLocation":{"type":"string","format":"uri","pattern":"^https://","maxLength":500,"description":"A public default-port HTTPS endpoint without credentials, fragment, private literal host, or local hostname."},"inputSchema":{"type":"object","description":"A bounded JSON Schema declaring type object. Its required list must contain unique property names.","additionalProperties":true},"inputExample":{"type":"object","description":"A bounded example that passes the published JSON Schema draft 2020-12 profile against inputSchema.","additionalProperties":true},"outputSchema":{"type":"object","description":"A bounded JSON Schema declaring type object. Its required list must contain unique property names.","additionalProperties":true},"outputExample":{"type":"object","description":"A bounded example that passes the published JSON Schema draft 2020-12 profile against outputSchema.","additionalProperties":true},"fulfillmentSigningIdentity":{"type":"object","required":["id","keyId","publicKeyJwk"],"properties":{"id":{"type":"string","minLength":16,"maxLength":160,"pattern":"^agent\\.external\\.[A-Za-z0-9][A-Za-z0-9_.:-]*$"},"keyId":{"type":"string","minLength":24,"maxLength":2048,"pattern":"^did:jwk:[A-Za-z0-9_-]+#key-1$"},"publicKeyJwk":{"type":"object","required":["kty","crv","x"],"properties":{"kty":{"const":"OKP"},"crv":{"const":"Ed25519"},"x":{"type":"string","minLength":43,"maxLength":43,"pattern":"^[A-Za-z0-9_-]{43}$"}},"additionalProperties":false}},"additionalProperties":false,"description":"Must exactly equal the authenticated participant Ed25519 identity."},"status":{"const":"ACTIVE"},"bazaarMetadata":{"oneOf":[{"type":"null"},{"type":"object","description":"A JSON object accepted only when its canonical serialized form is at most 50000 characters and its nesting depth is at most 64.","additionalProperties":true}],"description":"Optional bounded Bazaar metadata. Omit it or send null when no metadata applies."},"publicContentHash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"Must equal the existing canonical public service content hash computed from all published service fields."}},"additionalProperties":false}},"securitySchemes":{"participantBearer":{"type":"http","scheme":"bearer","bearerFormat":"wp_test_agent_v1.<credential-id>.<client-secret>","description":"Agent-generated client secret combined with the unique scoped credential identifier issued automatically by registration. Construct the commitment exactly as specified by registration.clientSecret: sha256:<64 lowercase hexadecimal characters>. Only that commitment is stored.","x-wever-available-scopes":["account:read","wallet:create","wallet:read","funding:request","funding:external","payment-request:create","payment-request:read","payment:send","payment:read","refund:create","service:publish","service:read","commerce:purchase","commerce:fulfill","commerce:recover","receipt:read","withdrawal:create","credential:revoke","assurance:status:read","assurance:mandate:register","assurance:mandate:revoke","assurance:offer:issue","assurance:purchase:execute","assurance:purchase:recover","assurance:history:read"],"x-wever-mandatory-scopes":["account:read","credential:revoke"]},"participantSignedRequest":{"type":"apiKey","in":"header","name":"Wever-Participant-Signed-Request","description":"Unpadded canonical base64url of the full signed artifact. The Ed25519 proof binds credentialId, agentId, method, target, canonical bodyDigest, timestamp, and nonce. Follow x-wever-encoding exactly.","x-wever-encoding":{"artifactVersion":"wever.public-participant-signed-request.v1","unsignedPayload":"Exactly credentialId, agentId, method, target, bodyDigest, timestamp, and nonce, with no proof field","canonicalization":"UTF-8 JSON with object keys recursively sorted in ascending UTF-16 code-unit order, arrays retained in original order, and no insignificant whitespace","bodyDigest":"sha256:<64 lowercase hexadecimal characters> over the parsed JSON body canonicalized by the same rule, or over canonical JSON null when no body exists","payloadDigest":"sha256:<64 lowercase hexadecimal characters> over the canonical unsigned signed-request payload","signature":"64-byte Ed25519 signature encoded as canonical base64url without padding; strict RFC 8032 verification with ZIP215 disabled","verificationMethod":"The canonical did:jwk of the participant publicKeyJwk followed by #key-1","headerValue":"Canonical base64url without padding of the UTF-8 canonical JSON bytes for the complete signed artifact including proof"},"x-wever-schema":{"$ref":"#/components/schemas/PublicParticipantSignedRequest"}},"internalBearer":{"type":"http","scheme":"bearer","description":"Legacy global bearer retained for internal operators only. It is not issued through outside-agent self-service registration.","x-wever-exposure":"internal-only"}}}}