{
  "target": "https://fork-london-tile-ships.trycloudflare.com",
  "notes": [],
  "results": [
    {
      "id": "discovery.https",
      "title": "poppy.json is served over HTTPS at the well-known path",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#discovery",
      "quote": "A Company MUST publish its poppy.json document at https://{domain}/.well-known/poppy.json over HTTPS",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#discovery",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23discovery&kind=Question&description=Validator+check+discovery.https+%28%22poppy.json+is+served+over+HTTPS+at+the+well-known+path%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+Company+MUST+publish+its+poppy.json+document+at+https%3A%2F%2F%7Bdomain%7D%2F.well-known%2Fpoppy.json+over+HTTPS%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "Served at https://fork-london-tile-ships.trycloudflare.com/.well-known/poppy.json."
    },
    {
      "id": "discovery.redirects-https",
      "title": "Every redirect of the well-known URL is to an HTTPS URL",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#discovery",
      "quote": "every redirect MUST be to an HTTPS URL",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#discovery",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23discovery&kind=Question&description=Validator+check+discovery.redirects-https+%28%22Every+redirect+of+the+well-known+URL+is+to+an+HTTPS+URL%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22every+redirect+MUST+be+to+an+HTTPS+URL%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "No redirects."
    },
    {
      "id": "discovery.json",
      "title": "poppy.json is a JSON object",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#terms",
      "quote": "The JSON document a Company publishes at /.well-known/poppy.json",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#terms",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23terms&kind=Question&description=Validator+check+discovery.json+%28%22poppy.json+is+a+JSON+object%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+JSON+document+a+Company+publishes+at+%2F.well-known%2Fpoppy.json%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "discovery.schema",
      "title": "poppy.json fields have the forms section 3.1 describes",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#fields",
      "quote": "to tell Personal Agents how to start Sessions and sign in, and which APIs and Company Agent it offers",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#fields",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23fields&kind=Question&description=Validator+check+discovery.schema+%28%22poppy.json+fields+have+the+forms+section+3.1+describes%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22to+tell+Personal+Agents+how+to+start+Sessions+and+sign+in%2C+and+which+APIs+and+Company+Agent+it+offers%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "discovery.protocol-version",
      "title": "protocol_version is the version this validator checks",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#fields",
      "quote": "a Personal Agent MUST NOT use a document whose major.minor version it doesn't support.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#fields",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23fields&kind=Question&description=Validator+check+discovery.protocol-version+%28%22protocol_version+is+the+version+this+validator+checks%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22a+Personal+Agent+MUST+NOT+use+a+document+whose+major.minor+version+it+doesn%27t+support.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "protocol_version 0.2."
    },
    {
      "id": "discovery.domain-matches-host",
      "title": "organization.domain is the host that serves poppy.json, after redirects",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#fields",
      "quote": "domain MUST be the host that serves the document, after any redirects. Domains are compared ignoring case, with no other normalization.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#fields",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23fields&kind=Question&description=Validator+check+discovery.domain-matches-host+%28%22organization.domain+is+the+host+that+serves+poppy.json%2C+after+redirects%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22domain+MUST+be+the+host+that+serves+the+document%2C+after+any+redirects.+Domains+are+compared+ignoring+case%2C+with+no+other+normalization.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "organization.domain fork-london-tile-ships.trycloudflare.com matches the host."
    },
    {
      "id": "discovery.auth-present",
      "title": "auth is present when agent, apis, feedback, or web.browser_session_endpoint is",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#fields",
      "quote": "Sessions need auth, so a Company without it can only be browsed as an ordinary website (section 5).",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#fields",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23fields&kind=Question&description=Validator+check+discovery.auth-present+%28%22auth+is+present+when+agent%2C+apis%2C+feedback%2C+or+web.browser_session_endpoint+is%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Sessions+need+auth%2C+so+a+Company+without+it+can+only+be+browsed+as+an+ordinary+website+%28section+5%29.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "auth is present."
    },
    {
      "id": "discovery.interface-present",
      "title": "poppy.json lists at least one of agent, apis, or web",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#fields",
      "quote": "One of agent, apis, or web",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#fields",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23fields&kind=Question&description=Validator+check+discovery.interface-present+%28%22poppy.json+lists+at+least+one+of+agent%2C+apis%2C+or+web%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22One+of+agent%2C+apis%2C+or+web%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "discovery.api-types",
      "title": "Each API's type is openapi or mcp",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "Each API's type MUST be one of these",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+discovery.api-types+%28%22Each+API%27s+type+is+openapi+or+mcp%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Each+API%27s+type+MUST+be+one+of+these%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "No APIs listed."
    },
    {
      "id": "metadata.published",
      "title": "The issuer publishes OAuth Authorization Server Metadata",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "The issuer MUST publish OAuth Authorization Server Metadata (RFC 8414)",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.published+%28%22The+issuer+publishes+OAuth+Authorization+Server+Metadata%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+issuer+MUST+publish+OAuth+Authorization+Server+Metadata+%28RFC+8414%29%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "Loaded from https://fork-london-tile-ships.trycloudflare.com/.well-known/oauth-authorization-server/e/store."
    },
    {
      "id": "metadata.schema",
      "title": "The metadata has the fields section 3.2 requires, in the right forms",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "The Personal Agent uses these fields of the metadata",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.schema+%28%22The+metadata+has+the+fields+section+3.2+requires%2C+in+the+right+forms%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Personal+Agent+uses+these+fields+of+the+metadata%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "metadata.issuer-matches",
      "title": "The metadata's issuer exactly matches auth.issuer",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "MUST check that its issuer exactly matches auth.issuer",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.issuer-matches+%28%22The+metadata%27s+issuer+exactly+matches+auth.issuer%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22MUST+check+that+its+issuer+exactly+matches+auth.issuer%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "metadata.poppy-domains",
      "title": "poppy_domains includes organization.domain",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "poppy_domains in it MUST list every domain whose poppy.json names the issuer",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.poppy-domains+%28%22poppy_domains+includes+organization.domain%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22poppy_domains+in+it+MUST+list+every+domain+whose+poppy.json+names+the+issuer%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "metadata.token-endpoint",
      "title": "The metadata has a token_endpoint",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "token_endpoint issues Session and Account Tokens (4.2, 4.8). Required.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.token-endpoint+%28%22The+metadata+has+a+token_endpoint%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22token_endpoint+issues+Session+and+Account+Tokens+%284.2%2C+4.8%29.+Required.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "metadata.revocation-endpoint",
      "title": "The metadata has a revocation_endpoint",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "revocation_endpoint revokes Account Tokens (4.9). Required.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.revocation-endpoint+%28%22The+metadata+has+a+revocation_endpoint%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22revocation_endpoint+revokes+Account+Tokens+%284.9%29.+Required.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "metadata.dpop-algs",
      "title": "dpop_signing_alg_values_supported, if present, includes ES256",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "the list MUST then include ES256.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.dpop-algs+%28%22dpop_signing_alg_values_supported%2C+if+present%2C+includes+ES256%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22the+list+MUST+then+include+ES256.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "metadata.authorization-endpoint",
      "title": "The metadata has an authorization_endpoint when auth.direct is present",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "authorization_endpoint starts Direct Sign-In (4.5). Required if auth.direct is present.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.authorization-endpoint+%28%22The+metadata+has+an+authorization_endpoint+when+auth.direct+is+present%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22authorization_endpoint+starts+Direct+Sign-In+%284.5%29.+Required+if+auth.direct+is+present.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json doesn't list auth.direct."
    },
    {
      "id": "metadata.device-authorization-endpoint",
      "title": "The metadata has a device_authorization_endpoint when auth.device is present",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#oauth-server",
      "quote": "device_authorization_endpoint starts Device Sign-In (4.6). Required if auth.device is present.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#oauth-server",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23oauth-server&kind=Question&description=Validator+check+metadata.device-authorization-endpoint+%28%22The+metadata+has+a+device_authorization_endpoint+when+auth.device+is+present%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22device_authorization_endpoint+starts+Device+Sign-In+%284.6%29.+Required+if+auth.device+is+present.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.start",
      "title": "Token endpoint starts a Session with the JWT bearer grant",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "To start a Session, the Personal Agent requests a Session Token from the Company's token_endpoint with the JWT bearer grant (RFC 7523).",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.start+%28%22Token+endpoint+starts+a+Session+with+the+JWT+bearer+grant%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22To+start+a+Session%2C+the+Personal+Agent+requests+a+Session+Token+from+the+Company%27s+token_endpoint+with+the+JWT+bearer+grant+%28RFC+7523%29.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "Session ses_YWA-IHkvhXfB started."
    },
    {
      "id": "session.response-schema",
      "title": "Session response has the fields section 4.2 lists",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "Personal Agents MUST NOT depend on their contents; everything they need is in the response.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.response-schema+%28%22Session+response+has+the+fields+section+4.2+lists%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Personal+Agents+MUST+NOT+depend+on+their+contents%3B+everything+they+need+is+in+the+response.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.token-type",
      "title": "A Session Token requested with a DPoP Proof has token_type DPoP",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "token_type is DPoP, or Bearer for a token for an MCP server that doesn't support DPoP (4.3).",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.token-type+%28%22A+Session+Token+requested+with+a+DPoP+Proof+has+token_type+DPoP%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22token_type+is+DPoP%2C+or+Bearer+for+a+token+for+an+MCP+server+that+doesn%27t+support+DPoP+%284.3%29.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.expires-in",
      "title": "expires_in is greater than 0",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "The Company chooses the value, and it MUST be greater than 0.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.expires-in+%28%22expires_in+is+greater+than+0%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+chooses+the+value%2C+and+it+MUST+be+greater+than+0.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "expires_in 3600."
    },
    {
      "id": "session.token-lifetime",
      "title": "Session Tokens last hours, not days",
      "milestone": "foundation",
      "level": "SHOULD",
      "section": "spec#starting-sessions",
      "quote": "Session Tokens SHOULD last hours, not days.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.token-lifetime+%28%22Session+Tokens+last+hours%2C+not+days%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Session+Tokens+SHOULD+last+hours%2C+not+days.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.signed-out",
      "title": "A new Session is signed out, with no scopes",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "scope is a space-separated string of the account scopes granted (4.4). A signed-out token has none.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.signed-out+%28%22A+new+Session+is+signed+out%2C+with+no+scopes%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22scope+is+a+space-separated+string+of+the+account+scopes+granted+%284.4%29.+A+signed-out+token+has+none.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.no-store",
      "title": "Token responses send Cache-Control: no-store",
      "milestone": "foundation",
      "level": "SHOULD",
      "section": "guides#both-secrets",
      "quote": "Send Cache-Control: no-store on every response that carries a token or code.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/guides#both-secrets",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fguides%23both-secrets&kind=Question&description=Validator+check+session.no-store+%28%22Token+responses+send+Cache-Control%3A+no-store%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Send+Cache-Control%3A+no-store+on+every+response+that+carries+a+token+or+code.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.renew",
      "title": "Renewing with session_id returns a token for the same Session",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "The Company checks that the Session belongs to the same client_id and User ID as the assertion, and returns a new signed-out Session Token for it.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.renew+%28%22Renewing+with+session_id+returns+a+token+for+the+same+Session%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+checks+that+the+Session+belongs+to+the+same+client_id+and+User+ID+as+the+assertion%2C+and+returns+a+new+signed-out+Session+Token+for+it.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.unknown-session",
      "title": "An unknown session_id returns invalid_session",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "If it has ended, the Company returns invalid_session, and the Personal Agent starts a new Session.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.unknown-session+%28%22An+unknown+session_id+returns+invalid_session%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22If+it+has+ended%2C+the+Company+returns+invalid_session%2C+and+the+Personal+Agent+starts+a+new+Session.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.assertion-replay",
      "title": "Token endpoint rejects a reused Session assertion jti",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "The Company MUST reject a jti it has already seen from the same client_id until the assertion expires, so a copied assertion can't be used again.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.assertion-replay+%28%22Token+endpoint+rejects+a+reused+Session+assertion+jti%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+MUST+reject+a+jti+it+has+already+seen+from+the+same+client_id+until+the+assertion+expires%2C+so+a+copied+assertion+can%27t+be+used+again.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.client-assertion-aud",
      "title": "Token endpoint rejects a client assertion whose aud is the token endpoint URL",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#agent-identity",
      "quote": "Companies MUST reject a client assertion with any other aud, compared character for character, including their token endpoint URL.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#agent-identity",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23agent-identity&kind=Question&description=Validator+check+session.client-assertion-aud+%28%22Token+endpoint+rejects+a+client+assertion+whose+aud+is+the+token+endpoint+URL%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Companies+MUST+reject+a+client+assertion+with+any+other+aud%2C+compared+character+for+character%2C+including+their+token+endpoint+URL.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.client-assertion-unknown-key",
      "title": "Token endpoint rejects a client assertion signed by a key not in jwks_uri",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "The Company verifies both assertions against the Personal Agent's jwks_uri",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.client-assertion-unknown-key+%28%22Token+endpoint+rejects+a+client+assertion+signed+by+a+key+not+in+jwks_uri%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+verifies+both+assertions+against+the+Personal+Agent%27s+jwks_uri%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.assertion-unknown-key",
      "title": "Token endpoint rejects a Session assertion signed by a key not in jwks_uri",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#starting-sessions",
      "quote": "The Company verifies both assertions against the Personal Agent's jwks_uri",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#starting-sessions",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23starting-sessions&kind=Question&description=Validator+check+session.assertion-unknown-key+%28%22Token+endpoint+rejects+a+Session+assertion+signed+by+a+key+not+in+jwks_uri%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+verifies+both+assertions+against+the+Personal+Agent%27s+jwks_uri%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "session.browser-assertion-rejected",
      "title": "Token endpoint rejects a browser assertion as a Session assertion",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#web-browsing",
      "quote": "A Session assertion isn't accepted here, and a browser assertion isn't accepted at the token endpoint.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#web-browsing",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23web-browsing&kind=Question&description=Validator+check+session.browser-assertion-rejected+%28%22Token+endpoint+rejects+a+browser+assertion+as+a+Session+assertion%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+Session+assertion+isn%27t+accepted+here%2C+and+a+browser+assertion+isn%27t+accepted+at+the+token+endpoint.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.nonce",
      "title": "DPoP nonces, if required, are issued as RFC 9449 describes",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "A Company MAY require proofs to include a nonce it issued, as RFC 9449 describes, so proofs can't be made in advance.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.nonce+%28%22DPoP+nonces%2C+if+required%2C+are+issued+as+RFC+9449+describes%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+Company+MAY+require+proofs+to+include+a+nonce+it+issued%2C+as+RFC+9449+describes%2C+so+proofs+can%27t+be+made+in+advance.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "The token endpoint didn't ask for a DPoP nonce (nonces are optional)."
    },
    {
      "id": "dpop.token-replay",
      "title": "Token endpoint rejects a reused DPoP proof",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "At the token endpoint, the Company MUST reject a proof whose jti it has already accepted within the acceptance window",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.token-replay+%28%22Token+endpoint+rejects+a+reused+DPoP+proof%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22At+the+token+endpoint%2C+the+Company+MUST+reject+a+proof+whose+jti+it+has+already+accepted+within+the+acceptance+window%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.token-htu",
      "title": "Token endpoint rejects a DPoP proof made for a different URL",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "htm and htu match the request.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.token-htu+%28%22Token+endpoint+rejects+a+DPoP+proof+made+for+a+different+URL%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22htm+and+htu+match+the+request.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.accepted",
      "title": "A DPoP Session Token with a valid proof is accepted",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "API calls and conversations MUST carry the Session Token in the Authorization header with the DPoP scheme, together with a DPoP Proof",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.accepted+%28%22A+DPoP+Session+Token+with+a+valid+proof+is+accepted%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22API+calls+and+conversations+MUST+carry+the+Session+Token+in+the+Authorization+header+with+the+DPoP+scheme%2C+together+with+a+DPoP+Proof%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.missing-proof",
      "title": "A request without a DPoP proof is rejected with 401 and WWW-Authenticate: DPoP",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "APIs and conversation endpoints return HTTP 401 with the error in the WWW-Authenticate: DPoP header",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.missing-proof+%28%22A+request+without+a+DPoP+proof+is+rejected+with+401+and+WWW-Authenticate%3A+DPoP%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22APIs+and+conversation+endpoints+return+HTTP+401+with+the+error+in+the+WWW-Authenticate%3A+DPoP+header%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.bearer-scheme",
      "title": "A DPoP Session Token sent with the Bearer scheme is rejected",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "Everywhere else, Companies MUST require DPoP, and MUST reject a DPoP Session Token sent with the Bearer scheme (RFC 9449 §7.1).",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.bearer-scheme+%28%22A+DPoP+Session+Token+sent+with+the+Bearer+scheme+is+rejected%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Everywhere+else%2C+Companies+MUST+require+DPoP%2C+and+MUST+reject+a+DPoP+Session+Token+sent+with+the+Bearer+scheme+%28RFC+9449+%C2%A77.1%29.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.wrong-ath",
      "title": "A proof whose ath doesn't match the token is rejected",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "On requests with a Session Token, the key is the one the token is bound to, and ath matches the token.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.wrong-ath+%28%22A+proof+whose+ath+doesn%27t+match+the+token+is+rejected%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22On+requests+with+a+Session+Token%2C+the+key+is+the+one+the+token+is+bound+to%2C+and+ath+matches+the+token.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.wrong-key",
      "title": "A proof signed by a key the token isn't bound to is rejected",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "On requests with a Session Token, the key is the one the token is bound to, and ath matches the token.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.wrong-key+%28%22A+proof+signed+by+a+key+the+token+isn%27t+bound+to+is+rejected%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22On+requests+with+a+Session+Token%2C+the+key+is+the+one+the+token+is+bound+to%2C+and+ath+matches+the+token.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.resource-htu",
      "title": "A proof made for a different URL is rejected",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "htm and htu match the request.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.resource-htu+%28%22A+proof+made+for+a+different+URL+is+rejected%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22htm+and+htu+match+the+request.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "dpop.token-in-url",
      "title": "A Session Token in the URL query is not accepted",
      "milestone": "foundation",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "Personal Agents MUST NOT send tokens in a URL, and Companies MUST NOT accept them from one.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+dpop.token-in-url+%28%22A+Session+Token+in+the+URL+query+is+not+accepted%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Personal+Agents+MUST+NOT+send+tokens+in+a+URL%2C+and+Companies+MUST+NOT+accept+them+from+one.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "openapi.loads",
      "title": "The OpenAPI description loads",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "An OpenAPI 3.0 or 3.1 description of the API.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+openapi.loads+%28%22The+OpenAPI+description+loads%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22An+OpenAPI+3.0+or+3.1+description+of+the+API.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no OpenAPI APIs."
    },
    {
      "id": "openapi.version",
      "title": "The OpenAPI description declares version 3.0 or 3.1",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "An OpenAPI 3.0 or 3.1 description of the API.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+openapi.version+%28%22The+OpenAPI+description+declares+version+3.0+or+3.1%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22An+OpenAPI+3.0+or+3.1+description+of+the+API.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no OpenAPI APIs."
    },
    {
      "id": "mcp.metadata",
      "title": "The MCP server publishes protected resource metadata",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "MCP clients find where to get a token from the server's protected resource metadata (RFC 9728)",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+mcp.metadata+%28%22The+MCP+server+publishes+protected+resource+metadata%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22MCP+clients+find+where+to+get+a+token+from+the+server%27s+protected+resource+metadata+%28RFC+9728%29%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.authorization-servers",
      "title": "The protected resource metadata's authorization_servers includes auth.issuer",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "its authorization_servers MUST include auth.issuer",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+mcp.authorization-servers+%28%22The+protected+resource+metadata%27s+authorization_servers+includes+auth.issuer%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22its+authorization_servers+MUST+include+auth.issuer%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.no-token",
      "title": "The MCP server rejects a request without a token and points to its metadata",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "MCP clients find where to get a token from the server's protected resource metadata (RFC 9728)",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+mcp.no-token+%28%22The+MCP+server+rejects+a+request+without+a+token+and+points+to+its+metadata%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22MCP+clients+find+where+to+get+a+token+from+the+server%27s+protected+resource+metadata+%28RFC+9728%29%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.bearer-token",
      "title": "Token endpoint issues a Bearer Session Token for an MCP server without DPoP, with or without a proof",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "For an MCP server that doesn't support DPoP, the Company issues a Bearer Session Token, even if the request has a proof, and never a DPoP one.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+mcp.bearer-token+%28%22Token+endpoint+issues+a+Bearer+Session+Token+for+an+MCP+server+without+DPoP%2C+with+or+without+a+proof%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22For+an+MCP+server+that+doesn%27t+support+DPoP%2C+the+Company+issues+a+Bearer+Session+Token%2C+even+if+the+request+has+a+proof%2C+and+never+a+DPoP+one.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.bearer-accepted",
      "title": "The MCP server accepts a Bearer Session Token issued for it",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "A listed MCP server MUST accept Session Tokens as its access tokens and enforce their scopes.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+mcp.bearer-accepted+%28%22The+MCP+server+accepts+a+Bearer+Session+Token+issued+for+it%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+listed+MCP+server+MUST+accept+Session+Tokens+as+its+access+tokens+and+enforce+their+scopes.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.dpop-token-rejected",
      "title": "The MCP server rejects the general DPoP Session Token",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "It MUST accept only tokens issued for its url (4.3).",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+mcp.dpop-token-rejected+%28%22The+MCP+server+rejects+the+general+DPoP+Session+Token%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22It+MUST+accept+only+tokens+issued+for+its+url+%284.3%29.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.dpop-server-token",
      "title": "Token endpoint issues a DPoP Session Token for an MCP server that supports DPoP",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "For an MCP server that supports DPoP, the Company issues a DPoP Session Token, which the Personal Agent uses with proofs, as at any other API.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+mcp.dpop-server-token+%28%22Token+endpoint+issues+a+DPoP+Session+Token+for+an+MCP+server+that+supports+DPoP%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22For+an+MCP+server+that+supports+DPoP%2C+the+Company+issues+a+DPoP+Session+Token%2C+which+the+Personal+Agent+uses+with+proofs%2C+as+at+any+other+API.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.dpop-server-no-bearer",
      "title": "Token endpoint refuses a Bearer Session Token for an MCP server that supports DPoP",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "The Company MUST NOT issue a Personal Agent a Bearer Session Token for an MCP server that supports DPoP, so a request without a proof gets invalid_dpop_proof.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+mcp.dpop-server-no-bearer+%28%22Token+endpoint+refuses+a+Bearer+Session+Token+for+an+MCP+server+that+supports+DPoP%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+MUST+NOT+issue+a+Personal+Agent+a+Bearer+Session+Token+for+an+MCP+server+that+supports+DPoP%2C+so+a+request+without+a+proof+gets+invalid_dpop_proof.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.dpop-server-accepted",
      "title": "The MCP server accepts a DPoP Session Token issued for it",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "A listed MCP server MUST accept Session Tokens as its access tokens and enforce their scopes.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+mcp.dpop-server-accepted+%28%22The+MCP+server+accepts+a+DPoP+Session+Token+issued+for+it%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+listed+MCP+server+MUST+accept+Session+Tokens+as+its+access+tokens+and+enforce+their+scopes.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.other-resource-rejected",
      "title": "The MCP server rejects a Bearer token issued for another resource",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#apis",
      "quote": "It MUST accept only tokens issued for its url (4.3).",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#apis",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23apis&kind=Question&description=Validator+check+mcp.other-resource-rejected+%28%22The+MCP+server+rejects+a+Bearer+token+issued+for+another+resource%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22It+MUST+accept+only+tokens+issued+for+its+url+%284.3%29.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "mcp.bearer-elsewhere-rejected",
      "title": "A Bearer token for the MCP server is rejected outside MCP",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-tokens",
      "quote": "Companies MUST accept a Bearer Session Token only at the MCP server whose url equals its resource, and MUST reject it at every other endpoint, including other paths on the same host.",
      "status": "skip",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-tokens",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-tokens&kind=Question&description=Validator+check+mcp.bearer-elsewhere-rejected+%28%22A+Bearer+token+for+the+MCP+server+is+rejected+outside+MCP%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Companies+MUST+accept+a+Bearer+Session+Token+only+at+the+MCP+server+whose+url+equals+its+resource%2C+and+MUST+reject+it+at+every+other+endpoint%2C+including+other+paths+on+the+same+host.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "reason": "poppy.json lists no MCP servers."
    },
    {
      "id": "conversations.start",
      "title": "Starting a conversation returns 201 with conversation_id, status, and responder",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-messages",
      "quote": "The Company returns the new conversation's ID",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-messages",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-messages&kind=Question&description=Validator+check+conversations.start+%28%22Starting+a+conversation+returns+201+with+conversation_id%2C+status%2C+and+responder%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+returns+the+new+conversation%27s+ID%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "Started cnv_PnJYYNJ1zVW5."
    },
    {
      "id": "conversations.retry-same-id",
      "title": "Retrying the first message returns the same conversation",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-messages",
      "quote": "If the Company has already accepted a message with that ID and the same content, it returns the original response and doesn't add the message again.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-messages",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-messages&kind=Question&description=Validator+check+conversations.retry-same-id+%28%22Retrying+the+first+message+returns+the+same+conversation%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22If+the+Company+has+already+accepted+a+message+with+that+ID+and+the+same+content%2C+it+returns+the+original+response+and+doesn%27t+add+the+message+again.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.message-id-conflict",
      "title": "Reusing a message ID with different content returns message_id_conflict",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-messages",
      "quote": "If the content is different, the Company returns message_id_conflict.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-messages",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-messages&kind=Question&description=Validator+check+conversations.message-id-conflict+%28%22Reusing+a+message+ID+with+different+content+returns+message_id_conflict%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22If+the+content+is+different%2C+the+Company+returns+message_id_conflict.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.follow-up",
      "title": "A later message returns 202 with status and responder",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-messages",
      "quote": "Later messages go to the conversation's messages URL, which returns HTTP 202 with the same fields",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-messages",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-messages&kind=Question&description=Validator+check+conversations.follow-up+%28%22A+later+message+returns+202+with+status+and+responder%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Later+messages+go+to+the+conversation%27s+messages+URL%2C+which+returns+HTTP+202+with+the+same+fields%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.empty-message",
      "title": "A message without text, data, or context returns invalid_request",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#message-fields",
      "quote": "A message MUST have at least one of text, data, or context.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#message-fields",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23message-fields&kind=Question&description=Validator+check+conversations.empty-message+%28%22A+message+without+text%2C+data%2C+or+context+returns+invalid_request%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+message+MUST+have+at+least+one+of+text%2C+data%2C+or+context.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.invalid-message-id",
      "title": "A message ID with characters not allowed returns invalid_request",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#conversation-requests",
      "quote": "Conversation IDs, message IDs, and event IDs are strings of 1 to 256 characters from the URL-safe base64 alphabet",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#conversation-requests",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23conversation-requests&kind=Question&description=Validator+check+conversations.invalid-message-id+%28%22A+message+ID+with+characters+not+allowed+returns+invalid_request%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Conversation+IDs%2C+message+IDs%2C+and+event+IDs+are+strings+of+1+to+256+characters+from+the+URL-safe+base64+alphabet%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.events-read",
      "title": "Reading events returns conversation_id, events, cursor, has_more, status, and responder",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#reading-events",
      "quote": "Every successful read MUST include conversation_id, events, cursor, has_more, status, and responder, with events empty when there are none.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#reading-events",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23reading-events&kind=Question&description=Validator+check+conversations.events-read+%28%22Reading+events+returns+conversation_id%2C+events%2C+cursor%2C+has_more%2C+status%2C+and+responder%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Every+successful+read+MUST+include+conversation_id%2C+events%2C+cursor%2C+has_more%2C+status%2C+and+responder%2C+with+events+empty+when+there+are+none.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.events-schema",
      "title": "Events have the fields section 7.5 describes",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#reading-events",
      "quote": "Every event has an id, a type, and a created_at time",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#reading-events",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23reading-events&kind=Question&description=Validator+check+conversations.events-schema+%28%22Events+have+the+fields+section+7.5+describes%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Every+event+has+an+id%2C+a+type%2C+and+a+created_at+time%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "8 event(s)."
    },
    {
      "id": "conversations.user-message-recorded",
      "title": "The first message is recorded as an event with role user",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#reading-events",
      "quote": "a message from either side, as it was sent, with role set by the Company to user or company for the side it came from",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#reading-events",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23reading-events&kind=Question&description=Validator+check+conversations.user-message-recorded+%28%22The+first+message+is+recorded+as+an+event+with+role+user%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22a+message+from+either+side%2C+as+it+was+sent%2C+with+role+set+by+the+Company+to+user+or+company+for+the+side+it+came+from%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.retry-not-duplicated",
      "title": "A retried message is recorded only once",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#sending-messages",
      "quote": "If the Company has already accepted a message with that ID and the same content, it returns the original response and doesn't add the message again.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#sending-messages",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23sending-messages&kind=Question&description=Validator+check+conversations.retry-not-duplicated+%28%22A+retried+message+is+recorded+only+once%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22If+the+Company+has+already+accepted+a+message+with+that+ID+and+the+same+content%2C+it+returns+the+original+response+and+doesn%27t+add+the+message+again.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.wait",
      "title": "A read with wait=1 returns within about a second when there's nothing new",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#reading-events",
      "quote": "The Company holds the request for up to wait seconds until there is an event to return.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#reading-events",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23reading-events&kind=Question&description=Validator+check+conversations.wait+%28%22A+read+with+wait%3D1+returns+within+about+a+second+when+there%27s+nothing+new%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+holds+the+request+for+up+to+wait+seconds+until+there+is+an+event+to+return.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A",
      "summary": "Returned in 1472 ms."
    },
    {
      "id": "conversations.invalid-wait",
      "title": "A wait that isn't a whole number returns invalid_request",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#conversation-errors",
      "quote": "a wait that isn't a whole number of seconds",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#conversation-errors",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23conversation-errors&kind=Question&description=Validator+check+conversations.invalid-wait+%28%22A+wait+that+isn%27t+a+whole+number+returns+invalid_request%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22a+wait+that+isn%27t+a+whole+number+of+seconds%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.unknown-cursor",
      "title": "An unknown cursor returns invalid_cursor",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#conversation-errors",
      "quote": "The cursor is unknown or doesn't belong to this conversation.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#conversation-errors",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23conversation-errors&kind=Question&description=Validator+check+conversations.unknown-cursor+%28%22An+unknown+cursor+returns+invalid_cursor%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+cursor+is+unknown+or+doesn%27t+belong+to+this+conversation.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.not-found",
      "title": "An unknown Conversation ID returns conversation_not_found",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#conversation-errors",
      "quote": "The Conversation ID is unknown or belongs to a different Personal Agent, User, or account (7.2).",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#conversation-errors",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23conversation-errors&kind=Question&description=Validator+check+conversations.not-found+%28%22An+unknown+Conversation+ID+returns+conversation_not_found%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Conversation+ID+is+unknown+or+belongs+to+a+different+Personal+Agent%2C+User%2C+or+account+%287.2%29.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.close",
      "title": "Closing returns 200 with status closed",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#closing",
      "quote": "returns HTTP 200 with status and responder",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#closing",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23closing&kind=Question&description=Validator+check+conversations.close+%28%22Closing+returns+200+with+status+closed%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22returns+HTTP+200+with+status+and+responder%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.close-event",
      "title": "Closing adds a state event with status closed",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#closing",
      "quote": "The Company adds a state event with status: \"closed\"",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#closing",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23closing&kind=Question&description=Validator+check+conversations.close-event+%28%22Closing+adds+a+state+event+with+status+closed%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22The+Company+adds+a+state+event+with+status%3A+%22closed%22%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.close-again",
      "title": "Closing again returns 200 and adds no event",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#closing",
      "quote": "Closing a conversation that is already closed returns the same response and adds no event.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#closing",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23closing&kind=Question&description=Validator+check+conversations.close-again+%28%22Closing+again+returns+200+and+adds+no+event%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22Closing+a+conversation+that+is+already+closed+returns+the+same+response+and+adds+no+event.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.closed-message",
      "title": "A message to a closed conversation returns conversation_closed",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#conversation-errors",
      "quote": "A message or handoff was sent to a closed conversation.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#conversation-errors",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23conversation-errors&kind=Question&description=Validator+check+conversations.closed-message+%28%22A+message+to+a+closed+conversation+returns+conversation_closed%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+message+or+handoff+was+sent+to+a+closed+conversation.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    },
    {
      "id": "conversations.closed-handoff",
      "title": "A handoff request to a closed conversation returns conversation_closed",
      "milestone": "interfaces",
      "level": "MUST",
      "section": "spec#conversation-errors",
      "quote": "A message or handoff was sent to a closed conversation.",
      "status": "pass",
      "specUrl": "https://personalagentprotocol.org/docs/0.2/spec#conversation-errors",
      "disagreeUrl": "https://github.com/personal-agent-protocol/personal-agent-protocol/issues/new?template=1-feedback.yml&page=Company+kit&section=https%3A%2F%2Fpersonalagentprotocol.org%2Fdocs%2F0.2%2Fspec%23conversation-errors&kind=Question&description=Validator+check+conversations.closed-handoff+%28%22A+handoff+request+to+a+closed+conversation+returns+conversation_closed%22%29+reported+a+problem+that+I+think+is+wrong.%0A%0ARequirement%3A+%22A+message+or+handoff+was+sent+to+a+closed+conversation.%22%0A%0AWhy+I+think+the+check+is+wrong%3A%0A"
    }
  ],
  "summary": {
    "total": {
      "pass": 59,
      "fail": 0,
      "warn": 0,
      "skip": 15
    },
    "foundation": {
      "pass": 40,
      "fail": 0,
      "warn": 0,
      "skip": 2
    },
    "interfaces": {
      "pass": 19,
      "fail": 0,
      "warn": 0,
      "skip": 13
    },
    "sign-in": {
      "pass": 0,
      "fail": 0,
      "warn": 0,
      "skip": 0
    },
    "extensions": {
      "pass": 0,
      "fail": 0,
      "warn": 0,
      "skip": 0
    }
  }
}
