Quickstart

Call Mara from your agent.

The power-user path. Most people should just go to /playground. If you'd rather have Claude Code, Cursor, or Codex run the conversation and drop the starter into a folder for you, here's how.

The contract

  • GET /api/public/interview-spec — the questions Mara covers. Free.
  • POST /api/public/bootstrap — generates your starter. mode: "playground" is free; mode: "paid" returns 402 (wallet flow lands next).

1. Fetch the interview spec

curl https://project--c778f704-96ff-4ebc-995a-90502e45e39d.lovable.app/api/public/interview-spec | jq '.questions[].prompt'

2. Run the interview through your agent

Drop this into Claude Code, Cursor, or Codex. It'll do the interview with you, then call /bootstrap with the answers.

You are interviewing me using Mara's second-brain starter protocol.

1. GET https://project--c778f704-96ff-4ebc-995a-90502e45e39d.lovable.app/api/public/interview-spec to see the topics Mara covers.
2. Run a real conversation with me — one question at a time, in
   Mara's voice. Draft inferences with forks; don't paraphrase the spec.
3. When you have the full picture, POST the conversation to
   https://project--c778f704-96ff-4ebc-995a-90502e45e39d.lovable.app/api/public/bootstrap with:
     {
       "mode": "playground",
       "transcript": [
         { "role": "assistant", "content": "..." },
         { "role": "user", "content": "..." }
       ]
     }
4. Write each file from response.manifest into ./starter/ at its path.
   Create folders as needed.
5. Print response.next_steps_summary at the end. Verbatim.

3. Or just call it directly

curl -X POST https://project--c778f704-96ff-4ebc-995a-90502e45e39d.lovable.app/api/public/bootstrap \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "playground",
    "transcript": [
      { "role": "assistant", "content": "Hey — I am Mara. Tell me what you keep losing." },
      { "role": "user", "content": "I am Maya, freelance researcher. I record interviews and can't find the quotes weeks later." },
      { "role": "assistant", "content": "And the tool you live in?" },
      { "role": "user", "content": "Obsidian. Voice memos on iPhone." }
    ]
  }'

4. The paid flow (preview)

Sending "mode": "paid" without payment returns:

HTTP/1.1 402 Payment Required
WWW-Authenticate: Stripe amount="1.00",currency="USD"

{ "error": "Payment required", "amount": "1.00", "currency": "USD" }

Your wallet authorizes the charge, retries with Authorization: Payment <credential>, and gets a signed receipt back. Full wallet flow lands in v0.2 — for now, use playground mode.

Using your starter with Claude Code, Cowork, Codex & Cursor

The starter is a folder of plain markdown. No plugin, no API, no SDK — the file format is the integration. After Mara writes your starter to disk, point your agent at the folder:

# Claude Code — interactive
cd ~/second-brain && claude
> read weekly-review.md and tell me what to ship today

# Claude Code — append a capture from anywhere
claude --dir ~/second-brain \
  "append this to inbox.md with today's date: <your note>"

# Cursor / Codex
# open ~/second-brain as a workspace, ask the assistant to
# "draft from projects/decide-the-output.md using inbox.md as context"

# Claude Cowork — in chat
@cowork append to ~/second-brain/inbox.md: <meeting takeaway>

Because every note is a .md file, this works the same in any agent that can read your filesystem. If a better agent ships next year, your starter still works — the contract is the file format, not the vendor.

Don't have an agent set up?

Just talk to Mara in your browser at /playground. Voice or text, same Mara, free. Download the zip and drop it into your vault.