Quickstart

Connect an app, ask a question, read the receipt. Or call the REST API with a key.

Connect an app with OAuth and ask from there, or call the REST API with a key.

Connect an app

  1. Add https://www.quorum.dog/mcp to your app. Setup for each app is in Connect Quorum to your tools.
  2. Sign in to Quorum and approve once.
  3. Ask the assistant to call list_modes. A list of Modes means you are connected.

Ask a question

Ask the assistant to call estimate first. It is free and returns a quote for the whole call and deliberation_value, which says whether a panel is expected to help.

Then ask it to call deliberate. Both calls take a model: the ticker of the Mode to run, such as QRUM:STAN (Standard Mode). Ask for list_modes to see the rest. deliberate costs real money, so check the estimate first.

Read the receipt

deliberate returns a request_id. Ask the assistant to call get_receipt with it. The receipt lists each seat: source, real cost, fee rate, fee. The fee rate and fee are recorded on API-billed seats; seats on a connected app on your plan carry none.

Where the seats split, the split is the finding.

Use the REST API

Create an organization at Get API access, then select + Issue API key on Usage. Keys start with qk_live_ or qk_test_. The key is shown once.

The API is server to server. A request with a browser Origin header is rejected with 403 browser_origin_not_allowed. Keep the key on your server.

Base URL: https://www.quorumllm.com/v1

Estimate

POST /v1/estimate classifies a question and quotes the whole call for it (the engines, the platform fee and the Mode's fee) without running it. billed_usd is 0. The response carries deliberation_value: verdict, reason, basis, evidence and detail.

curl -sS https://www.quorumllm.com/v1/estimate \
  -H "Authorization: Bearer $QUORUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "QRUM:STAN",
    "messages": [{"role":"user","content":"Should we use RLS or app-layer authz for multi-tenant Postgres?"}]
  }'

Deliberate

POST /v1/chat/completions has the OpenAI request shape. Set model to a Mode ticker, in the form COMPANY:MODE. Optional fields: tier, quorum.max_cost_usd.

curl -sS https://www.quorumllm.com/v1/chat/completions \
  -H "Authorization: Bearer $QUORUM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  --max-time 300 \
  -d '{
    "model": "QRUM:STAN",
    "messages": [{"role":"user","content":"Should we use RLS or app-layer authz for multi-tenant Postgres?"}]
  }'

Set --max-time to 300 seconds. Send an Idempotency-Key on any call a retry could repeat. Repeating a key that succeeded returns the original answer and is not billed again.

The response is the OpenAI shape plus a quorum object with request_id, mode, converged, billed_usd and latency_ms. quorum.converged is set on every response that is not a replay. It is null when no judge read the round, as on the express lane. converged: false means the seats disagreed.

Receipt

curl -sS https://www.quorumllm.com/v1/receipts/REQUEST_ID \
  -H "Authorization: Bearer $QUORUM_API_KEY"

API keys always bill your organization's API account. The default cost ceiling on an API-key call is the higher of $2.00 and the price of the Mode being called, unless the API key carries its own ceiling. Lower it for one call with quorum.max_cost_usd.

Next