agentic‑readiness docs
/
Scan at scale Blog Build one › Run a scan ›

Scan at scaleSites with a broken Personal Agent Protocol document

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 HTTPSPoppy.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 VersionProtocol_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 OrganizationThe 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 MismatchOrganization.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 AuthThe 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 HTTPSAuth.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 EndpointAn 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 MissingThe 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 MismatchThe 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 ListedThe 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 ChannelThe 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 DomainWeb.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 TypeAn 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 IncompleteThe 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.

  • Hosthost
  • Personal Agent Protocol ValidpapValid
  • Personal Agent Protocol Security Risk DetectedpapSecurityRiskDetected
  • Personal Agent Protocol FindingspapFindings
  • Personal Agent Protocol VersionpapProtocolVersion
  • Personal Agent Protocol ChannelspapChannels
  • Personal Agent Protocol IssuerpapIssuer
  • Personal Agent Protocol Not HTTPSpapNotHttps
  • Personal Agent Protocol Invalid VersionpapInvalidVersion
  • Personal Agent Protocol Missing OrganizationpapMissingOrganization
  • Personal Agent Protocol Domain MismatchpapDomainMismatch
  • Personal Agent Protocol Missing AuthpapMissingAuth
  • Personal Agent Protocol Issuer Not HTTPSpapIssuerNotHttps
  • Personal Agent Protocol Insecure EndpointpapInsecureEndpoint
  • Personal Agent Protocol Issuer Metadata MissingpapIssuerMetadataMissing
  • Personal Agent Protocol Issuer MismatchpapIssuerMismatch
  • Personal Agent Protocol Domain Not ListedpapDomainNotListed
  • Personal Agent Protocol No ChannelpapNoChannel
  • Personal Agent Protocol Browser Session Off DomainpapBrowserSessionOffDomain
  • Personal Agent Protocol Unknown API TypepapUnknownApiType
  • Personal Agent Protocol Issuer Metadata IncompletepapIssuerMetadataIncomplete
  • Personal Agent Protocol Partially AssessedpapPartiallyAssessed
  • Ruleset VersionrulesetVersion
  • Security Check StatussecurityCheckStatus
  • Related Security FrameworkssecurityFrameworkReferences

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, 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, or check a single URL with the scanner on this site, which runs the same code with no account.

Get Lumar pricing