Personal Agent Protocol report

seminara.online

seminara.online 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
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.16 pass, 1 fail, 20 N/A
  1. T0-01Document exists
    Outcome: PassSeverity: P0§3
    served at https://seminara.online/.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.3
  5. T0-05Organization names its own host
    Outcome: PassSeverity: P0§3.1
    organization.domain seminara.online
  6. T0-06Has an interface
    Outcome: PassSeverity: P0§3.1
    interfaces: web
  7. T0-07Issuer identified
    Outcome: PassSeverity: P0§3.2
    issuer https://seminara.online, from https://seminara.online/.well-known/oauth-protected-resource
  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 seminara.online
  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.3
  11. T0-09Issuer metadata reachable
    Outcome: PassSeverity: P0§3.2
    https://seminara.online/.well-known/oauth-authorization-server
  12. T0-10Issuer match
    Outcome: PassSeverity: P0§3.2
    issuer https://seminara.online
  13. T0-11Domain binding
    Outcome: PassSeverity: P0§3.2
    protected_resources includes https://seminara.online
  14. T0-12Required endpoints
    Outcome: PassSeverity: P0§3.2
    token_endpoint, revocation_endpoint, authorization_endpoint, device_authorization_endpoint; grant_types_supported includes refresh_token
  15. T0-21Cache headers
    Outcome: N/ASeverity: P2Draft 0.2 §3.2
    a Draft 0.1 and 0.2 inference; Draft 0.3 removed the caching rule
  16. T0-22Signing algorithms valid
    Outcome: PassSeverity: P1§4.1
    token_endpoint_auth_signing_alg_values_supported includes ES256
  17. T0-23Same sign-in on every domain
    Outcome: N/ASeverity: P1§3.2
    protected_resources lists no other domain
  18. ADV-PKCENo plain PKCE
    Outcome: PassSeverity: Advisoryguides#company-consent
    PKCE methods: S256
  19. T0-13Scopes defined
    Outcome: N/ASeverity: P1§3.1, §4.7
    no auth.scopes or auth.scope_hints
  20. T0-14Mediated sign-in well formed
    Outcome: N/ASeverity: P1Mediated Sign-In §2
    no Mediated Sign-In extension
  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
    neither auth.disabled nor web.disabled is set
  24. T0-26Offered scopes described
    Outcome: FailSeverity: P2§4.7
    no description in auth.scopes or a listed OpenAPI document for sessions:read, sessions:write, analytics:read, leads:read, checkout:write and 1 more; an agent pi…Show the full noteno description in auth.scopes or a listed OpenAPI document for sessions:read, sessions:write, analytics:read, leads:read, checkout:write and 1 more; an agent picks the scopes a task needs by their descriptions (a SHOULD in spec 4.7 that Ora weighs for user experience). Describe each one, or leave a scope agents cannot request out of scopes_supported
  25. T0-28Browser sign-in scope listed
    Outcome: N/ASeverity: P2Draft 0.4 §6
    a Draft 0.4 rule; this file declares 0.3
  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
    no excluded_tasks.url
  31. X-01Same MCP server everywhere
    Outcome: N/ASeverity: P2§7
    poppy.json lists no MCP server
  32. X-02Same organization
    Outcome: N/ASeverity: P2§3.1
    no ARD catalog host to compare
  33. X-04Domains covered
    Outcome: N/ASeverity: P2§3.2
    protected_resources lists no other domain
  34. X-07One issuer
    Outcome: N/ASeverity: P2§3.2
    from Draft 0.3 the issuer comes from the domain's protected resource metadata (spec 3.2), which T0-07 and T0-18 grade
  35. X-08One metadata document
    Outcome: N/ASeverity: Advisory§3.2
    from Draft 0.3 a site may list several authorization servers, and auth.issuer picks the one agents use (spec 3.2)
  36. X-10Shared token endpoint lists both protocols' grants
    Outcome: PassSeverity: P2§3.2
    grant_types_supported carries both protocols' grants
  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.Tier 1 last probed .3 pass, 8 N/A
  1. T1-01Token endpoint rejects a junk grant
    Outcome: PassSeverity: P1§4.4
    https://seminara.online/api/v1/oauth/device/token answered HTTP 400 invalid_request (advisory: a refresh token nobody issued is invalid_grant, and an unknown cl…Show the full notehttps://seminara.online/api/v1/oauth/device/token answered HTTP 400 invalid_request (advisory: a refresh token nobody issued is invalid_grant, and an unknown client invalid_client)
  2. T1-02Error bodies leak nothing
    Outcome: PassSeverity: Advisoryguides#company-errors
    no stack traces in error bodies
  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
    Draft 0.3 removed the operations endpoint: an operation is approved by sending the same request again
  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: PassSeverity: P1§3
    every probed endpoint answered without a redirect
  11. ADV-REDIRECTEndpoint answers without a redirect
    Outcome: N/ASeverity: AdvisoryDraft 0.1 guides#agent-dpop
    graded as T1-14 for a file declaring 0.2 or later

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