Team workspace
A shared Desk for one team: members with the roles viewer, approver and admin, one watchlist, and one history. SSO is not part of this.
Unlimited people from your company on one plan; up to 5 outside collaborators with owner approval.
Desk Team is $99/month by card. Desk Pro is $199/month by card. Pilot is $149 for 6 weeks. Pay by card · Pricing.
How to use it
- Buy Desk Team, Desk Pro or Pilot and keep the plan key it shows once. Only that plan needs to stay active.
- Create the workspace once with
POST /v1/team, then add the hosts your agents pay. The company domain is the owner's work email. A free-mail domain cannot be the company domain. - The owner invites each person. They confirm a one-time email link and do not need their own plan. Someone on another domain needs that invite, and a team holds up to 5 of them.
The screen below only reads what is already live. It does not add hosts, change roles, or turn a setting on. Those calls stay on the API.
Try it
Use an active plan bearer (Authorization: Bearer brs_…). These routes are not an x402 challenge.
POST /v1/team
{"name":"Acme"}
POST /v1/team/org_…/hosts
{"host":"seller.example"}
GET /v1/team/org_…/watch
GET /v1/team/org_…/changes
POST /v1/team/org_…/settings
{"guard_log":true,"require_approval":true}
POST /v1/team/org_…/guard-key
POST /v1/team/org_…/approvals
{"host":"seller.example","kind":"payto","receipt_id":"0123456789abcdef0123"}
GET /v1/team/org_…/lock
GET /v1/team/org_…/records.zip?from=2026-11-01T00:00:00Z
Guard can send each warn, block or allow decision when an admin sets guard_log. It is off until then. The key is made in your browser. We store the public key only. The signed fields are host, decision, reason, amount and receipt id. No payloads and no private keys are stored.
The lockfile is the approved state. Each entry is tied to a receipt id. Check it in CI with node tools/desk-lock.mjs lock.json observed.json.
The records download is a zip of changes, receipt links and verify.mjs, with a manifest hash. MCP evidence_export stays a JSON list of receipt ids and verify links, and is not a zip.
Map · Watchlist · Alerts · Policy · Team
Paid above listing
Cost impact is off until an admin turns it on and registers payer addresses. Nothing is read from the chain until then.
An admin sets cost_impact and registers the team's own payer addresses. The read is public Base USDC transfers in the span the line names. A transfer counts only when it equals one recorded quote above that host's listed amount. Where either side is missing, no amount is filled in.
POST /v1/team/org_…/settings
{"cost_impact":true}
POST /v1/team/org_…/payers
{"address":"0x1111111111111111111111111111111111111111"}
GET /v1/team/org_…/cost-impact
Open /desk/team?org=org_… with the same plan bearer to see the line on this page. Delivery reports, when you have one, go to POST /v1/team/org_…/deliveries. A 2xx is not a delivery. Guard 0.3.3 runs that response check in your client.
Team screen
Paste the plan key in this browser. It stays in this tab and is sent only as the bearer token on a read.
Custom
A custom arrangement is a note to us.