Personal Agent Protocol report

x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev

x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev publishes a poppy.json, and no P0 or P1 check fails.
Verdict
Working
Profile
pap-0.3@2026-11-09PAP Draft 0.3 (published 2026-11-04; may change; Draft 0.4 graded as a preview)
Last run
Tier 1 probed
Not probed
Each row is one check from the PAP spec, with its outcome, its severity (P0 blocks every agent or is a security MUST, P1 is a MUST that breaks one feature, P2 is a SHOULD or one of Ora's own consistency checks, Advisory never counts against a site) and the section it tests. The full list is in the check catalog, and what Ora's scanner sends is on its own page.

Tier 0: the public files

Plain reads of poppy.json and the documents it points to. None of these requests carries a credential.8 pass, 1 fail, 28 N/A
  1. T0-01Document exists
    Outcome: PassSeverity: P0§3
    served at https://x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev/.well-known/poppy.json
  2. T0-02Redirects safe
    Outcome: PassSeverity: P0§3
    no redirects
  3. T0-03Valid JSON object
    Outcome: PassSeverity: P0§3
    a JSON object
  4. T0-04Supported protocol_version
    Outcome: PassSeverity: P0§3.1
    protocol_version 0.1 (advisory: the latest published draft is 0.3, and an agent that supports only 0.3 will not use this file, so move to 0.3)
  5. T0-05Organization names its own host
    Outcome: PassSeverity: P0§3.1
    organization.domain x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev (graded as Draft 0.1: the requested host, ignoring a leading www.)
  6. T0-06Has an interface
    Outcome: PassSeverity: P0§3.1
    interfaces: web
  7. T0-07Issuer identified
    Outcome: N/ASeverity: P0§3.2
    no interface needs sign-in
  8. T0-08All URLs HTTPS
    Outcome: PassSeverity: P0§3
    every URL is https
  9. T0-SIBPublished on the requested host
    Outcome: PassSeverity: P2§3.1
    published on x402-bazaar-rank.x402-bazaar-rank-worker.workers.dev
  10. T0-27Other version documents consistent
    Outcome: N/ASeverity: P1Draft 0.4 §3.4
    supported_versions is a Draft 0.4 field; this file declares 0.1
  11. T0-09Issuer metadata reachable
    Outcome: N/ASeverity: P0§3.2
    poppy.json names no auth.issuer
  12. T0-10Issuer match
    Outcome: N/ASeverity: P0§3.2
    poppy.json names no auth.issuer
  13. T0-11Domain binding
    Outcome: N/ASeverity: P0§3.2
    poppy.json names no auth.issuer
  14. T0-12Required endpoints
    Outcome: N/ASeverity: P0§3.2
    poppy.json names no auth.issuer
  15. T0-21Cache headers
    Outcome: N/ASeverity: P2Draft 0.2 §3.2
    poppy.json names no auth.issuer
  16. T0-22Signing algorithms valid
    Outcome: N/ASeverity: P1§4.1
    poppy.json names no auth.issuer
  17. T0-23Same sign-in on every domain
    Outcome: N/ASeverity: P1§3.2
    poppy.json names no auth.issuer
  18. ADV-PKCENo plain PKCE
    Outcome: N/ASeverity: Advisoryguides#company-consent
    poppy.json names no auth.issuer
  19. T0-13Scopes defined
    Outcome: N/ASeverity: P1§3.1, §4.7
    no sign-in type or custom scope
  20. T0-14Mediated sign-in well formed
    Outcome: N/ASeverity: P1Mediated Sign-In §2
    no mediated sign-in
  21. T0-19Extensions named correctly
    Outcome: N/ASeverity: P1§3.3
    no extensions
  22. T0-20Extensions advertised fully
    Outcome: N/ASeverity: P1Ops §2
    operations extension not advertised
  23. T0-24Switched off consistently
    Outcome: N/ASeverity: P1§3.2, §6
    a Draft 0.3 field; this file declares 0.1
  24. T0-26Offered scopes described
    Outcome: N/ASeverity: P2§4.7
    a Draft 0.3 rule; this file declares 0.1
  25. T0-28Browser sign-in scope listed
    Outcome: N/ASeverity: P2Draft 0.4 §6
    a Draft 0.4 rule; this file declares 0.1
  26. T0-15Conversation entries
    Outcome: N/ASeverity: P1§3.1
    no agent block
  27. T0-16API entries
    Outcome: N/ASeverity: P1§3.1
    no apis
  28. T0-17OpenAPI parses
    Outcome: N/ASeverity: P1§7
    no openapi entries
  29. T0-18MCP resource metadata
    Outcome: N/ASeverity: P1§7
    no mcp entries
  30. T0-25Excluded tasks document
    Outcome: N/ASeverity: P1Draft 0.3 §9.1
    a Draft 0.3 field; this file declares 0.1
  31. X-01Same MCP server everywhere
    Outcome: N/ASeverity: P2§7
    poppy.json lists no MCP server
  32. X-02Same organization
    Outcome: FailSeverity: P2§3.1
    the ARD catalog host is "P0 Agent Economy Index", poppy.json names "P0"
  33. X-04Domains covered
    Outcome: N/ASeverity: P2§3.2
    poppy_domains lists no other domain
  34. X-07One issuer
    Outcome: N/ASeverity: P2§3.2
    poppy.json names no issuer
  35. X-08One metadata document
    Outcome: N/ASeverity: Advisory§3.2
    no other authorization server metadata
  36. X-10Shared token endpoint lists both protocols' grants
    Outcome: N/ASeverity: P2§3.2
    no other protocol shares the PAP issuer's token endpoint
  37. X-12Consistent 401s
    Outcome: N/ASeverity: P2§7
    no recorded 401 challenge from a PAP MCP server

Tier 1: junk requests to the listed endpoints

Requests with no valid credential, which a correct site refuses. They run only when the scan asks for them, at most once per domain every 6 hours.No Tier 1 probe result from the last 30 days.11 N/A
  1. T1-01Token endpoint rejects a junk grant
    Outcome: N/ASeverity: P1§4.4
    poppy.json names no issuer
  2. T1-02Error bodies leak nothing
    Outcome: N/ASeverity: Advisoryguides#company-errors
    no probe answered
  3. T1-03Conversation endpoint refuses a request with no credentials
    Outcome: N/ASeverity: P0§5.3
    no poppy conversation endpoint
  4. T1-05MCP server challenges unauthenticated initialize
    Outcome: N/ASeverity: P1§7
    no MCP server listed
  5. T1-15Browser join page is safe to load
    Outcome: N/ASeverity: P1§6
    no web.browser_session_endpoint
  6. T1-07Browser endpoint rejects a junk join
    Outcome: N/ASeverity: P0§6
    no web.browser_session_endpoint
  7. T1-16Browser join authorization requires a Session
    Outcome: N/ASeverity: P1§6
    no web.browser_session_endpoint
  8. T1-09Operations endpoint requires a token
    Outcome: N/ASeverity: P2Draft 0.2 Ops §2
    operations extension not advertised
  9. T1-13Feedback endpoint requires a token
    Outcome: N/ASeverity: P1Draft 0.2 §8
    no feedback.endpoint
  10. T1-14Protocol endpoints answer without a redirect
    Outcome: N/ASeverity: P1§3
    a Draft 0.2 rule; this file declares 0.1 (see ADV-REDIRECT)
  11. ADV-REDIRECTEndpoint answers without a redirect
    Outcome: N/ASeverity: AdvisoryDraft 0.1 guides#agent-dpop
    no probe sent

Tier 2a: coming soon

Valid requests with a real client, once Ora publishes its own client metadata and signs real requests. Not measured yet. These planned checks were written for PAP Draft 0.2, and their sections are its numbering; they will be rewritten for Draft 0.3 before any is built.10 not measured
Show the 10 planned checks
  1. T2-M1Call each read-only OpenAPI GET with no token, then with a valid signed-out token
    Outcome: Not measuredSeverity: P1coming soonDraft 0.2 §6
  2. T2-M5Load the consent page for Ora's real client_id from a valid S256 request and inspect headers; never sign in
    Outcome: Not measuredSeverity: Advisorycoming soonDraft 0.2 guides
  3. T2-01Start a Session for U1
    Outcome: Not measuredSeverity: P0coming soonDraft 0.2 §4.2
  4. T2-02Token lifetime
    Outcome: Not measuredSeverity: P2coming soonDraft 0.2 §4.2
  5. T2-05Renew with session_id
    Outcome: Not measuredSeverity: P1coming soonDraft 0.2 §4.2
  6. T2-14Nonce challenge
    Outcome: Not measuredSeverity: P1coming soonDraft 0.2 §4.3
  7. T2-16Token request with no DPoP proof for an MCP server (resource = MCP url)
    Outcome: Not measuredSeverity: P1coming soonDraft 0.2 §4.3, §6
  8. T2-18Token accepted without cookies
    Outcome: Not measuredSeverity: P1coming soonDraft 0.2 §4.3
  9. T2-19Valid browser assertion, form POST
    Outcome: Not measuredSeverity: P0coming soonDraft 0.2 §5
  10. T2-25Cookie scope
    Outcome: Not measuredSeverity: Advisorycoming soonDraft 0.2 guides

Tier 2b: requires opt-in

Checks that run only for a verified owner who opts in. Not measured yet. These planned checks were written for PAP Draft 0.2, and their sections are its numbering; they will be rewritten for Draft 0.3 before any is built.36 not measured
Show the 36 planned checks
  1. T2-M2Send a valid Session Token in ?access_token= instead of the header
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.3
  2. T2-M3Send a valid browser assertion in the URL instead of the form body
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §5
  3. T2-M4Start Direct Sign-In with code_challenge_method=plain and Ora's real client_id; stop at the authorization endpoint
    Outcome: Not measuredSeverity: Advisoryrequires opt-inDraft 0.2 guides
  4. T1-12Mediated endpoint, only if the company opts in: two bad-credential attempts
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §4.7, guides
  5. T2-03Replay the same assertion jti
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.2
  6. T2-04Assertion with aud as an array, or as an endpoint URL instead of auth.issuer
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §4.2
  7. T2-06Renew U1's Session with a U2 assertion
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.2
  8. T2-07Assertion signed with a key not in Ora's JWKS
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.1
  9. T2-08alg: none or HS256 assertion
    Outcome: Not measuredSeverity: Advisoryrequires opt-inDraft 0.2 guides
  10. T2-09Token request with a reused proof jti
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.3
  11. T2-10Proof with wrong htu or htm
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.3
  12. T2-11Proof with wrong ath
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.3
  13. T2-12Proof signed by a different key than the token's binding
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.3
  14. T2-13Stale iat (beyond ~1 min)
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §4.3
  15. T2-15Token sent as Authorization: Bearer to a non-MCP endpoint
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.3
  16. T2-17That Bearer token at another MCP server or an OpenAPI endpoint
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §4.3
  17. T2-20Replay the same browser assertion
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §5
  18. T2-21exp more than 60 s after iat
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §5
  19. T2-22return_to on a foreign domain
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §5
  20. T2-23Session assertion (wrong typ) at the browser endpoint
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §5
  21. T2-24Browser assertion at the token endpoint
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §5
  22. T2-26Start with a general question
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §7.3
  23. T2-27Retry the same message id and content
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §7.3
  24. T2-28Same id, different content
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §7.3
  25. T2-29Read events with and without wait
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §7.5, §7.7
  26. T2-30POST …/messages?wait=10
    Outcome: Not measuredSeverity: P2requires opt-inDraft 0.2 §7.3
  27. T2-31Junk cursor
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §7.13
  28. T2-32U2 reads U1's conversation
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 §7.2
  29. T2-33Stream with Accept: text/event-stream
    Outcome: Not measuredSeverity: P2requires opt-inDraft 0.2 §7.6
  30. T2-34Ask about the account while signed out
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §7.11
  31. T2-35Message with only context
    Outcome: Not measuredSeverity: P2requires opt-inDraft 0.2 §7.4
  32. T2-36Close, then send a message
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 §7.12
  33. T2-37Handoff (opt-in only; may page staff)
    Outcome: Not measuredSeverity: P2requires opt-inDraft 0.2 §7.9
  34. T2-38Ora client metadata without extensions.operations, trigger a proposing endpoint
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 Ops §2
  35. T2-39U2 reads U1's signed-out operation
    Outcome: Not measuredSeverity: P0requires opt-inDraft 0.2 Ops §3.2
  36. T2-40Confirm an old revision (if revisions can be triggered)
    Outcome: Not measuredSeverity: P1requires opt-inDraft 0.2 Ops §5.2

Tier 3: needs a test account and a person

Checks that need a test account from the company and a person at the keyboard. Ora does not run these on its own. These planned checks were written for PAP Draft 0.2, and their sections are its numbering; they will be rewritten for Draft 0.3 before any is built.17 not measured
Show the 17 planned checks
  1. T3-01Direct sign-in
    Outcome: Not measuredSeverity: P0needs a test account and a personDraft 0.2 §4.5
  2. T3-02Redirect URI not in Ora's redirect_uris
    Outcome: Not measuredSeverity: P0needs a test account and a personDraft 0.2 §4.5
  3. T3-03User declines
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §4.5
  4. T3-04Device sign-in
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §4.6
  5. T3-05Mediated sign-in (if offered)
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §4.7
  6. T3-06Partial scope approval
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §4.4
  7. T3-07Request an unlisted scope
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §4.4
  8. T3-08Scope enforcement across channels
    Outcome: Not measuredSeverity: P0needs a test account and a personDraft 0.2 §4.4, guides
  9. T3-09Account Token from another client_id or at an API
    Outcome: Not measuredSeverity: P0needs a test account and a personDraft 0.2 §4.8
  10. T3-10Account Token with narrower and wider scope
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §4.8
  11. T3-11Sign a Session into account B after account A
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §4.4
  12. T3-12Revoke the Account Token
    Outcome: Not measuredSeverity: P0needs a test account and a personDraft 0.2 §4.9
  13. T3-13Signed-out token on an account-using conversation
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §7.11
  14. T3-14Direct Conversation
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 §7.10
  15. T3-15Operation end to end (sandbox action)
    Outcome: Not measuredSeverity: P0needs a test account and a personDraft 0.2 Ops §3, Ops §6
  16. T3-16standing_permission on a user_approval_required operation
    Outcome: Not measuredSeverity: P1needs a test account and a personDraft 0.2 Ops §5.2
  17. T3-17Account settings
    Outcome: Not measuredSeverity: Advisoryneeds a test account and a personDraft 0.2 guides