Proposal Studio
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 generation pipeline, and calls draw your shared Ounie credits (1 credit = 1¢), never overdrawing. Because a proposal is grounded in your own private Ounie brain, generating one needs a forwardable upstream credential — a cookie session or your fleet master key. There is no keyless x402 rail: a keyless payer has no brain to ground a proposal in.

Authentication
Send a bearer token on any REST endpoint or the MCP server. Cookie sessions work too (it's the same route the dashboard uses).
sow_live_… · this app's key

Mint one on Dashboard → API keys (shown once, up to 5 active). It can list, read, send, and export proposals — but it can't reach your brain upstream, so generate_proposal returns a clear "use your master key" message.

ounie_live_… · the fleet master key

Your ounie.com developer key. Enable fleet access on ounie.com and use it here — it draws the same wallet AND grounds generation in your brains (the token is forwarded to ounie.com to retrieve and cite your pages).

Authorization: Bearer sow_live_…        # or ounie_live_… to generate

# If your client can't set headers, append the key as a query param:
https://sow.ounie.com/api/mcp?api_key=ounie_live_…
MCP · for AI assistants and the Ounie AI Team
Streamable HTTP at /api/mcp (legacy SSE at /api/sse). Auth with a sow_live_… key or the master key ounie_live_….
Endpoint  https://sow.ounie.com/api/mcp
Header    Authorization: Bearer sow_live_…

# Connect the Ounie AI Team (its HTTP MCP entry can't set headers) —
# the key rides the URL:
https://sow.ounie.com/api/mcp?api_key=ounie_live_…
ToolWhat it doesCost
list_proposalsList your proposals + pipeline status and share URLs.free
get_proposalFetch one proposal in full (scope, cited pricing, terms…).free
generate_proposalCompose a cited proposal from your brain. Needs your master key.10 credits
send_proposalPublish or unsend the public /p/<slug> share page.free
export_proposalReturn the proposal as Markdown (+ the DOCX download URL).free
get_credit_balanceSpendable Ounie credits + monthly included.free
get_pricingPer-action pricing. No auth required.public
whoamiThe authenticated key's owner + whether it can generate.free
REST · the same endpoints the dashboard uses
Send Authorization: Bearer sow_live_… (or ?api_key=). Cookie sessions work too.
GET/api/brainsYour Ounie brains

The brain picker for generation. Free.

GET/api/proposalsList proposals

Your proposals + pipeline status. Free.

POST/api/proposalsGenerate a proposal
{ "brain_ids": ["…"], "client_name": "Acme Co.", "project_notes": "website redesign" }

Bills 10 credits. Grounded + cited from your brains with a cookie session OR the master key (ounie_live_). Thin material → full refund + 422.

GET/api/proposals/{id}One proposal

Full structured proposal. Free.

PATCH/api/proposals/{id}Edit any field
{ "title": "…", "pricing": [ … ] }

Free — a read/edit of already-paid work.

POST/api/proposals/{id}/regenerateRecompose
{ "project_notes": "…" }

Bills 10 credits. Keeps the share slug + pipeline status.

POST/api/proposals/{id}/sendPublish / unsend
{ "send": true }

Free. Makes /p/<share_slug> live (or returns it to draft).

GET/api/proposals/{id}/exportDownload DOCX

Free. Returns a Word document of the proposal.

DELETE/api/proposals/{id}Delete

Free. Kills the public share link.

Shape of a generated proposal
{
  "proposal_id": "…",
  "grounded": true,           // narrative + at least one surviving citation
  "pricing_tbd": false,       // true → honest "pricing to be discussed"
  "credits_spent": 10,
  "proposal": {
    "title": "Website redesign proposal for Acme Co.",
    "executive_summary": "…",
    "scope": [{ "title": "…", "description": "…" }],
    "deliverables": [{ "item": "…", "detail": "…" }],
    "timeline": [{ "phase": "…", "duration": "Weeks 1-2", "detail": "…" }],
    "pricing": [{ "item": "…", "amount": "$4,500", "note": "…" }],
    "terms": [{ "title": "…", "detail": "…" }],
    "next_steps": ["…"],
    "citations": [               // resolves to your Ounie brain pages
      { "brainId": "…", "slug": "…", "title": "…", "url": "https://ounie.com/…" }
    ]
  }
}

Prices come ONLY from your brain — a pricing line with no cited amount is dropped, and when none survive, pricing_tbd is true and the artifact shows an honest placeholder instead of an invented number.