Skip to content

Bazaar catalog never indexes resources from a hand-rolled (non-middleware) resource server despite valid discovery extension on verify/settle #1

Description

@joeyfife

Setup: Coil Scanner (coil.trade) — Global x402 Challenge Composite entrant, 10 endpoints on Cloudflare Workers with a hand-rolled x402 v2 implementation (not paymentMiddleware). Facilitator: facilitator.goplausible.xyz. payTo LYIVIUSN3FAFIC2NUN6UYU2VN764U6YTCPTIX2O6EWYYU5WHAJHYMVTZM4.

What works: Four successful MainNet settles, all confirmed on-chain — W53TFZ7G… (round 63356221), 4AL7LXXJ… (63356283), HR2NHLKW… (63356414), UYZCHT4O… (63357103). Paid responses delivered, USDC received, and the merchant appears correctly on /data/leaderboards (rank ~14, logo/domain enrichment all working).

What doesn't: The resource never appears in /discovery/resources, and the merchant never appears in /discovery/merchants — checked repeatedly over ~2h, with ?limit=500.

What we've ruled out:

  • Our verify/settle wire carries paymentPayload.resource {url, description, mimeType} and paymentPayload.extensions.bazaar {info, schema} (production-logged at send time on the last two settles).
  • The exact envelope passes @x402/extensions' own extractDiscoveryInfo() — returns our full record (resourceUrl, description, mimeType, discoveryInfo) — and validateDiscoveryExtension() returns {valid: true}.
  • Our domain doesn't block your crawler (all server-side UAs get 200; your analytics side already scraped our OG metadata, /.well-known/x402, and llms.txt successfully).
  • Merchants first seen the same day with fewer verifications (middleware users) index fine — so the pipeline itself is healthy.

Live to inspect: GET https://coil.trade/api/board/regime returns the 402 with the Algorand accepts entry (x402-global-challenge tag in extra) and the bazaar extension. Happy to share the exact verify/settle request bodies.

Feature ask while we're here: our /.well-known/x402 manifest already lists all 10 endpoints with Algorand accepts — would you consider ingesting well-known manifests directly into the Bazaar? That would let multi-endpoint Composite merchants list without a bootstrap payment per resource.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions