Council
API

Two on-ramps. One credit wallet.

Ounie accounts hit the REST endpoints with a bearer token. AI assistants — including the Ounie AI Team — connect over MCP and get a native tool surface. Both run the same council pipeline, and every council draws your shared Ounie credits (1 credit = 1¢), never overdrawing. Because a council is grounded in your own private brains, agent access is by API key or MCP — there is no keyless rail for a grounded council (see x402 below for the one no-brain exception).

Authentication
Two bearer rails, one wallet. Send an Authorization header, or append ?api_key=to the URL when your client can't set headers.
cnl_live_…

Your app key, minted on Dashboard → API keys. Reads, lists, and pure-reasoning councils. It has no ounie.com credential, so it cannot reach your private brains — a grounded council returns a clear 403 grounding_requires_master_key.

ounie_live_…

Your fleet master key from ounie.com (enable fleet access in ounie.com settings). It works across every Ounie app and, on Council, is what grounds a council in your brains and resolves citations — the token is forwarded upstream to ounie.com for retrieval. Draws the same wallet.

Cookie sessions work too on every REST route — it's the same endpoint the dashboard uses.

MCP · for AI assistants and the Ounie AI Team
Streamable HTTP at /api/mcp (legacy SSE at /api/sse). Auth with a cnl_live_… key, or the Ounie fleet master key ounie_live_… to ground.
Endpoint  https://council.ounie.com/api/mcp
Header    Authorization: Bearer cnl_live_…

# If your MCP client can't set headers, append the key as a query param:
https://council.ounie.com/api/mcp?api_key=cnl_live_…

# Ounie AI Team (TabTab): add an HTTP MCP entry with the URL above,
# using your master key so councils ground on your brains:
https://council.ounie.com/api/mcp?api_key=ounie_live_…
ToolWhat it doesCost
convene_councilRun N models over two rounds + a chairman verdict. Ground on your brains with the master key.13–34+ credits
list_councilsList the councils you've convened.free
get_councilFetch one verdict + tally + citations + every seat's deliberation (the export).free
get_credit_balanceSpendable Ounie credits + monthly included.free
get_pricingPer-seat pricing + the x402 endpoint. No auth required.public
whoamiThe authenticated key's owner + key id.free
REST · the same endpoints the dashboard uses
Send Authorization: Bearer cnl_live_… (or your ounie_live_… master key, or ?api_key=) on any of these.
POST/api/councilsConvene a council
{ "prompt": "Should we raise now or wait?",
  "seat_count": 5, "tier": "premium",
  "brain_ids": ["…"] }

Reserves seat_count × per-seat + synthesis; charged only for models that deliberate (balanced ≈13 for 3 seats, premium ≈34). brain_ids GROUND + cite from your brains with a cookie session OR the master key — a cnl_live_ key must omit brain_ids (403 otherwise).

GET/api/councilsList your councils

Free. Returns { councils: [ … ] }.

GET/api/councils/{id}Fetch a verdict + seats

Free. The full verdict, tally, resolved citations, and every seat's two rounds — the export surface.

POST/api/councils/{id}/shareToggle public sharing
{ "is_public": true }

Free. Mints a permanent /c/{slug} read-only verdict link.

DELETE/api/councils/{id}Delete a council

Free. Cascades to its seats.

GET/api/brainsList your Ounie brains

For picking brain_ids. Needs a cookie session or the master key — a cnl_live_ key can't reach your brains.

x402 · keyless, no-brain councils only
The one keyless rail. A council can run with NO brain attached (pure reasoning), so that verb has a pay-per-call USDC on-ramp. A brain-grounded council needs your Ounie account and its private brains — use MCP/REST with your master key for that.
POST https://council.ounie.com/api/x402/council
{ "prompt": "Should we build or buy?" }
# → 402 { x402Version, accepts:[{ maxAmountRequired, payTo, asset, … }] }
# retry with header:  X-Payment: <signed payload>
# → 200 { ok, payment, verdict, tally, survivor_count }

Fixed 3-seat balanced roster. No Ounie credits are drawn — the USDC is the payment.

Shape of a verdict
{
  "council_id": "…",
  "url": "https://council.ounie.com/dashboard/councils/…",
  "verdict": { "answer": "…", "confidence": "high",
               "reasoning": "…", "dissent": "…" },
  "tally": [ { "stance_label": "…", "weight": 3.5, "seats": ["Seat A", …] } ],
  "survivor_count": 5,
  "degraded": false,
  "grounded": true,
  "citations": [                 // only when grounded on your brains
    { "brainId": "…", "slug": "…", "title": "…", "url": "https://ounie.com/…" }
  ],
  "credits_spent": 34
}