# Sites with a broken Personal Agent Protocol document

A site-wide report: one row per host, over the pap rows the crawl emitted.

## What this report returns

The Personal Agent Protocol puts a file at `/.well-known/poppy.json` that tells a customer's own AI agent how to start a session with a business, sign in on the customer's behalf, and reach the business's agent, APIs or website.

A row appears here when any of these is wrong, worst first:

-   **Not HTTPS**Poppy.json was served over plain http, or a redirect took it to http, so agents (which must only follow HTTPS) refuse it, and the document could be altered in transit.**Fix** Serve `https://yourdomain/.well-known/poppy.json`, with every redirect to an https:// address.
-   **Invalid Version**Protocol\_version is missing or isn't major.minor, so an agent can't tell whether it supports the document and must not use it.**Fix** Set `"protocol_version": "0.1"`.
-   **Missing Organization**The document has no organization domain, which is required, so an agent can't confirm the document speaks for this site.**Fix** Add `"organization": {"name": "Example Company", "domain": "example.com"}`.
-   **Domain Mismatch**Organization.domain names a different host from the one the document was requested at (a leading www. is ignored), so a compliant agent rejects it.**Fix** Set organization.domain to this site's domain, e.g. `"domain": "example.com"` for example.com/.well-known/poppy.json.
-   **Missing Auth**The document lists a company agent, APIs or a browser-session endpoint but has no auth block, and every session needs one, so nothing it offers can be used.**Fix** Add `"auth": {"issuer": "https://auth.example.com"}` with the sign-in types you support.
-   **Issuer Not HTTPS**Auth.issuer is missing or isn't an https:// URL, so an agent can't find or trust the OAuth server behind your sessions.**Fix** Set `"issuer": "https://auth.example.com"`, the exact issuer your OAuth metadata names.
-   **Insecure Endpoint**An agent conversation endpoint or the browser-session endpoint is on plain http, so session tokens and browser assertions sent there travel unencrypted; the protocol requires HTTPS for both.**Fix** Serve them over https and list the https:// addresses.
-   **Issuer Metadata Missing**The OAuth issuer named in auth.issuer publishes no authorization-server metadata (it answered 404 at the RFC 8414 address), so an agent can't find where to get a session token.**Fix** Publish `https://auth.example.com/.well-known/oauth-authorization-server`.
-   **Issuer Mismatch**The issuer's OAuth metadata names a different issuer from auth.issuer, so every compliant agent refuses the document.**Fix** Make auth.issuer and the metadata's `"issuer"` the same string, character for character.
-   **Domain Not Listed**The issuer's OAuth metadata has no `poppy_domains` list, or it doesn't include this domain, so compliant agents refuse the document; the list is what stops another site claiming your issuer.**Fix** Add `"poppy_domains": ["example.com"]` to the metadata.
-   **No Channel**The document offers none of agent, apis or web, so a personal agent has no way to reach the business through it.**Fix** Add at least one, e.g. `"web": {}` to let agents browse the site, or an `"apis"` list.
-   **Browser Session Off Domain**Web.`browser_session_endpoint` is on a host outside organization.domain and its subdomains, which the protocol forbids, so agents won't join a browser session there.**Fix** Host it on your own domain, e.g. `https://example.com/poppy/browser-session`.
-   **Unknown API Type**An entry in apis has a type other than openapi or mcp, the only two the protocol defines, so agents skip it.**Fix** Set `"type": "openapi"` or `"type": "mcp"` and point url at that description or server.
-   **Issuer Metadata Incomplete**The issuer's OAuth metadata lacks an endpoint the protocol requires: `token_endpoint` and `revocation_endpoint` always, `authorization_endpoint` when direct sign-in is offered, `device_authorization_endpoint` when device sign-in is.**Fix** Add the missing endpoint to the metadata.

Spec: Personal Agent Protocol draft 0.1, sections 3, 3.1, 3.2, 5 and 6, with RFC 8414 for the issuer metadata. Sites that publish no poppy.json don't appear here, because absence is not a failure.

Security checks are provisional; precision has not yet been measured. A clean row is not a security assessment.

## The columns it shows

Every defect this technology can carry is a column in the grid, worst first, so nothing is hidden behind a filter you have to know to apply.

-   Host`host`
-   Personal Agent Protocol Valid`papValid`
-   Personal Agent Protocol Security Risk Detected`papSecurityRiskDetected`
-   Personal Agent Protocol Findings`papFindings`
-   Personal Agent Protocol Version`papProtocolVersion`
-   Personal Agent Protocol Channels`papChannels`
-   Personal Agent Protocol Issuer`papIssuer`
-   Personal Agent Protocol Not HTTPS`papNotHttps`
-   Personal Agent Protocol Invalid Version`papInvalidVersion`
-   Personal Agent Protocol Missing Organization`papMissingOrganization`
-   Personal Agent Protocol Domain Mismatch`papDomainMismatch`
-   Personal Agent Protocol Missing Auth`papMissingAuth`
-   Personal Agent Protocol Issuer Not HTTPS`papIssuerNotHttps`
-   Personal Agent Protocol Insecure Endpoint`papInsecureEndpoint`
-   Personal Agent Protocol Issuer Metadata Missing`papIssuerMetadataMissing`
-   Personal Agent Protocol Issuer Mismatch`papIssuerMismatch`
-   Personal Agent Protocol Domain Not Listed`papDomainNotListed`
-   Personal Agent Protocol No Channel`papNoChannel`
-   Personal Agent Protocol Browser Session Off Domain`papBrowserSessionOffDomain`
-   Personal Agent Protocol Unknown API Type`papUnknownApiType`
-   Personal Agent Protocol Issuer Metadata Incomplete`papIssuerMetadataIncomplete`
-   Personal Agent Protocol Partially Assessed`papPartiallyAssessed`
-   Ruleset Version`rulesetVersion`
-   Security Check Status`securityCheckStatus`
-   Related Security Frameworks`securityFrameworkReferences`

## About Personal Agent Protocol

A file at /.well-known/poppy.json that tells a person's own AI agent how to sign in to a business and reach it.

[Read how Personal Agent Protocol is checked](https://agentic-readiness.lumar.io/docs/capabilities/pap), including the specification it is validated against and a worked correct and broken example.

## Running it

This report comes with Agentic Readiness in Lumar and appears on every crawl of any project that has it turned on. [See the whole set](https://agentic-readiness.lumar.io/scan-at-scale), or check a single URL with the [scanner on this site](https://agentic-readiness.lumar.io/), which runs the same code with no account.

[Get Lumar pricing →](https://www.lumar.io/pricing/)
