Apps for AI agents

Zapier & Make automation

Ounie is a step, not a destination. Point a Zap or a scenario at a brain and content flows in from whatever you already use — then ask that same brain a question mid-workflow and get a cited answer back into the next step.

Auth

One API key

Actions

Add source · Ask brain

Trigger

New brain (Zapier)

Re-runs

Safe to replay

YOUR TOOLSa trigger firesAdd sourceAsk brainA ZAP OR A SCENARIOsaveanswerYOUR BRAIN

Both integrations authenticate with the same personal key. It is shown in full exactly once.

1Setup

Create an API key#

Both Zapier and Make authenticate with a personal API key. Generate one in Settings → API keys. You will see the full key (ounie_live_…) exactly once — copy it before leaving the page. Keys carry your full account access; revoke any key from the same settings page.

One key per connection, not one key per Zap

A connection is stored once and reused across every Zap or scenario, so you never paste the key twice. Give Zapier and Make separate keys anyway — revoking one then costs you one integration rather than all of your automation at once.

2Setup

Connect in Zapier#

The Ounie Zapier app is available at:

https://zapier.com/apps/ounie/integrations

When you add the first Ounie step to a Zap, Zapier will prompt you to connect an account. Paste your API key into the API key field and click Yes, Continue. Zapier validates the key against your account and stores it as a named connection you can reuse across Zaps.

The New Brain trigger#

New Brain fires when a brain is created in your account. It also doubles as the dynamic dropdown that populates the Brain picker in both actions, so it needs to be set up even if you never use it as a trigger.

3Setup

Connect in Make#

The Ounie Make app is available in the Make app marketplace. Search for “Ounie” when adding a module to a scenario. On first use, Make prompts you to create a connection — paste your API key into the API key field and click Save. Make validates the key and stores it as a named connection reusable across scenarios.

Make also surfaces typed errors (OutOfSpaceError, RateLimitError), which is what lets you attach a different error-handler route per status code — see quota and errors.

Actions#

Both integrations expose the same two actions, backed by the v1 REST API. They are the two wires leaving the workflow at the top of this page — save out to the brain, answer back from it.

Add source to brain#

Choose a brain from a dropdown populated live from your account, then provide either a URL (Ounie fetches and synthesizes the page) or a title and text body. Set Text mode to Note to store text verbatim without LLM processing. Link body:

{
  "kind": "link",
  "url": "https://example.com/article",
  "externalId": "article-42"
}

Text body:

{
  "kind": "text",
  "title": "Meeting notes 2026-06-12",
  "content": "…",
  "mode": "synthesize",
  "externalId": "meeting-2026-06-12"
}

The action returns the source record plus a created flag. When created is false the source already existed (idempotent replay — see External ID):

{
  "source": {
    "id": "src_01abc",
    "type": "link",
    "title": "Getting Started with Ounie",
    "status": "pending",
    "externalId": "article-42"
  },
  "created": false
}

Ask brain#

Asks a grounded question against a brain and returns an answer with inline citations. Choose a brain from the dropdown and type or map a question:

{
  "question": "What did we decide about the Q3 roadmap?"
}
{
  "id": "ask_01abc",
  "answer": "The Q3 roadmap focuses on [API expansion](https://ounie.com/b/ada/ai/api-expansion).",
  "citations": [
    {
      "slug": "api-expansion",
      "title": "API expansion",
      "url": "https://ounie.com/b/ada/ai/api-expansion"
    }
  ],
  "thin": false
}

The answer field contains markdown with citations rewritten to absolute links. The citations array carries the same links as structured data. When the brain has too few sources to answer confidently, thin is true — worth branching on, so a scheduled digest never mails out an answer the brain could not support.

Idempotency with External ID#

Both integrations let you supply an External ID on any source — your own stable identifier such as a Notion page ID, a CMS record id, or a document path. Posting the same External ID to the same brain a second time returns the existing source with created: false rather than creating a duplicate.

RUN 1article-42created: trueRUN 2article-42created: falseRUN 3article-42created: falsesrc_01abccreated onceONE SOURCE

This makes retries and re-syncs safe by construction, which is what turns a scheduled Zap from a liability into a habit: a scenario that runs hourly can pass the same id every time and the brain still holds exactly one copy.

Re-sending updated content

The idempotency guarantee is create-level: a repeated External ID returns the existing source unchanged. If your content has changed and you want Ounie to re-process it, use a different External ID (include a version or a modified timestamp) or delete the old source first via the dashboard.

Quota and errors#

Asking a brain is metered against your plan's question allowance, and adding a source is checked against its source cap. Every failure is a branch you can attach a route to.

ONE STEPask · add source200answer + citations402BANK_EMPTY · top up429QUOTA_EXCEEDED · wait403SOURCE_LIMIT · brain full
402BANK_EMPTYThe Free plan's one-time question bank is spent. Buy credits or upgrade.
429QUOTA_EXCEEDEDThe rolling 30-day question quota is used up. It refills on its own.
403SOURCE_LIMITThe brain has hit your plan's source cap. Remove sources or upgrade.
401Bad credentialThe key is wrong or revoked. Reconnect the account with a fresh one.
404No such brainThe brain does not exist, or is not yours — Ounie never says which.

The Free plan draws a one-time, non-expiring bank of questions; paid plans draw a rolling 30-day quota sized by the plan. Current figures live on the pricing page rather than here, so this page can never quote a stale number at you. Notes and links carry no storage cost, so a text-only automation never moves you toward the storage cap.

// 402 — question bank empty (Free plan)
{ "error": "bank_empty", "code": "BANK_EMPTY" }

// 429 — monthly quota exceeded (paid plan)
{ "error": "quota_exceeded", "code": "QUOTA_EXCEEDED" }

// 403 — plan source limit reached
{ "error": "Source limit reached", "code": "SOURCE_LIMIT" }

In Zapier these surface as task errors carrying the message above. In Make, the typed errors let you add a separate error-handler route per status code — one that pauses the scenario on 429 and one that alerts you on 401 are the two worth wiring first.

Example automations#

Six shapes worth stealing. The ones that create a source name the External ID that makes them safe to re-run; the ones that only ask do not need one, because nothing is created.

A message lands in #research

Add source

External ID: the Slack message timestamp

A new item appears in an RSS feed

Add source

External ID: the item's GUID

A Google Doc is updated

Add source

External ID: the document id

A support ticket is closed

Add source

External ID: the ticket id

Every Monday at 09:00

Ask brain

External ID: not needed — nothing is created

A form is submitted

Ask brain

External ID: not needed — nothing is created

Not using Zapier or Make?

The same two actions are one HTTP call each — see the REST API. If the thing calling them is an AI agent rather than a workflow, the MCP gateway gives it the same brain plus the whole app fleet from one connection.