MCP

Reading analytics

Why Zilfu analytics are per account and per platform, and how to drill into them over MCP.

Updated Jul 27, 2026

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, audience history, and best posting times.

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.