Usage

The Usage page shows what agents are loading, from where, and what it costs. Observe → Usage.

All five libraries report into one table here — entity loads, brief, skill and Info retrievals, and catalog reads — told apart by the Library filter.

By entity

Two charts and a daily table, filtered by Domain, Library, Artifact, Surface, Level, Format and a timeframe. Library picks which kind of artifact you’re looking at, and the Artifact menu follows it: choose Skills and it lists only skills.

The table splits each day into Markdown Loads / Tokens, JSON Loads / Tokens, and totals. JSON repeats every key on every row, so the split shows whether a rising bill is more traffic or a shift to JSON.

Export CSV gives the full per-row breakdown, including the artifact, its library, format, and the version each row served.

Activation markers

Filter to a single entity and the charts mark each activation with a dashed line and the version number, so you can compare token cost before and after a change. ContextWorks stamps every load with the version it served, and the export carries it per row, even after a rollback. A load that fell back to a never-activated draft carries no version.

By user

A scope toggle switches to By user: one row per caller, ranked by tokens, with Top consumers charts. Filter by Domain, Library, Artifact, and a user search.

ColumnWhat it is
UserThe caller. For an agent, the user the agent runs as
Loads / TokensTotal consumption over the timeframe
Tokens / loadHeavy payloads, or many light ones
Entities / Top entityHow broad their usage is, and where most of it goes
ErrorsFailed loads — a lone high error rate usually means a permissions problem

The two scopes are separate rollups of the same traffic — never add them together. The export follows the toggle: usage-*.csv carries format and surface; usage-by-user-*.csv carries day and entity per person.

Agentforce passes no agent identity to Apex, so the running user is the only per-agent signal. Give each agent its own user before the second one goes live. See Agentforce.

NOTE

Per-user rollups are on by default. To switch them off, set entity_track_user_usage to false — org-level rollups keep working.

The dimensions

  • Library — Entities, Briefs, Skills, Info, or Catalog. The menu lists only libraries with traffic in the window.
  • Artifact — which entity, brief, skill, or Info. No traffic on a named artifact means nothing is asking for it. Catalog reads all file under one artifact, (catalog).
  • Surface — the tool that ran: get_records, find_records, get_briefs, get_skill, get_info, get_catalog, update_records, create_records. An Agentforce agent and an MCP client both arrive at the same action boundary, so Surface can’t tell one client from another. To read one client’s traffic on its own, give it scoped tools, which stamp their own tool name here. Apex that sets no toolName reports apex.
  • Level — mostly detailed, the default. Find Records logs query, or aggregate for its grouped and summary calls; a healthy share of either means agents are asking about sets rather than loading records one at a time. Briefs, skills and Info log their own name. Catalog reads log the call’s shape: index (the whole catalog), detail (named entities), or unchanged (the agent echoed a current version stamp and got two lines back).
  • Format — markdown, JSON, or both. A both row is one load that served markdown and JSON together. It counts once, under both, so don’t read it as a JSON call.
  • Domain — which domain the call came through.

What to look for

  • Tokens per load, by entity. A detailed Account 360 is typically 400–900 tokens. Well past that, look for an unfiltered related list or a high max-rows setting.
  • One entity dominating. Fine if it’s your main use case. If not, agents may be loading records in depth when a query would answer. Fix the instructions rather than the entity.
  • Traffic you didn’t expect. Heavy load on a neglected entity makes its curation worth improving.
  • Catalog reads with no unchanged rows. Agents that never echo the version stamp re-download the whole index every session. Fixing the caller saves those tokens.
  • Nothing at all. No rows means the action was never reached, or every call failed before it served anything. Entity and catalog failures show on Issues.

Reducing cost

In rough order of return:

  1. Filter related lists. The biggest lever — an unfiltered 25-row list can be half a payload.
  2. Lower max rows. Five to ten is usually plenty.
  3. Convert lists to metrics. One number can replace twenty-five rows.
  4. Drop low-completeness fields. Quality names them.
  5. Reconsider references. A parent embedded at standard is a whole second field list.
  6. Raise element minimum levels to keep depth-only enrichments off leaner payloads.

Don’t cut instructions. They’re cheap, and they’re the highest-value tokens in the payload.

Assembly time lives on the Performance page, which shares this page’s filters.

What’s next