Summary
Add the JavaScript SDK buyer resolver and compliance-runner support for the seller acceptance-policy discovery contract in adcontextprotocol/adcp#6749 and adcontextprotocol/adcp#6794.
The protocol repository now publishes and exercises an in-band capability plus a real digest-matched reference catalog. The remaining SDK responsibility is safely resolving the advertised HTTPS catalog and turning its profiles into useful buyer guidance.
Buyer SDK behavior
- Fetch
media_buy.acceptance_policy_discovery.catalog_url under the protocol's remote-resolution rules: HTTPS only, no URL credentials, public-address/DNS pinning, no redirects, bounded response bytes and wall time.
- Verify
catalog_digest against the exact response bytes before parsing.
- Validate the parsed document against
acceptance-policy-catalog.json.
- Resolve seller default and product
acceptance_policy_profile_ids with cross-list uniqueness and exact policy/profile version and digest checks.
- Compose applicable rules restrictively; preserve
unknown for partial coverage, omitted rules, undisclosed seller policy, or unavailable external content.
- Accept structured
acceptance_context and explain likely allowed, prohibited, requires_disclosure, requires_setup, and requires_review outcomes without treating discovery as runtime authorization.
- Cache only within the advertised capability lifetime and invalidate on capabilities changes.
Compliance runner
Make media_buy_seller/acceptance_policy_discovery fully executable by having the runner:
- fetch the advertised catalog;
- compare exact bytes with
catalog_digest;
- schema-validate the document;
- resolve every advertised default and product profile;
- verify all pinned policy/profile digests; and
- fail with distinct unsafe-URL, fetch, digest, schema, and unresolved-reference diagnostics.
Tests
- valid reference-seller catalog;
- digest mismatch and byte-preserving/canonicalization edge cases;
- redirect, URL credential, private-address, DNS-rebinding, timeout, and oversized-body rejection;
- duplicate local/registry profile IDs and unresolved policy pins;
- complete vs. partial coverage and restrictive default/product composition;
- cache invalidation after a capabilities change.
Acceptance criteria
- Buyers can ask the SDK what the seller is likely to accept without implementing catalog joins or mistaking advisory discovery for authority.
- The acceptance-policy storyboard verifies fetched bytes and references, rather than only checking capability pointers.
- Resolver results have parity requirements documented for the Python SDK.
Upstream: adcontextprotocol/adcp#6749
Implementation: adcontextprotocol/adcp#6794
Summary
Add the JavaScript SDK buyer resolver and compliance-runner support for the seller acceptance-policy discovery contract in adcontextprotocol/adcp#6749 and adcontextprotocol/adcp#6794.
The protocol repository now publishes and exercises an in-band capability plus a real digest-matched reference catalog. The remaining SDK responsibility is safely resolving the advertised HTTPS catalog and turning its profiles into useful buyer guidance.
Buyer SDK behavior
media_buy.acceptance_policy_discovery.catalog_urlunder the protocol's remote-resolution rules: HTTPS only, no URL credentials, public-address/DNS pinning, no redirects, bounded response bytes and wall time.catalog_digestagainst the exact response bytes before parsing.acceptance-policy-catalog.json.acceptance_policy_profile_idswith cross-list uniqueness and exact policy/profile version and digest checks.unknownfor partial coverage, omitted rules, undisclosed seller policy, or unavailable external content.acceptance_contextand explain likelyallowed,prohibited,requires_disclosure,requires_setup, andrequires_reviewoutcomes without treating discovery as runtime authorization.Compliance runner
Make
media_buy_seller/acceptance_policy_discoveryfully executable by having the runner:catalog_digest;Tests
Acceptance criteria
Upstream: adcontextprotocol/adcp#6749
Implementation: adcontextprotocol/adcp#6794