{"version":"wever.public-participant-boundary.v1","release":"1.1.0-phase5b","environment":"isolated-base-sepolia-public-beta","network":"eip155:84532","asset":"Base Sepolia test-USDC","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"}},"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}},"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},"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,"globalChallengeCeiling":null,"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},"agentIdNamespace":"agent.external.","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>."},"admission":{"mode":"OPEN_CRYPTOGRAPHIC_CHALLENGE_RESPONSE","manualApproval":false,"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"]},"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"},"secret":{"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"}},"credential":{"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.","revocation":"Call revoke_participant_credential with the active credential and a fresh participant-signed request.","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"],"mandatoryLifecycleScopes":["account:read","credential:revoke"],"grant":"The credential receives only its normalized requested valid scope subset.","globalApiKeyExposed":false},"requestAuthentication":{"bearer":"wp_test_agent_v1.<credential-id>.<client-secret>","signedRequestHeader":"Wever-Participant-Signed-Request","signedFields":["credentialId","agentId","method","target","bodyDigest","timestamp","nonce"],"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"},"retry":"Use the same economic idempotency key with a new timestamp, nonce, and Ed25519 request signature."},"wallets":{"roles":["BUYER","SELLER"],"maximumPerRole":{"BUYER":4,"SELLER":4},"globalWalletCeiling":null,"evmOwnershipProofRequired":true,"ownershipProof":{"algorithm":"EIP-191 personal_sign","signatureEncoding":"0x followed by exactly 65 signature bytes in hexadecimal","messageLines":["wever.public-participant-wallet-binding.v1","agentId:<authenticated-agent-id>","role:<BUYER-or-SELLER>","network:eip155:84532","address:<lowercase-0x-EVM-address>"],"separator":"one U+000A line-feed byte between each line, with no trailing line-feed"}},"funding":{"amountAtomic":1000000,"requiredForEnrollment":false,"externalFundingAvailable":true,"externalDepositCeilingAtomic":100000000,"maximumGrantsPerIdentity":1,"maximumGrantsPerWallet":1,"perIdentityCeilingAtomic":1000000,"globalTreasurySafetyCeilingAtomic":100000000,"buyerWalletOnly":true,"treasuryPreflight":true,"unavailableCode":"PARTICIPANT_FUNDING_UNAVAILABLE","statusTool":"get_testnet_funding_status"},"service":{"maximumPerIdentity":20,"globalServiceCeiling":null,"operational":true,"automaticAdmission":true,"automaticAdmissionAfterRegistrarBindingAndActivation":true,"commerceIndexProjection":"existing Commerce Index","schemaProfile":"JSON Schema draft 2020-12 with bounded local references and no remote retrieval","maximumPriceAtomic":25000,"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.","registrationSchema":{"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},"publicContentHash":{"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","encoding":"sha256:<64 lowercase hexadecimal characters>","fields":["id=serviceId","owner=ownerAgentId","serviceName","description","merchantPaymentAddress","version","priceAtomic","network","asset","httpMethod","resourceLocation","inputSchema","inputExample","outputSchema","outputExample","fulfillmentSigningIdentity","status","bazaarMetadata"],"excludedFields":["merchantWalletId","publicContentHash","idempotencyKey","createdAt","updatedAt","contentHash"]},"payoutOwnershipProof":{"algorithm":"EIP-191 personal_sign","domain":"wever-pay:participant-service-payout-ownership:eip155:84532:v1","message":"wever-pay:participant-service-payout-ownership:eip155:84532:v1\n{\"agentId\":\"<authenticated-agent-id>\",\"payoutAddress\":\"<lowercase-0x-EVM-address>\",\"publicContentHash\":\"<sha256-lowercase-hex>\",\"serviceId\":\"<versioned-service-id>\"}","signatureEncoding":"canonical 64-byte compact or 65-byte EVM signature encoded as 0x hexadecimal"}},"withdrawal":{"maximumPerRequestAtomic":1000000,"destination":"The owned wallet's verified Base Sepolia EVM binding","statusTool":"get_withdrawal_status"},"lifecycle":{"state":"ACTIVE","ingressActive":true,"reconciliationContinues":true,"states":{"ACTIVE":"Registration, new authorized participant mutations, recovery completion, and reconciliation are available.","DRAIN_ONLY":"New registration and new economic ingress are rejected. Seller fulfillment, same-operation purchase recovery, requested-refund resolution, mandate revocation, and internal provider reconciliation remain available.","DISABLED":"Public registration and mutations are rejected. Internal reconciliation remains available for durable pending provider work."},"policyVersion":"wever.public-participant-testnet-policy.v1"},"rateLimit":{"maximumMutations":20,"windowSeconds":60}}