Documentation

Everything Auli does, written down plainly.

Setup takes about two minutes. This page covers the connectors, the permission model, how fresh the data is, and how every number is cited.

Quickstart

From signup to a cited answer.

  1. 01

    Create your workspace

    Sign up with email, Google, Apple or phone. Every person belongs to at least one workspace, and all data, connections and billing are scoped to it. Invite teammates from Team → Members.

  2. 02

    Connect a source

    Go to Team → Integrations, pick a connector and complete the OAuth handshake. Auli requests read-only scopes and never writes back to your platforms. Tokens are encrypted at rest.

  3. 03

    Activate the accounts that matter

    Agencies and multi-brand teams often see dozens of ad or CRM accounts. Activate only the ones this workspace should read — each activated account counts once against your plan.

  4. 04

    Ask your first question

    Open Auli Chat and ask in plain language: “What changed in pipeline this week, and why?” The analyst plans the query, calls the connectors it needs, and answers with the account and date range attached.

  5. 05

    Keep what's useful

    Pin any chart to a dashboard, export it to PDF or CSV, or share a read-only link. Metric and date-range preferences persist per workspace.

Connectors

Seven sources. All read-only.

  • Google Analytics 4
    Google OAuth (read-only)
    analytics.readonly
    Property · date · channel · landing page
  • Google Ads
    Google OAuth + developer token
    adwords (read)
    Customer · campaign · ad group · day
  • Google Search Console
    Google OAuth (read-only)
    webmasters.readonly
    Site · query · page · day
  • Meta Ads
    Meta Login for Business
    ads_read, business_management
    Ad account · campaign · ad · day
  • LinkedIn (organic + ads)
    LinkedIn OAuth 2.0
    r_organization_social, r_ads_reporting
    Page · post · campaign · day
  • HubSpot
    HubSpot OAuth
    crm.objects.* (read)
    Deal · stage history · owner · day
  • Shopify
    Shopify OAuth (custom app)
    read_orders, read_products
    Order · product · customer cohort · day

Disconnecting a source revokes the stored token immediately and removes its accounts from the workspace. Historical answers keep their citations but can no longer be refreshed.

Workspaces & roles

Multi-tenant by construction.

Owner

Everything an admin can do, plus billing, plan changes and deleting the workspace.

Admin

Connect and disconnect sources, choose which client accounts are active, invite and remove members, manage workspace settings.

Member

Ask the analyst, build and view dashboards, export charts. Cannot change connections, members or billing.

Invitations can be sent by email or shared as a link, expire automatically, and are rate-limited. Teams on a verified company domain can allow matching colleagues to join without an invite.

The AI analyst

Ask in plain language. Get the working shown.

Tool-calling, not guessing

The analyst chooses which connectors to query, runs the reports, and reasons over the returned rows. It never invents a figure it did not retrieve.

Charts inside the answer

When a trend is the answer, you get an interactive chart with axes, gridlines and exact values — plus a KPI summary and a written read of what moved.

Editable, persistent threads

Conversations are saved per workspace. Edit an earlier message to branch the analysis without starting over.

Every claim cited

Each number carries the source system, account and date range, so a colleague can verify it in the original platform.

API & MCP access

Two ways in. REST or MCP.

Create a workspace API token in Team → Settings → API access. Tokens are scoped to a single workspace, inherit that workspace’s connected accounts, and are read-only — exactly like the connectors behind them. Every response carries the same citation block the analyst shows in chat.

REST — /v1/ask

Send a natural-language question, get an answer plus a structured citations array. Best for one-off calls, cron jobs and your own agents.

MCP — /mcp

A Model Context Protocol server exposing every connector as a tool. Best for Claude Desktop, Claude Code, or any MCP-aware client.

curl · ask a question over REST
curl https://api.auli.ai/v1/ask \
  -H "Authorization: Bearer $AULI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workspace": "acme",
    "question": "What changed in qualified pipeline last week, and why?",
    "date_range": "last_7_days"
  }'
curl · pull a reconciled metric series
curl "https://api.auli.ai/v1/metrics?metric=conversions&granularity=day&range=last_30_days" \
  -H "Authorization: Bearer $AULI_API_KEY"
claude_desktop_config.json · add Auli as an MCP server
{
  "mcpServers": {
    "auli": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.auli.ai/mcp"],
      "env": { "AULI_API_KEY": "sk-auli-..." }
    }
  }
}

MCP tools mirror the analyst’s own toolset: auli.ask, auli.metrics, auli.sources and auli.accounts. Each returns citations alongside the data.

OpenAI & Claude

Feed Auli data into your own assistant.

OpenAI — function calling

Register Auli as a tool, then let the model decide when to call it. The tool result already contains the citation chain, so instruct the model to pass citations through verbatim.

python · register Auli as an OpenAI tool
from openai import OpenAI
import requests, os

client = OpenAI()

AULI_TOOL = {
    "type": "function",
    "function": {
        "name": "auli_ask",
        "description": "Ask Auli about connected growth data (GA4, Google Ads, "
                       "Meta Ads, LinkedIn, HubSpot, Shopify). Returns a cited answer.",
        "parameters": {
            "type": "object",
            "properties": {
                "question": {"type": "string"},
                "date_range": {"type": "string", "default": "last_7_days"},
            },
            "required": ["question"],
        },
    },
}

def auli_ask(question, date_range="last_7_days"):
    r = requests.post(
        "https://api.auli.ai/v1/ask",
        headers={"Authorization": f"Bearer {os.environ['AULI_API_KEY']}"},
        json={"question": question, "date_range": date_range},
        timeout=60,
    )
    r.raise_for_status()
    return r.json()  # { answer, figures[], citations[] }

resp = client.chat.completions.create(
    model="gpt-4.1",
    tools=[AULI_TOOL],
    messages=[
        {"role": "system", "content": "Use auli_ask for any question about "
                                      "marketing, sales or revenue performance. "
                                      "Always repeat the citations you receive."},
        {"role": "user", "content": "Why did CAC move last week?"},
    ],
)
python · Claude tool use
import anthropic, requests, os

client = anthropic.Anthropic()

tools = [{
    "name": "auli_ask",
    "description": "Ask Auli about connected growth data. Returns a cited answer.",
    "input_schema": {
        "type": "object",
        "properties": {
            "question": {"type": "string"},
            "date_range": {"type": "string"},
        },
        "required": ["question"],
    },
}]

msg = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    tools=tools,
    system="Answer only from auli_ask results and keep every citation.",
    messages=[{"role": "user",
               "content": "Summarise this week for the board in five lines."}],
)
bash · add Auli to Claude Code over MCP
claude mcp add auli --transport http https://mcp.auli.ai/mcp \
  --header "Authorization: Bearer $AULI_API_KEY"

# then, inside Claude Code:
#   > use auli to compare paid search CAC this month vs last
System prompt worth copying

Whichever model you use, the same three rules keep answers honest: never state a figure that did not come back from a tool call, always carry the source, account and date range with the number, and say “the sources disagree” instead of picking one silently.

Example prompts

Prompts that work on day one.

Diagnostics

  • Why did blended CAC move last week, and which campaign caused it?
  • Is the Meta drop creative fatigue or falling demand?
  • Which sources disagree on conversions this month, and by how much?

Pipeline & revenue

  • Which lead sources closed deals this quarter, ranked by win rate?
  • What slipped in the last seven days and which accounts explain it?
  • Trace spend through to closed revenue for paid search, last 90 days.

Reporting

  • Draft the weekly marketing update with causes, not charts.
  • Give me plan versus actual for the quarter with the response we took.
  • Export the top ten landing pages by assisted pipeline as a table.

Accounts & governance

  • Which accounts is this workspace allowed to read right now?
  • When was Google Ads last synced, and what is still restating?
  • Show the audit trail for connection changes this month.
prompt · daily executive briefing
Using auli_ask, write my morning briefing.
Cover: revenue, qualified pipeline, blended CAC and the single largest change.
Rules:
- five lines maximum, plain language, no chart descriptions
- every figure carries source, account and date range
- end with one recommended action and why it is first
Dashboards & exports

Keep the views you return to.

  • Each connector has a dedicated dashboard with the metrics that platform reports natively.
  • Metric selection and date range are saved per workspace, so the view you left is the view you return to.
  • Any chart exports to PDF or CSV, and can be shared as a read-only link with people outside the workspace.
  • Briefings can be delivered as a daily or weekly digest to the people who need the summary, not the tool.
Data freshness

How current each source actually is.

  • GA4On demand, cached 15 minLast 72h can still move as GA4 finalizes.
  • Google AdsOn demand, cached 15 minConversions finalize up to 72h late.
  • Meta AdsOn demand, cached 15 minAttribution window restated for ~3 days.
  • LinkedInOn demand, cached 30 minOrganic metrics settle within 24h.
  • HubSpotOn demand, rate-limited 4 rpsDeal stage history is read live.
  • ShopifyOn demand, cached 15 minRefunds restate prior-day revenue.
Citations & governance

A number you cannot trace is a number you cannot use.

Auli treats attribution as a first-class output. Every answer records the connectors it called, the accounts it read, the date range applied and the reconciliation rule used when sources disagree. Recommendations additionally state expected impact, a confidence level and the evidence chain behind them, so a reviewer can disagree with the reasoning rather than the tone.

Source of record

Which system the figure came from, per line.

Scope

The exact account, property or page queried.

Window

The date range, plus any comparison period.

Security & access

Least privilege, end to end.

  • OAuth tokens are encrypted at rest and never exposed to the browser.
  • Row-level security enforces workspace isolation in the database itself.
  • Read-only scopes only — Auli cannot modify anything in a connected platform.
  • Sign in with email and password, Google, Apple, or phone one-time code; social identities can be linked to an existing account later.
  • Administrative actions are written to an immutable audit log with CSV export.
Plans & limits

What each plan includes.

PlanAnalyst messages / moConnected accounts
  • Free501
  • Starter2003
  • Growth1,00010
  • Scale5,000Unlimited

Each activated client account counts separately toward the connected accounts limit. Additional chat credits can be purchased at any time and are consumed only after the monthly allowance runs out. Full pricing lives on the pricing page.

Common questions

Answers, briefly.

Does Auli ever write to my platforms?
No. Every connector uses read-only scopes. Auli can read reporting data and cannot create, edit, pause or delete anything in Google Ads, Meta, LinkedIn, HubSpot or Shopify.
Where do the numbers in an answer come from?
Each figure carries its source system, the specific account or property, and the date range used. When two systems disagree, Auli reports the reconciled definition and the size of the gap rather than silently picking one.
Can one person work across several clients?
Yes. Switch workspaces from the top of the sidebar. Data never crosses a workspace boundary — row-level security is enforced in the database, not just in the interface.
What happens when I hit my message limit?
The analyst tells you before you run out and again at the limit. You can upgrade the plan or buy additional chat credits; credits are consumed only after the monthly allowance is used.

Two minutes to your first cited answer.