# The full access inventory over MCP
URL: https://docs.autociso.io/release-notes/2026-09-mcp-access-inventory-list/
Description: A new read-only tool, access_inventory_list, pages every employee × asset grant in your organisation — role, privileged flag, status, first and last observed, last used, last verified and dormancy — as ID-only rows for any mcp:read token, on every plan.

## The full access inventory over MCP

**Plans:** Free and above, so every plan (backend 2.6.0).
**Where:** the `/mcp` endpoint — new tool `access_inventory_list`; the TypeScript and Python SDKs (`access.inventoryList` / `access.inventory_list`)

Until now the access inventory — every current grant of an employee to an asset — was reachable only from the console's **Access Inventory** page and its CSV export. The MCP `access_*` tools returned *findings* about the inventory (stale, dormant, offboarding violations, …), never the inventory itself. Customers building a per-employee entitlement list for an ISO 27001 A.5.18 / A.8.2 control had no machine-readable source.

### What changed

`access_inventory_list` returns one row per employee × asset grant, paged like every other list tool (`limit` default 50, max 200; `offset`; `{ grants, total, truncated }`):

| Field | Meaning |
|-------|---------|
| `employeeId`, `assetId` | the join keys — never a name or e-mail |
| `assetName`, `assetCriticality` | from the asset record (organisational data) |
| `identityType` | `HUMAN` or `SERVICE_ACCOUNT` |
| `roleLevel`, `roleOrigin`, `roleConfidence`, `isPrivileged` | the normalised role, the role as the source system named it, and `isPrivileged` = `roleLevel == ADMIN` |
| `status` | `ACTIVE` or `REVOKED` |
| `firstObservedAt` | **the first time AutoCISO observed the grant — not the date it was granted in the source system.** `null` when no observation event exists |
| `lastDetectedAt`, `lastUsedAt`, `lastVerifiedAt` | `null` when unknown |
| `isDormant`, `dormantDays`, `riskScore`, `riskFactors` | the current risk signals |

Filters: `employeeId`, `assetId`, `status` (`ACTIVE` by default; `REVOKED`; `ALL`), `identityType`, `roleLevel`, `isDormant`. Grants held by terminated employees are included. Unknown arguments and wrong-typed values are rejected with `INVALID_ARGUMENTS` rather than ignored.

### Building a complete entitlement list

1. Page with `status: "ALL"` and `limit: 200`, advancing `offset` by the number of grants returned until the response has no `truncated` flag.
2. Collect the distinct `employeeId` values and resolve them in batches of up to 50 with `employee_resolve` — a token with the Owner-granted `pii:read` scope is required, and every resolution is written to your audit trail. See [About `pii:read`](https://docs.autociso.io/developers/mcp/authentication/#pii-read).
3. Keep the name mapping on your side; the inventory rows never carry it.

### Counts

The catalog now has **65 tools** (60 read-only, 5 write). A Free-plan `mcp:read` token sees three tools: `access_inventory_list`, `maturity_scores` and `posture_summary`.

### Notes

- `REVOKED` rows appear only when a revocation was recorded; today most revocations remove the grant, so `status: "ALL"` is usually the same set as the default.
- Full reference: [MCP Tool Catalog — Access](https://docs.autociso.io/developers/mcp/tools/#access-12-tools).
