agent-ready-personal-agent-protocol · git:20261018.c0bbbd8 · 2026-10-18 · sha256 7c29dd014c487110

agent-ready-personal-agent-protocol git:20261018.c0bbbd8A

Immutable. This exact content never changes and is served at /api/v1/blob/7c29dd014c487110.

---
name: agent-ready-personal-agent-protocol
description: >
  Sub-skill: Implement Personal Agent Protocol (Poppy) discovery. Publish
  /.well-known/poppy.json (draft 0.1) and validate its OAuth issuer binding.
  Informational check; does not affect level or score.
---
# Implement Personal Agent Protocol (Poppy) discovery

Publish public discovery metadata for the [Personal Agent Protocol draft
0.1](https://personalagentprotocol.org/docs/spec#3-discovery). This check is
informational and does not affect readiness levels or percentage scores.

## Website-only discovery

Serve JSON at `https://YOUR-DOMAIN/.well-known/poppy.json`:

```json
{
  "protocol_version": "0.1",
  "organization": { "name": "Example Company", "domain": "example.com" },
  "web": {}
}
```

Replace the example organization with your actual name and domain. The domain
must match the hostname of the requested well-known URL, ignoring leading
`www.`. HTTPS redirects to a hosting provider are allowed, but that provider's
hostname must not replace your organization domain. Return JSON, not your SPA's
HTML fallback. Unknown fields and optional extensions are allowed.

## Session-enabled interfaces

Declare the interfaces you actually implement: `agent.protocols` entries with
`type` and HTTPS `endpoint`, `apis` entries with `type`, HTTPS `url`, and
`description`, or `web.browser_session_endpoint`. Agent/API declarations and
browser-session endpoints require `auth.issuer`.

The issuer must publish RFC 8414 metadata with:

- `issuer` exactly matching `auth.issuer`;
- `poppy_domains` containing `organization.domain`;
- HTTPS `token_endpoint` and `revocation_endpoint`;
- `authorization_endpoint` when `auth.direct` is declared;
- `device_authorization_endpoint` when `auth.device` is declared.

For issuer `https://auth.example.com/tenant`, publish metadata at
`https://auth.example.com/.well-known/oauth-authorization-server/tenant`.
Direct, device, and mediated sign-in declarations contain scope arrays. Mediated
sign-in also describes its endpoint and credential fields; never put actual
credentials or secrets in discovery metadata.

Publish only capabilities backed by working implementations. Passing this check
confirms public discovery and issuer binding, not functioning sessions, sign-in,
API authorization, or conversations. The draft may change before version 1.0.

## Verify

Scan your site and inspect `checks.discovery.personalAgentProtocol`. Its
`details.issuerValidation` reports `verified`, `notRequired`, `unverified`,
`invalid`, or `notChecked`. Use the audit evidence to diagnose invalid fields,
redirects, and issuer/domain mismatches. Network failures and unsupported major
versions return `unableToCheck` while retaining available discovery evidence.