DocsCapabilitiesPersonal Agent Protocol
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.
Why an agent cares
It is how a customer's personal agent starts a session with a company, signs in on the customer's behalf, and finds the company's agent, APIs or website. Every rule a site can break is a MUST in the draft, and a compliant agent refuses a document that breaks one, so a broken file turns customers' agents away.
Adoption
Early pilots. Named early adopters exist, behind flags or trials. Nothing has been independently measured yet.
Direction of travel: ▲ rising, as at .
Draft 0.1 was published on 2026-10-09 by Sierra with Meta and 43 named design partners. Five days later 27 live documents from 10 publishers existed, every one valid; none of the design partners publishes one yet.
| Adopter | Depth | Evidence |
|---|---|---|
| Tilopay (15 storefronts) | production | tilopay.shop |
| Print with Poppy | production | printwithpoppy.com |
| Emora Health | production | emorahealth.com |
What we check
| Check | Severity | Raises | On whose authority |
|---|---|---|---|
| Personal Agent Protocol Not HTTPS | high | conformance, usability, security (CWE-319) | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Provisional security check; precision has not yet been measured. Bad: 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. An advertised agent communication path lacks confidentiality. OWASP Agentic ASI07 (2026) — Insecure Inter-Agent CommunicationOWASP API API8 (2023) — Security MisconfigurationASVS V12.2.1 (5.0.0) — TLS for external HTTP services Runtime message integrity and authorization are not tested. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
| Personal Agent Protocol Invalid Version | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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". | |||
| Personal Agent Protocol Missing Organization | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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"}. | |||
| Personal Agent Protocol Domain Mismatch | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Missing Auth | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Issuer Not HTTPS | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Insecure Endpoint | high | conformance, usability, security (CWE-319) | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Provisional security check; precision has not yet been measured. Bad: 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. An advertised agent communication path lacks confidentiality. OWASP Agentic ASI07 (2026) — Insecure Inter-Agent CommunicationOWASP API API8 (2023) — Security MisconfigurationASVS V12.2.1 (5.0.0) — TLS for external HTTP services Runtime message integrity and authorization are not tested. Related guidance does not establish exploitation or framework compliance. Security checks are provisional. | |||
| Personal Agent Protocol Issuer Metadata Missing | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Issuer Mismatch | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Domain Not Listed | high | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol No Channel | medium | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Browser Session Off Domain | medium | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Unknown API Type | medium | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Issuer Metadata Incomplete | medium | conformance, usability | specification: Personal Agent Protocol specification, draft 0.1 |
Supporting documents: Personal Agent Protocol specification, draft 0.1 Required by Personal Agent Protocol specification, draft 0.1. Bad: 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. | |||
| Personal Agent Protocol Partially Assessed | coverage note | nothing | our own coverage |
Examples
Both run through the same checks as a live scan: the first passes, the second is flagged.
{
"protocol_version": "0.1",
"organization": { "name": "Example Company", "domain": "example.com" },
"auth": {
"issuer": "https://auth.example.com",
"direct": { "scopes": ["poppy:read", "poppy:write"] },
"device": { "scopes": ["poppy:read"] }
},
"agent": {
"protocols": [{ "type": "poppy", "endpoint": "https://api.example.com/poppy/conversations" }]
},
"web": { "browser_session_endpoint": "https://example.com/poppy/browser-session" },
"apis": [
{ "type": "openapi", "url": "https://api.example.com/openapi.json", "description": "Orders and returns" },
{ "type": "mcp", "url": "https://mcp.example.com/mcp", "description": "Product search" }
],
"extensions": { "operations": { "version": "1", "endpoint": "https://api.example.com/poppy/operations" } }
}{
"protocol_version": "1",
"organization": { "name": "Example Company", "domain": "another-company.example" },
"agent": {
"protocols": [{ "type": "poppy", "endpoint": "http://api.example.com/poppy/conversations" }]
},
"apis": [{ "type": "graphql", "url": "https://api.example.com/graphql", "description": "Everything" }]
}Specifications
| Document | Revision | Kind |
|---|---|---|
| Personal Agent Protocol specification, draft 0.1 | Draft 0.1 (2026-10-09) | specification |
| RFC 8414 — OAuth 2.0 Authorization Server Metadata | Published RFC | specification |
| Sierra: Sharing a draft of Personal Agent Protocol | Living document | guidance |
Last re-read against the published documents: .