How your agents act
Your agent acts as you on every Venue you authorize. Where a Venue has no API, a browser agent signs in as you and does the steps.
Make our agent the SDR, and show me the first thing it hands me. Don’t send.
curl -X POST "https://api.sb/leaseline.app/roles/prospector/staff?mode=try" \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"worker":"worker_2"}'
curl -X POST https://api.sb/leaseline.app/tasks/next \
-H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"import { $ } from 'startup-builder'
await $.Role.staff({ role: 'prospector', worker: 'worker_2' }, { mode: 'try' }) // the SDR, filled by your agent
return await $.Task.next() // drafted by your SDR agent: "Ask Priya at Oakmont for two intros"
npx startup-builder do Role.staff --json '{"role":"prospector","worker":"worker_2"}' --try
npx startup-builder do Task.next{
"name": "do",
"arguments": {
"code": "await $.Role.staff({ role: 'prospector', worker: 'worker_2' }, { mode: 'try' }) // the SDR, filled by your agent\nreturn await $.Task.next() // drafted by your SDR agent: \"Ask Priya at Oakmont for two intros\"",
"mode": "try"
}
}application/json{
"task": {
"$id": "https: //api.sb/ leaseline.app/ tasks/ task_150",
"$type": "Task",
"status": "pending",
"by": "worker_2",
"for": "worker_1",
"thing": "Ask Priya at Oakmont for two intros",
"verb": "Message.schedule",
"due": "2026-10-19T15: 00: 00Z"
}
}
sampleActing as you
| What it does as you | How it runs | The call |
|---|---|---|
| Posts on LinkedIn, X, Instagram, YouTube and TikTok | API, from your own accounts | POST /{namespace}/posts/{post}/publish |
| Posts on Reddit, Product Hunt, Hacker News, directories and company pages | browser agent, signed in as you | POST /{namespace}/posts/{post}/publish |
| Sends from your own inbox, and books the calls | API | POST /{namespace}/mailboxes/{mailbox}/warm |
| Lists your product, and answers reporter requests | browser agent or email | POST /{namespace}/posts/{post}/publish |
| Asks Google to index your key pages | browser agent, signed in as you | POST /{namespace}/sites/{site}/publish |
| Spends inside the cap you set, and stops spend that does not pay | API, on your ad accounts | POST /{namespace}/mandates/{mandate}/spend |
await $.Mandate.authorize({ agent, verb: 'Post.publish', for: founder, topics: ['first-links'], limit: { perDay: 10 }, expiresAt: '2026-12-24' })Each Mandate you grant takes an approval off your week. Nothing goes out without your OK until you say so.
Connect once
| Connect | What it unlocks |
|---|---|
| Your Domain | Google and Bing verify it, and every page you publish is pushed |
| Search Console and site analytics | Search performance and visits in the weekly readout |
| Your Google and Meta ad accounts | Campaigns run on your accounts, with the stop rule |
| Your inbox | Sends go out as you, and replies come back threaded |
| Your Google, GitHub, LinkedIn and X sign-ins, once in a live view | The browser agent reuses the saved session |
The seats
| Title | Held by | Works on | Queue this week | How it runs |
|---|---|---|---|---|
| You, as head of sales | Dana Okafor (person) | ARR added each week | 4 Tasks · 2 to approve | You approve each one |
| SDR | your agent | Deals and trials opened | 4 Tasks · 2 to approve | You approve each one |
| AE | Priya Shah (person) | New Customers | 4 Tasks · 2 to approve | You approve each one |
| SE | your agent | New paying Customers | 3 Tasks · 2 to approve | It does it, you can stop it |
| Onboarding | your agent | Activation rate | 3 Tasks · 2 to approve | You approve each one |
| CSM | your agent | Net revenue retention | 4 Tasks · 2 to approve | It does it, you can stop it |
| Head of customers | your agent | Net revenue retention | 3 Tasks · 2 to approve | You approve each one |
| Billing | your agent | Save rate | 3 Tasks · 2 to approve | You approve each one, capped |
| Partnerships | your agent | Referred Customers | 2 Tasks · 2 to approve | You approve each one |
| Marketing Lead | your agent | New Leads | 3 Tasks · 2 to approve | It does it, you can stop it |
| Content Lead | your agent | People reached | 3 Tasks · 2 to approve | It does it, you can stop it |
| Paid media | your agent | Return on ad spend | 2 Tasks · 2 to approve | It does it, you can stop it |
sample · Task.list and Approval.list for each title · leaseline.app at 2026-10-19
How agents earn autonomy
| How it runs | What that means | It moves up at | It drops back when |
|---|---|---|---|
| You approve each one | The agent does the work, and a person approves each Action before it runs. | 48 of the last 50 graded → It does it, you can stop it | — |
| It does it, you can stop it | The agent acts on its own, and a person reviews only the exceptions. | 48 of the last 50 graded → It does it | any Check breach → You approve each one |
| It does it | The agent acts on its own, and review is a sample. | — | any Check breach → You approve each one |
Each kind of decision moves on its own, and Billing never leaves You approve each one.
Bring your own agent
claude mcp add --transport http salesbuilder-docs https://salesbuilder.dev/mcp # read, keyless
claude mcp add --transport http startup-builder https://api.sb/mcp # act, with your key npx startup-builder eval --scenario leaseline-first-10 --agent "claude -p" # the scenario is Not live yet, gaps #8 Every title on your team takes your agent the same way, and it meets the same Checks, Stops and refusals as ours.
Compiled, not written: edit the records it reads (seats; cap), then regenerate. Every step runs from a sentence or a line of code. In your words: the CRM words you know, and where each lives here.