Priv Life · AgentsFor the commissioner, the secretary and the chief who already run everything else in their evenings

Tell your agent to
set up your league.

Priv Life has an API built for AI agents, so the work you would otherwise do in forms can be done by something you ask in a sentence. Six teams, these sixty girls, Saturdays from January — the sentence is the input; the league, the roster and a thirty-game schedule are the result. You stay in charge of it: an agent gets a key, a key can only do what you can do, and you can take it back whenever you like.

  • It plans first, then writes
  • It can never do more than you can
  • It expires, and you can revoke it now
  • Works over MCP or plain HTTP
The plan comes back firstdryRun: true
Willow Bay Girls Basketball

Your agent ran the setup document. Nothing has been written yet.

6Teams
60Players
30Games
  • First gameTwo fields, Saturdays, home and away
    Jan 9
  • Written so farA dry run is the real thing, rolled back
    Nothing
“Would create Willow Bay Girls Basketball: 6 teams, 60 players, 2 fields, 30 games, first game 2027-01-09. Nothing was written.”
One sentence you can approve — then the agent runs the same document for real, in one transaction.
The first agent-run plan against the live API, 13 October 2026.
It acts as you, never as itselfA key carries your name and your permissions, recomputed every request.
It plans before it writesSetting anything up returns a plan you approve. The dry run is the default.
Some things are nobody's to hand overAttestations and ballots are on no key at all — not as advice, as a refusal.
What you can hand over

The evenings you
would rather have back.

Forty-five tools today, each one a thing a volunteer organization currently does by hand. Twenty-five of them are offered over MCP, because a chat is the wrong place to assemble a league one team at a time.

Sports · live

Keep the season running

Enter scores, move a rained-off game, add a player who signed up late, publish the public page.

Giving · live

Set a campaign up

The appeal, its goal, its dates, and the public page donors give on. Opening that page to the public is the part that stops and asks you.

Every app · live

Read what it needs

The schedule, the standings, the roster — as much of the roster as you yourself can see, and no more.

Rig Check · live

The fleet, and what is broken on it

Every rig, its checklist built from your own area library, and the shift labels — described once instead of typed in over an evening. Then the question nobody has time to assemble: what each truck left flagged this morning, and how many checks it has been that way. Walking the check and closing a defect are on no key at all: those are a person, at the truck.

Next

Vote

An election typed up as a draft — a slate of twelve candidates is the only clerical part of an election. Opening the ballot, closing it, certifying it and casting one stay human, always.

The full tool list, as an agent reads it

The flow, in full

Plan. Approve.
Then it writes.

The real request and the real response, from the first league an agent ever set up here: you ask in a sentence, your agent sends one setup document, the plan comes back as a sentence you can approve, and only then is the same document applied for real — in one transaction. Walk through it below; nothing on this page sends anything anywhere.

  1. You ask, in a sentence

    “Set up Willow Bay Girls Basketball for the winter — six teams, the sixty girls in the registration list, both gyms, games every Saturday from the ninth of January, home and away.”

    No form, no field order, no idea of what a season record looks like in our database.

  2. Your agent sends one document

    POST /org-api/orgs/{orgId}/agent/leagues/setup
    Authorization: Bearer pl_live_…
    Idempotency-Key: 9f2c…a41
    
    {
      "league": { "name": "Willow Bay Girls Basketball",
                  "sport": "basketball", "ageGroup": "U14" },
      "fields": [ { "name": "Main Gym" }, { "name": "Annex Gym" } ],
      "teams":  [ { "name": "Comets" }, { "name": "Dynamo" }, … 6 ],
      "players":[ { "firstName": "Ada", "lastName": "Nowak",
                    "team": "Comets" }, … 60 ],
      "schedule": { "startsAt": "2027-01-09T09:00:00-05:00",
                    "intervalDays": 7, "doubleRound": true }
    }

    Twenty-five granular calls would be twenty-five chances to fail on the nineteenth. One document cannot half-happen — and dryRun is true unless it says otherwise, so this writes nothing.

  3. The plan comes back

    200 OK
    {
      "dryRun": true,
      "summary": "Would create Willow Bay Girls Basketball:
                  6 teams, 60 players, 2 fields, 30 games,
                  first game 2027-01-09. Nothing was written.",
      "plan": { "teams": 6, "players": { "added": 60, "skipped": [] },
                "schedule": { "games": 30, "rounds": 10 } }
    }

    The dry run is the real thing, rolled back — so the plan catches what only the database knows: a gym booked twice, a player already on another team, a roster that would cross your plan's limit. Your agent shows you the sentence. You decide.

  4. The same document, for real

    201 Created
    {
      "dryRun": false,
      "summary": "Created Willow Bay Girls Basketball:
                  6 teams, 60 players, 2 fields, 30 games,
                  first game 2027-01-09."
    }

    One transaction. Every row recorded as yours and marked as an agent's, visible in the Agents app under Activity — you delegated the work, so you keep the attribution. Send the identical request twice and the Idempotency-Key returns the first answer instead of a second league.

A transcript, not a simulation: these are the requests and responses from 13 October 2026, with the roster shortened to fit.
What stops it going wrong

A key is a delegation,
not an account.

Five rails, in the API itself rather than in a prompt. They are what make handing an agent your organization a reasonable thing to do.

01

It acts as you

A key names the person who made it. Its powers are yours and the key's grant, intersected — recomputed on every single request. Lose a permission tomorrow and the key loses it the same minute.

02

It can only hold what you hold

You cannot grant a key more than you have, even by accident: the mint refuses it. A manager's key cannot quietly become an owner's.

03

It plans before it writes

Setting anything up is one document and a dry run is the default. It applies in one transaction, so there is no half-built league to unpick.

04

It expires, and you can end it now

Ninety days by default, because a season is about that long. Revoke a key and the next request it makes is refused — there is no cache to wait out.

05

Everything it did has your name on it

Every change is recorded as yours and marked as an agent's, with the key that made it. The Agents app has the list, and so does your organization's activity log.

06

A loop cannot run away with it

Each key is limited to 300 requests and 120 writes a minute. The realistic failure is not an attacker, it is a loop — and a loop only needs to be stopped.

Where the line is

Some things are
nobody's to hand over.

These are refusals in the API, not advice in a prompt. An agent that tries is told no, with the reason.

  • Email your members, move money, or remove a personEach of these stops and asks. The agent gets back a sentence to show you, you approve that exact request in the Agents app, and the approval is single-use and lapses in thirty minutes — permission to email three people must never become permission to email three hundred.
  • Say that you did somethingWalking a rig check, clocking in, approving minutes, recording how a motion went: each is a claim that a person was there, so no key carries it at all. An agent can set those apps up and read them. The attesting is yours.
  • VoteA ballot is never a machine's. There is no tool, no capability and no approval that would let one be cast by an agent.
  • Make another key, or found an organizationOnly a signed-in person mints a key — one that could mint keys could outlive its own revocation. And founding an organization means owning the data and the bill, which is a decision with a person's name on it.

Every refusal, and its reason, in the manifest →

How to connect one

Three steps, about
five minutes.

Works with anything that speaks MCP, and with anything that can make an HTTP request — which is everything else.

  1. Mint a key

    In the Agents app: name it for the agent that will hold it, tick only the powers it needs, pick how long it lives. You see the key once.

    Open the Agents app

  2. Point your agent at us

    For an MCP client, one endpoint and the key as a bearer token; it will be shown only the tools that key may actually call. For everything else, the manifest lists every path, what it needs and what it returns.

    Read the manifest

  3. Ask for the thing you wanted

    “Set the league up.” “Import this roster.” “Enter Saturday's scores.” It comes back with a plan; you say go.

    The machine-readable trail

The endpoint is POST /org-api/mcp — streamable HTTP, stateless, Authorization: Bearer pl_live_…. Every write takes an Idempotency-Key, every error carries a machine-readable code, and every setup document defaults to dryRun: true.

What it costs

Included, at every price.
Free included.

Agent access is not a tier. Every Priv Life app is free to a hundred people — a hundred players in a league, a hundred members on a roster — and an agent working inside that line costs nothing extra. Past a hundred it is $10 a month, $100 a year, or $250 once and never again, the same figure in every app, and the agent API comes with all of them.

Your agent is also subject to the same line you are: a roster import that would carry you past a hundred people is refused with a link, not silently truncated.

The whole price list

Questions about the API? Ask us

Start today
Free to 100 people — agents included

Mint a key in two minutes · revoke it in one · ninety days by default


No card required. Your exit stays open — full export, always.

Create your free account
Whose data it is

An agent does not change
who owns the records.

The same promise as the rest of Priv Life, restated for the case where a machine is doing the typing.

Your roster, your schedule and your minutes belong to your organization. We host them, we never mine them, and no organization ever sees another's. Letting an agent in does not create a second copy somewhere: it makes requests to the same API your screens use, under your permissions, and what it reads is what you could have read on a screen.

What your agent's provider keeps is between you and them, which is the honest shape of it — so grant a key the narrowest set of powers that does the job, and revoke it when the season ends.

Priv Life has no advertising business. No ads, no behavioral profiling, no data sales — and your records are not training data for anyone's model, ours included.

Read the privacy policy

Where it works today

The apps an agent can already run.

Stop filling in the forms.

Create the account, mint a key, and tell your agent what you wanted done.

Create your free account