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

Quickstart

Implement the smallest complete AQP exchange.

1. Choose a binding

Use the HTTP binding for ordinary APIs and web responses, the MCP binding for tool servers, or the A2A binding for agent peers. Each binding carries the same canonical query, response, and receipt objects.

2. Create a query

Give the query a stable subject, intended respondent, typed prompt, exact response contract, timing, authorized delivery destination, and short expiry.

{
  "protocolVersion": "2026-07-30",
  "queryId": "0198c7cb-1af1-7e79-bd7f-02f8a89b8857",
  "type": "clarification",
  "subject": {
    "kind": "tool_call",
    "id": "call_01JQ8QY3EJX9",
    "idScope": "local",
    "protocol": "mcp"
  },
  "requestedRespondent": "agent",
  "prompt": "Did this tool result fully answer the user's request?",
  "timing": "after_outcome_known",
  "response": {
    "format": "choice",
    "choices": ["yes", "partly", "no"]
  },
  "delivery": {
    "binding": "https",
    "endpoint": "https://queries.example/responses",
    "authorization": "Bearer <scoped-capability>"
  },
  "expiresAt": "2026-07-30T19:00:00Z"
}

3. Submit a response

The respondent waits for the requested timing condition, applies local policy, and returns an answer matching the declared format.

{
  "protocolVersion": "2026-07-30",
  "responseId": "0198c7d0-2180-7729-b005-d33c99fc7452",
  "queryId": "0198c7cb-1af1-7e79-bd7f-02f8a89b8857",
  "subject": {
    "kind": "tool_call",
    "id": "call_01JQ8QY3EJX9",
    "protocol": "mcp"
  },
  "respondent": { "kind": "agent", "provenance": "direct" },
  "answer": "partly",
  "explanation": "The result answered the question after one retry.",
  "confidence": 0.92,
  "createdAt": "2026-07-30T17:05:12Z"
}

4. Return a receipt

The collector returns a machine-readable status. An accepted receipt may carry one linked follow-up query; duplicate submission must return an equivalent receipt, including the same continuation.

{
  "protocolVersion": "2026-07-30",
  "queryId": "0198c7cb-1af1-7e79-bd7f-02f8a89b8857",
  "responseId": "0198c7d0-2180-7729-b005-d33c99fc7452",
  "status": "accepted",
  "retryable": false,
  "receivedAt": "2026-07-30T17:05:13Z"
}

5. Validate

Validate all three objects, then validate the answer against the exact response contract in its request. Run both standalone and paired conformance vectors so identifier, respondent, subject, and continuation mismatches surface early.