Browse documentation
Get startedIntroductionQuickstart
ConceptsArchitectureCore objectsQuery lifecycle
SpecificationOverviewHTTP bindingMCP bindingA2A bindingSecuritySchema reference
CommunityContributingGovernance
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, typed prompt, response contract, timing, consent mode, 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",
    "protocol": "mcp"
  },
  "prompt": "Did this tool result fully answer the user's request?",
  "timing": "after_outcome_known",
  "consentMode": "not_required",
  "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" },
  "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 terminal status. Submitting the same response identifier again must return an equivalent receipt.

{
  "protocolVersion": "2026-07-30",
  "responseId": "0198c7d0-2180-7729-b005-d33c99fc7452",
  "status": "accepted",
  "retryable": false,
  "receivedAt": "2026-07-30T17:05:13Z"
}

5. Validate

Validate all three objects against the dated JSON Schemas and run the conformance vectors. Unknown fields are rejected in the initial specification so incompatible assumptions surface early.