BuildNot yet confirmed elsewhere1 publisher2 min readPublished
Personal Agent Protocol agents read poppy.json, then verify it against the issuer's OAuth metadata
Sierra and Meta's Personal Agent Protocol, draft 0.1 with 35 design partners, makes /.well-known/poppy.json the first file a user's AI agent reads. The issuer's OAuth metadata must list the domain too.
The Engineer · Build desk

Domain owner: serve poppy.json over HTTPS as JSON. Sign-in server: list each domain in poppy_domains. MCP operator: list the issuer, or MCP clients cannot sign in. Shared-issuer domains: each names itself. Existing files: draft 0.1 can change in ways that break them.
- constraint Domain owner Must serve poppy.json at /.well-known/ over HTTPS as JSON; any redirect must stay on HTTPS, claim 4
- constraint Sign-in server (auth.issuer) Its OAuth metadata must list each domain in poppy_domains, a PAP field that is not part of the OAuth standard, claim 6
- constraint MCP server operator Resource metadata must list the issuer in authorization_servers, or MCP clients cannot sign in, claim 11
- constraint Domains sharing one issuer Each names itself in organization.domain and must appear in poppy_domains; naming a parent brand is a common mistake, claim 9
- exposure Sites with existing files Draft 0.1 can still change in ways that break existing files; Sierra has said a reference implementation is coming, claim 21
| Who | How | Kind | Claim |
|---|---|---|---|
| Domain owner | Must serve poppy.json at /.well-known/ over HTTPS as JSON; any redirect must stay on HTTPS | constraint | 4 |
| Sign-in server (auth.issuer) | Its OAuth metadata must list each domain in poppy_domains, a PAP field that is not part of the OAuth standard | constraint | 6 |
| MCP server operator | Resource metadata must list the issuer in authorization_servers, or MCP clients cannot sign in | constraint | 11 |
| Domains sharing one issuer | Each names itself in organization.domain and must appear in poppy_domains; naming a parent brand is a common mistake | constraint | 9 |
| Sites with existing files | Draft 0.1 can still change in ways that break existing files; Sierra has said a reference implementation is coming | exposure | 21 |
What happened
- The file lives at /.well-known/poppy.json over HTTPS as JSON, and it may redirect as long as every hop stays on HTTPS.
- Before trusting a file, an agent fetches the OAuth metadata for auth.issuer under RFC 8414 and requires the issuer value to match exactly.
- The post warns that draft 0.1 can still change in ways that break existing files, and says Sierra has promised a reference implementation.
Why it matters
- cost Getting poppy.json right is not enough. A domain that lists an MCP server has to keep three documents consistent on one issuer.
- constraint A shared issuer means one metadata document must name every domain that uses it, so each new country site becomes an edit to the sign-in server.
- decision Publishing now risks rework if the draft breaks files. We'd expect staging validation first and production later, once Sierra's reference implementation lands.
- exposure The only validator in the record is one author's outside-in checker, which never signs in. A passing result does not prove a sign-in completes.
The file is only half of what an agent checks. According to a dev.to post that walks through the draft, an agent that finds a valid-looking poppy.json goes on to fetch the OAuth metadata for the file's `auth.issuer` [5]. The metadata must also list the domain in `poppy_domains`, a field PAP adds on top of the OAuth standard [6]. The post explains why the check exists: otherwise an impostor site could point its own poppy.json at your genuine sign-in server, and agents would route users to it [7].
The file itself is a routing table. The post's shortened example, taken from the spec, has blocks for auth, the company's agent endpoint, a browser-session endpoint, and a list of OpenAPI and MCP descriptions [16]. Each block points at something else the domain owner runs.
The documents multiply. A domain that offers both direct and device sign-in needs four endpoints in the issuer's metadata: token and revocation always, plus one authorization endpoint for each sign-in type [19]. If the file also lists an MCP server, that server's resource metadata must name the same issuer in `authorization_servers`, or MCP clients cannot sign in [11]. That makes three documents that have to agree [20].
Several domains can share one issuer. Each must name itself in `organization.domain` and each must appear in `poppy_domains` [9]. Adding a country site therefore means editing the issuer's metadata as well as the new site.
The post lists two other mistakes. Custom scopes may not start with `poppy:`, because that prefix is reserved for `poppy:read` and `poppy:write` [10]. And a storefront that answers every path with its HTML page fails the lookup, since agents need JSON at the well-known URL [12].
On adoption, the post's author checked the launch and design partners on 11 October. None served the file, and the only live files were developer demos [13][14]. The author calls that expected this soon after a draft [18].
We think that settles the urgency. Draft 0.1 can still change in ways that break existing files, and the post says Sierra has promised a reference implementation [21]. The post does not name an agent that already performs these lookups. We'd expect the cheaper path to be validating a staging domain now and publishing to production once the reference implementation exists.
The validator in question is one author's tool. It reads public documents from outside and never signs in, starts a session or calls APIs [15]. It can confirm that the documents agree with the draft, but not that a sign-in completes. The author says it follows the published draft and will move with it [22].
What to watch
- Sierra's reference implementation, and whether it changes draft 0.1 rules in ways that break existing files.
- The first named partner to serve a valid poppy.json; the author keeps first-seen dates at papchecker.com/sites.
- Any personal agent from a design partner such as OpenAI that ships the poppy.json and issuer-metadata lookup.
Clarity's read
What the record supports and how the coverage leans. The claims behind it follow.
Reality
- Evidence45
- Adoption3
- Hype gap+12
- Incentives35
- Confidence50
Claim ledger
Ranked by verification strength, evidence, and original report placement.
- [1]
The Personal Agent Protocol (PAP, nicknamed Poppy) is an open protocol, led by Sierra and Meta, for how a person's AI agent works with a company on their behalf: signing in as the user, using the company's APIs, joining a website session, or talking to the company's own agent.
- [2]
Draft 0.1 of PAP was published on 9 October 2026, with 35 design partners including OpenAI, Visa, Mastercard and PayPal.
- [3]
Everything a personal agent does with a company starts by reading one file: /.well-known/poppy.json.
- [4]
poppy.json sits at https://{your-domain}/.well-known/poppy.json, served over HTTPS as JSON. It may redirect, for example to a provider that hosts it, but every redirect must stay on HTTPS, and the document still speaks for the domain the agent asked for.
- [5]
Before using a poppy.json, a personal agent fetches the OAuth server metadata of auth.issuer (RFC 8414, at /.well-known/oauth-authorization-server) and checks that its issuer matches auth.issuer exactly.
- [6]
The issuer's metadata must also list the domain in poppy_domains, a field that is not part of the OAuth standard; PAP adds it so the sign-in server can say which domains it works for.
- [7]
Without the poppy_domains check, a fake site could publish a poppy.json naming your real sign-in server, and agents would send users there.
- [8]
The issuer metadata must publish a token_endpoint and revocation_endpoint, plus authorization_endpoint for direct sign-in and device_authorization_endpoint for device sign-in.
- [9]
A common mistake is setting organization.domain to a parent brand or a different country domain. Several domains can share one issuer, but each names itself and each must appear in poppy_domains.
- [10]
Custom scopes that start with poppy: are a mistake: the prefix is reserved and only poppy:read and poppy:write are allowed.
- [11]
If an MCP server's resource metadata does not list your issuer in authorization_servers, MCP clients cannot sign in.
- [12]
A storefront that answers every path with its HTML page is a mistake: agents need JSON at the well-known URL, not a soft 404.
- [13]
On 11 October the post's author checked the launch partners and design partners, including Shopify, Stripe, Walmart, Meta, Visa, Mastercard, PayPal, OpenAI and Cloudflare, and none served /.well-known/poppy.json.
- [14]
The only live poppy.json files the author found are developer demos.
- [15]
The author built PAP Checker to check a domain against draft 0.1 from the outside, the way a personal agent would. It only reads public documents and never signs in, starts a session, or calls the domain's APIs.
- [16]
The post's example poppy.json, shortened from the specification's example, has protocol_version and organization plus blocks for auth (issuer, direct and device scopes, custom scopes), agent (a poppy conversations endpoint), web (a browser_session_endpoint) and apis (OpenAPI and MCP entries).
- [17]
A running list of domains serving the file, with the day each was first seen, is at papchecker.com/sites.
- [18]
The author calls the absence of partner files expected three days after a draft, and says the first company to publish a correct file will be easy to spot.
- [19]
A domain offering both direct and device sign-in needs four endpoints in its issuer metadata.
- [20]
A domain that lists an MCP server has three documents that must agree on the issuer: poppy.json, the issuer's OAuth metadata, and the MCP server's resource metadata.
- [21]
Draft 0.1 can still change in ways that break existing files, and Sierra has said a reference implementation is coming.
- [22]
The checker follows the published draft and will move with it.
Sources
1 independent publisher whose own reporting we read for this story.
- dev.toWhat Is poppy.json? A Personal Agent Protocol Example, and How to Validate Yours
1 article · October 11, 2026
Topics and entities
Follow any of these and your For You feed starts watching them — no settings page required.
Topics
- Agentic CommerceFollow
- AI agent protocolsFollow
- OAuth and agent authorizationFollow