Personal Agent Protocol report
culenz.com
culenz.com 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
Tier 0: the public files
Plain reads of poppy.json and the documents it points to. None of these requests carries a credential.9 pass, 28 N/A- T0-01Document existsserved at https://www.culenz.com/.well-known/poppy.json
- T0-02Redirects safe1 redirect(s), all HTTPS
- T0-03Valid JSON objecta JSON object
- T0-04Supported protocol_version
protocol_version 0.4, graded as a preview of Draft 0.4 (in progress) (advisory: the latest published draft is 0.3, and an agent that supports only 0.3 will not…Show the full noteHide the full note
protocol_version 0.4, graded as a preview of Draft 0.4 (in progress) (advisory: the latest published draft is 0.3, and an agent that supports only 0.3 will not use this file, so list a 0.3 document in supported_versions) - T0-05Organization names its own hostorganization.domain www.culenz.com; the file was requested from culenz.com and served by www.culenz.com, so it speaks for www.culenz.com
- T0-06Has an interfaceinterfaces: web
- T0-07Issuer identifiedno issuer (https://www.culenz.com/.well-known/oauth-protected-resource answers 404): the Company offers signed-out Sessions only
- T0-08All URLs HTTPSevery URL is https
- T0-SIBPublished on the requested hostpublished on culenz.com
- T0-27Other version documents consistentsupported_versions lists no other version
- T0-09Issuer metadata reachableGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- T0-10Issuer matchGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- T0-11Domain bindingGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- T0-12Required endpointsGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- T0-21Cache headersGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- T0-22Signing algorithms validGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- T0-23Same sign-in on every domainGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- ADV-PKCENo plain PKCEGraded as a preview of Draft 0.4 (in progress). The Company has no issuer, so it offers signed-out Sessions only
- T0-13Scopes definedno auth.scopes or auth.scope_hints
- T0-14Mediated sign-in well formedno Mediated Sign-In extension
- T0-19Extensions named correctlyno extensions
- T0-20Extensions advertised fullyoperations extension not advertised
- T0-24Switched off consistentlyneither auth.disabled nor web.disabled is set
- T0-26Offered scopes describedno issuer, so no offered scopes
- T0-28Browser sign-in scope listedno browser join (web.browser_session_endpoint)
- T0-15Conversation entriesno agent block
- T0-16API entriesno apis
- T0-17OpenAPI parsesno openapi entries
- T0-18MCP resource metadatano mcp entries
- T0-25Excluded tasks documentDraft 0.4 serves excluded tasks per Session, behind tasks.endpoint, which Ora does not read without a Session header
- X-01Same MCP server everywherepoppy.json lists no MCP server
- X-02Same organizationno ARD catalog host to compare
- X-04Domains coveredprotected_resources lists no other domain
- X-07One issuerfrom Draft 0.3 the issuer comes from the domain's protected resource metadata (spec 3.2), which T0-07 and T0-18 grade
- X-08One metadata documentfrom Draft 0.3 a site may list several authorization servers, and auth.issuer picks the one agents use (spec 3.2)
- X-10Shared token endpoint lists both protocols' grantsno other protocol shares the PAP issuer's token endpoint
- X-12Consistent 401sno 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- T1-01Token endpoint rejects a junk grantthe Company has no issuer
- T1-02Error bodies leak nothingno probe answered
- T1-03Conversation endpoint refuses a request with no credentialsno poppy conversation endpoint
- T1-05MCP server challenges unauthenticated initializeno MCP server listed
- T1-15Browser join page is safe to loadno web.browser_session_endpoint
- T1-07Browser endpoint rejects a junk joinno web.browser_session_endpoint
- T1-16Browser join authorization requires a Sessionno web.browser_session_endpoint
- T1-09Operations endpoint requires a tokenno operations endpoint for website operations
- T1-13Feedback endpoint requires a tokenDraft 0.4 moved feedback.endpoint out of poppy.json into the per-Session tasks response
- T1-14Protocol endpoints answer without a redirectno probe sent
- ADV-REDIRECTEndpoint answers without a redirectgraded 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 measuredShow the 10 planned checks
- T2-M1Call each read-only OpenAPI GET with no token, then with a valid signed-out token
- T2-M5Load the consent page for Ora's real client_id from a valid S256 request and inspect headers; never sign in
- T2-01Start a Session for U1
- T2-02Token lifetime
- T2-05Renew with session_id
- T2-14Nonce challenge
- T2-16Token request with no DPoP proof for an MCP server (resource = MCP url)
- T2-18Token accepted without cookies
- T2-19Valid browser assertion, form POST
- T2-25Cookie scope
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 measuredShow the 36 planned checks
- T2-M2Send a valid Session Token in ?access_token= instead of the header
- T2-M3Send a valid browser assertion in the URL instead of the form body
- T2-M4Start Direct Sign-In with code_challenge_method=plain and Ora's real client_id; stop at the authorization endpoint
- T1-12Mediated endpoint, only if the company opts in: two bad-credential attempts
- T2-03Replay the same assertion jti
- T2-04Assertion with aud as an array, or as an endpoint URL instead of auth.issuer
- T2-06Renew U1's Session with a U2 assertion
- T2-07Assertion signed with a key not in Ora's JWKS
- T2-08alg: none or HS256 assertion
- T2-09Token request with a reused proof jti
- T2-10Proof with wrong htu or htm
- T2-11Proof with wrong ath
- T2-12Proof signed by a different key than the token's binding
- T2-13Stale iat (beyond ~1 min)
- T2-15Token sent as Authorization: Bearer to a non-MCP endpoint
- T2-17That Bearer token at another MCP server or an OpenAPI endpoint
- T2-20Replay the same browser assertion
- T2-21exp more than 60 s after iat
- T2-22return_to on a foreign domain
- T2-23Session assertion (wrong typ) at the browser endpoint
- T2-24Browser assertion at the token endpoint
- T2-26Start with a general question
- T2-27Retry the same message id and content
- T2-28Same id, different content
- T2-29Read events with and without wait
- T2-30POST …/messages?wait=10
- T2-31Junk cursor
- T2-32U2 reads U1's conversation
- T2-33Stream with Accept: text/event-stream
- T2-34Ask about the account while signed out
- T2-35Message with only context
- T2-36Close, then send a message
- T2-37Handoff (opt-in only; may page staff)
- T2-38Ora client metadata without extensions.operations, trigger a proposing endpoint
- T2-39U2 reads U1's signed-out operation
- T2-40Confirm an old revision (if revisions can be triggered)
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 measuredShow the 17 planned checks
- T3-01Direct sign-in
- T3-02Redirect URI not in Ora's redirect_uris
- T3-03User declines
- T3-04Device sign-in
- T3-05Mediated sign-in (if offered)
- T3-06Partial scope approval
- T3-07Request an unlisted scope
- T3-08Scope enforcement across channels
- T3-09Account Token from another client_id or at an API
- T3-10Account Token with narrower and wider scope
- T3-11Sign a Session into account B after account A
- T3-12Revoke the Account Token
- T3-13Signed-out token on an account-using conversation
- T3-14Direct Conversation
- T3-15Operation end to end (sandbox action)
- T3-16standing_permission on a user_approval_required operation
- T3-17Account settings