Seat Reconciliation (RevOps)
Reconcile each firm's Part3 seat allocation against Maxio, and read the per-firm seat-change audit log.
Two super-duper-admin tools answer the RevOps question "does what we bill match what we've given out?"
| Tool | Answers |
|---|---|
get_org_seat_status | Current state — Part3's seat limit vs Maxio's allocated quantity, per firm, with a verdict |
list_seat_purchases | History — every seat-count change, who made it, and where it came from |
Both are conversational: connect the Part3 MCP and ask for what you want ("reconcile seats for Berry Architecture", "show me seat changes this month"). You don't need to name the tool or know an org id — ask by firm name.
Production only
These tools reach production Maxio, so they only work against the production
Part3 MCP. On any other environment get_org_seat_status returns a short
"available in production only" message rather than misleading numbers.
Reconciling a firm
Ask for one firm by name. You get a single line per firm:
✓ Berry Architecture + Associates (7s7kqTJwHiNwocCysRyI) Part3=10 Maxio=10 match used=19 [maxioCust=96054403]Part3— the seat limit on the org's billing record. This is Part3's authoritative number: it's what actually gates the firm in the product.Maxio— theallocated_quantityMaxio is billing for.used— active members on the org roster right now.maxioCust— the Maxio customer id, for drill-in on the Maxio side.
What each verdict means
| Verdict | Meaning | Action | |
|---|---|---|---|
| ✓ | match | Part3 and Maxio agree | None |
| ⚠ | mismatch | Both sides have a number and they differ (Δ shows by how much, Part3 minus Maxio) | Investigate — see below |
| ⚠ | part3_only | Part3 has a seat limit, Maxio bills nothing | Expected for trials, comped, and internal orgs. Real drift only if the firm is supposed to be paying |
| ⚠ | maxio_only | Maxio is billing but Part3 has no limit | Real drift — the firm is paying for seats it can't use |
| ⊘ | inactive | The Maxio subscription isn't live, so its allocation is stale | Confirm whether the firm churned |
| ? | unknown | Maxio couldn't be reached, or the subscription couldn't be identified | Re-run; if it persists, escalate to engineering |
On a mismatch
Pull the firm's history with list_seat_purchases for that org and read the
sources — they explain most drift:
seats_purchased— a firm bought seats in Part3.seat_approved— an admin approved a pending seat request.webhook_seat_count_change— Maxio told us its count changed, i.e. somebody edited the subscription directly in Maxio, outside the product. These deltas are signed and can be negative, and a+0is usually Maxio echoing back a change Part3 had already applied.
A cluster of webhook_seat_count_change rows around the time drift appeared
points at a manual Maxio edit; a missing webhook points the other way.
Sweeping every firm
Omit the firm and you get a page of firms, then a cursor to continue. Two things to know before you start:
- It's paced, not instant. Maxio rate-limits us, so a page defaults to 20 firms (40 max) and takes roughly 20–30 seconds. Sweeping the whole platform is a several-minute job — ask for it and let it run rather than re-asking.
- The first pages are mostly noise. Firms sort by seat limit ascending, so
every
Part3=0org — trials, internal, and test orgs — comes first, all flagged⚠ part3_only. In production that's roughly 100 orgs before the first firm with a Maxio customer id. Don't read those ⚠ as a problem; the interesting rows come later.
For a targeted question ("is this firm right?") always reconcile the single firm instead — it's one fast call.
Two warnings that mean "this page is not the whole story"
A sweep page can come back qualified. Both of these are worth reading before you act on the numbers:
- "The sweep ran out of time budget" — Maxio is paced, so a page has a time
ceiling. Firms past it read
unknownbecause they couldn't be looked up in time, not because Maxio disagreed. Re-run to pick them up. - "The sweep CANNOT be continued" — a firm's seat limit is stored in a shape the pagination can't resume from, so there is no cursor to continue with. The remaining firms are unreachable until it's fixed. This one is a bug, not a data entry issue — report it.
If neither warning appears and no cursor is offered, you've reached the end.
used is not part of the verdict
The verdict compares Part3 vs Maxio only. A firm can reconcile perfectly and still have more active members than seats:
✓ Berry Architecture + Associates Part3=10 Maxio=10 match used=19That's billing agreeing with itself while 19 people sit on 10 paid seats. If
you're looking for under-billing, read the used column against Part3
yourself — nothing flags it for you.