Reading analytics
Why Zilfu analytics are per account and per platform, and how to drill into them over MCP.
Updated
Analytics are per account and per platform. There is no cross-account total, because platforms don't count the same things: Threads reports views, Instagram reports reach, and adding them together produces a number that means nothing.
So the flow always starts with discovery.
Start with discovery
Call list-account-analytics-tool to see every account in the space, each with its own collection state:
| State | Meaning |
|---|---|
ok |
Collecting normally |
partial |
Some metrics are missing for the range |
paused |
Collection is stopped |
disconnected |
The account needs reconnecting |
unsupported |
The platform doesn't expose analytics for this account type |
never_collected |
Nothing has been gathered yet |
Rows are never merged. An account that's paused or disconnected stays visible instead of being folded into a total that hides it. Take the account_id you care about and drill in.
Two ways to drill in
They answer different questions.
get-account-analytics-tool describes the account. Its metric catalogue, totals against the previous window, the interaction score, rates, the daily series, and audience history.
list-account-posts-tool describes the posts. Every post that account published in the range, one page at a time, one row per post, with a cell for each metric the platform declares.
Ranking is a sort
There's no fixed "top posts" block, because a ranking is just a sort — ask for the one you want. The top posts by likes are the first rows of sort=likes; swap the key to rank by anything else that account reports.
sort accepts published_at, interactions, or any metric key listed in the payload's sort.options. It defaults to published_at — newest first, which claims nothing about performance. Alongside it:
| Parameter | Values | Default |
|---|---|---|
dir |
asc or desc |
desc |
per_page |
10–100 | 20 |
page |
1 or higher | 1 |
An option that comes back marked sortable: false is a metric the platform declares but has no values to order by right now. Passing a key the account doesn't support returns an error naming the keys you can retry with.
Reading the numbers
Every metric in either payload carries its own label, plain-English definition, and unit, so an assistant can explain a number instead of guessing from its name. Metric names are per-platform — read columns in the payload rather than assuming a name means the same thing across networks.
A null value means not collected, never zero. Each column and cell carries its own status saying why.
All three analytics tools accept optional from and to dates — 2026-07-01, resolved in the workspace's timezone — and default to the last seven days. The same data is available over the REST API.