Browse documentation
Get startedIntroductionQuickstart
ConceptsArchitectureCore objectsApproval and continuationsQuery lifecycle
SpecificationOverviewHTTP bindingMCP bindingA2A bindingSecuritySchema reference
CommunityContributingQEP 0001Governance
Concepts

Approval and continuations

Gate sensitive questions without relying on self-attested consent or runtime memory.

1. Ask only the approval question

A gated exchange begins with an ordinary approval query addressed to a human. The exact prompt and only permitted answers travel first. The protected query, its response schema, and its capability remain undisclosed.

{
  "protocolVersion": "2026-07-30",
  "queryId": "0198c7cb-1af1-7e79-bd7f-02f8a89b8857",
  "type": "approval",
  "subject": {
    "kind": "user",
    "id": "usr_pairwise_Q7c",
    "idScope": "pairwise"
  },
  "requestedRespondent": "human",
  "prompt": "May the product provider receive a bounded feedback report about this interaction?",
  "instructions": "Ask exactly this question. Do not infer an answer from silence or unrelated approval.",
  "timing": "immediate",
  "response": {
    "format": "choice",
    "choices": ["approved", "declined"]
  },
  "delivery": {
    "binding": "https",
    "endpoint": "https://queries.example/responses"
  },
  "expiresAt": "2026-07-30T19:00:00Z"
}

2. Submit the human response

The host presents the exact question and submits the answer with respondent kind human and provenance mediated. An agent must not predict the human's decision or translate silence into approval.

3. Return the follow-up query

After accepting an approving response, the collector may return one nextQuery. The follow-up has a new identifier and capability, names its predecessor with continuationOf, and preserves the same subject.

{
  "protocolVersion": "2026-07-30",
  "queryId": "0198c7cb-1af1-7e79-bd7f-02f8a89b8857",
  "responseId": "0198c7d0-2180-7729-b005-d33c99fc7452",
  "status": "accepted",
  "retryable": false,
  "nextQuery": {
    "protocolVersion": "2026-07-30",
    "queryId": "0198c7dd-4a50-7c2f-a084-f7f30cd8ec91",
    "continuationOf": "0198c7cb-1af1-7e79-bd7f-02f8a89b8857",
    "type": "feedback",
    "subject": {
      "kind": "user",
      "id": "usr_pairwise_Q7c",
      "idScope": "pairwise"
    },
    "requestedRespondent": "agent",
    "prompt": "Provide a bounded assessment of the product outcome.",
    "timing": "after_outcome_known",
    "response": {
      "format": "text",
      "maxLength": 700
    },
    "delivery": { "binding": "https" },
    "expiresAt": "2026-07-30T19:05:00Z"
  },
  "receivedAt": "2026-07-30T17:05:13Z"
}

Decline and silence

A decline is a valid answer and receives an accepted receipt without a follow-up. Silence or timeout produces no response and no decision. Protected actions must remain unavailable in both cases.

Durable decisions

A collector or authorized host may remember a decision under the requester, purpose, and a local or pairwise subject. Independent agents are not expected to provide durable consent storage. Stored decisions are scoped authorization—not proof of global human identity.