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.