Inline Sign in

Inline for a company that runs on other people's software

01 · YOUR STACK

Start with the software you already pay for.

Gmail, Notion, Stripe, the rest — an agent's tools can begin as the apps your company already runs on.

Gmail
Notion
Google Drive
Asana
Stripe
Jira
Linear
Zendesk
Trello
HubSpot
Dropbox
Google Sheets
Airtable
Shopify
ADDING YOUR OWN SOFTWARE

Hand over the API description your team already has. No server to build, nothing new to host.

1 · HANDED OVER
orders-api.yaml 2.4 MB · OpenAPI 3.1

312 operations found

2 · YOU CHOOSE WHAT MATTERS
  • GET /orders/{id}
  • POST /orders
  • GET /customers/{id}
  • POST /shipments
  • DELETE /orders/{id}

4 of 312 chosen

3 · BECOME NAMED TOOLS
look_up_order
place_order
check_delivery
02 · ONE SMALL SET OF TOOLS

Your stack and your own software become the same small set of tools.

TOOL look_up_order

Find an order and who it belongs to.

GET /orders/{id} · GET /customers/{id}

TOOL place_order

Place an order, within limits you set.

POST /orders

TOOL check_delivery

Confirm a shipment is on its way.

POST /shipments

Your apps, and your own software — in one place, as a small number of things called by name.

01 · YOUR STACK

Which of these does your work already run through?

Pick as many as apply.

THE RACE

Same request. Watch the gap.

Both get: “Set up Northwind as a new client and let them know.”

The first time

done

It doesn't know your process yet.

customers.search(name: "Northwind")
✕no match — wrong system
deals.get(name: "Northwind")
✓found, second try — the signed deal

“Standard plan or the custom one? Who owns it?”

nobody answers — guesses: standard
gmail.send(to: client, "You are all set!")
✓sent
stripe.subscriptions.create(plan: "standard")
✓account opened — after the email

missed steptold before it existed · checklist never started

Every time after

done

One call. Five steps. In order.

new_client_onboarding(client: "Northwind")
  1. 01account opened
  2. 02plan read from the signed dealcallModel
  3. 03client told
  4. 04onboarding ticket opened
  5. 05logged to the record

opened → read → told → started → logged — in that order

A capable assistant, not a dumb one — it just hadn't been taught yet. Both panes loop from the same starting line; the pacing is illustrative, not a benchmark.

YOU CORRECT IT — ONCE
“Open the account on the plan they signed, then start the onboarding, then tell the client — in that order. Never a custom plan over £200 a month without me.”
becomes
▸new_client_onboarding

Say it once, in plain language.

Inline turns what you just said into a named tool your assistant can call — the order, and the £200 line, built in.

Not faster once. Right every time — for you, and for everyone else on the team who runs it next.

02 · TEACH IT FIRST

If it only learned one process this week, which should it be?

ACT III · 01

A chat window is a rectangle for words.

Some jobs don't fit inside one — and you've been on one side of all four of these, with a person or with a bot.

asks

“Paste the full text of the invoice below.”

INV-2291 · Qty 14 · Net 30 · Remit to: Acme Ltd · line 1 of 40…
asks

“Which customer do you mean? Reply with a number, 1 to 200.”

you: 47? or maybe 74 — hard to tell from a list of numbers
asks

“Type APPROVE to continue.”

you: APPROVE
returns

the result, as a wall of JSON

{"status":"ok","id":"ch_9k2f01","amount":24000,"currency":"usd","customer":{"id":"cus_88q4",…

None of this is a bug. It's just the wrong shape for these four jobs — and it's a little humiliating for both sides, every single time.

ACT III · 02

So the tool brings its own screen.

An MCP app is a small interface a tool carries with it. The assistant opens it mid-answer, right there in the conversation — you use it, and the answer carries on.

assistant opens a panel sandboxed · inside this chat
a drop zone, not a paste
search, not “reply 1–200”
fields, not free text
a table, not a JSON wall

You describe the tool once; the panel is built for you — nobody on your team hand-codes this screen.

ACT III · 03

The case that matters most: approvals.

Anything over the line you've drawn stops and waits for a person. This is the screen they answer it on — not a wall of text to parse under pressure.

waiting on you req_8841
purchase order $240.00
requested by
reorder-bot
supplier
Acme Ltd · #47
reason
stock below reorder point
signed in as mara@northwind written down either way

One credential per person, never a shared key — so the record says who decided, not just what happened.

03 · MORE THAN A CHAT REPLY

Which step of that process needs a real screen?

ACT III · 01

Hand it to your team.

The tool you just taught is real now. Everyone you work with can pick it up — signed in as themselves, never sharing your key.

MR
MaraSupport lead
signed in as mara@northwind
new_client_onboarding
PR
PriyaOps
signed in as priya@northwind
new_client_onboarding
JN
JonSupport
signed in as jon@northwind
new_client_onboarding
DV
DevonRemoved
access revoked
new_client_onboardingoff

One login per person, never a shared key. Remove someone from the team and every agent running as them stops that same instant — seats, not passwords.

ACT III · 02

Publish it, and it stops being just yours.

A finished tool becomes a versioned package — a name, a version, who built it, what it touches. Other companies can install it into their own workspace.

new_client_onboardingv2.1.0

Northwind Support

Opens the account, starts onboarding, tells the client.

onboard_vendorv1.4.2

Ledger Ops

Opens the vendor record, requests the W-9, files the task.

close_out_dealv3.0.0

Fieldstone CRM

Moves the deal stage, files the contract, books the kickoff.

Examples of the shape, not a live directory — publishing and installing are real, browsing a store like this isn't, yet. A version, once published, doesn't change under anyone; pull it later and new installs stop seeing it, while the ones already running keep going.

ACT III · 03

They install it. It runs on their accounts.

When another company installs the tool you built, its steps go to work on their Stripe, their Zendesk, their Gmail — signed in as them. You never see their data, their logins or their customers, and they never touch yours.

you
your Stripe
your Zendesk
your Gmail
new_client_onboarding v2.1.0 the steps cross — nothing else does
them
their Stripe
their Zendesk
their Gmail
grant — computed, not declared
stripe.subscription.createwrite
zendesk.ticket.createwrite
gmail.sendwrite

Worked out from the steps themselves, in the workspace doing the installing — never a list the publisher hands over. It under-grants on purpose: get a step wrong and the tool breaks, it doesn't quietly reach further. And whoever installs it still has their own ceiling sitting on top of all of it.

04 · WHO'S WAITING

Who's stuck waiting on you to run it for them?

ACT IV · 01

One line. Every key obeys it.

A person sets the ceiling once — read and write, never delete, say. From then on every key issued under it holds to it, whoever built the tool and however the tool describes itself.

out of reach
delete customers
drop table
wire transfer
the ceiling · set once, by a person
allowed
read orders
write draft
list rows

Checked on every call, not at connection time — a key that behaved yesterday can't creep past the line today.

ACT IV · 02

Anything above it waits.

Not refused. Not failed. Held — pending a person. The agent doesn't error out and it doesn't guess a workaround. It asks, and then it carries on.

held req_8841
requested
delete → 14 rows, customers
by agent
reorder-bot
under key
mara@northwind · agent key 04
ceiling
write, never delete
approved luis · 41s later → the call carries on

The wait is the whole point — most readers have never considered that a governed agent has a third option besides succeed or fail.

ACT IV · 03

And all of it is written down.

Live, as it happens — not a log you go digging for later. Arguments have credential-looking values removed before anything is stored, and the database deletes each record after a set time — 365 days today — rather than leaving that to a promise.

live arguments redacted before storage
time agent · key call outcome ms
09:41:02 reorder-bot · key 04 delete → customers held → approved, luis 612
09:38:17 digest-bot · key 01 read → inbox ok 84
09:35:55 cleanup-bot · key 07 drop table → invoices refused · above ceiling 3
09:12:40 sync-bot · key 02 write → project page refused · key revoked 2

You can hand agents real work because you can see all of it — and stop any of it.

Make software yourself? There's a version of this for you.