Statistics
The brand's networks, ads, website and activity in Nömad: figures with their period, source and comparison.
Privacy and analytics
We use necessary technical cookies and, only with your consent, analytics and marketing pixels to improve the website and measure campaigns.
The brand's networks, ads, website and activity in Nömad: figures with their period, source and comparison.
Updated on January 1, 1970
Read-only in every door.
The brand's headline figures for a period (followers, reach, engagement, website sessions, ad spend, posts published, works completed, messages with Nömad) compared with the previous period, plus which sources are connected. Use it for «how is my brand doing?». Each figure names its sources and, when it covers fewer days than the period (history still importing, or a provider window such as the last 28 days for reach), that window; null means nothing measures it, so suggest connecting the source in sources that unlocks it (only a brand owner or admin connects, in Nömad › Connections). Never invent or estimate numbers.
| Field | Value |
|---|---|
| Kind | Read |
| HTTP method | POST /api/v1/stats.overview |
| MCP tool | stats_overview |
| Scope | stats.read |
| Minimum role | Viewer |
| Human confirmation | No |
| Doors | Nödo, Voice, MCP, API, Chat, Screens, Apps |
| Status | Available |
Input
{
from?: string // First day of the period (YYYY-MM-DD). Default: 28 days before `to`.
to?: string // Last day of the period (YYYY-MM-DD), included. Default: yesterday in `timeZone`.
compare?: "previous" | "year" | "none" // default "previous" · `previous`: the same number of days just before; `year`: the same days a year earlier; `none`: no comparison.
timeZone?: string // ≤ 64 · IANA zone the days are counted in. Default: Europe/Madrid.
}Output
{
period: {
from: string
to: string
previousFrom: string | null
previousTo: string | null
compare: "previous" | "year" | "none"
timeZone: string
}
figures: Array<{
metric: "followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"
value: number | null // Null when no source the brand has measures it in the period.
previous: number | null
change: number | null // Stock metrics (followers): gained or lost during the period.
currency: string | null // ISO currency for `spend`; null when several currencies cannot be added.
sources: string[] // Products (`instagram`, `meta_ads`, `nomad`…) the value comes from.
window: {
from: string
to: string
}
| null // When the value covers other days than the period (a provider window such as the last 28 days of reach, or a history still being imported), the days it covers.
partial: boolean // True when some connected source could not contribute to this figure in the period.
}>
sources: Array<{
product: string
family: "social" | "web" | "business" | "ads" | "email" | "nomad"
name: string
adapter: "live" | "contract" // `live`: Nömad reads it; `contract`: declared, not read yet (see `missing`).
state: "connected" | "attention" | "not_connected" | "unavailable" // `attention`: connected but a connection needs a person (reconnect in Connections). `unavailable`: cannot be connected yet.
accounts: Array<{
id: string
name: string
handle: string | null
status: string // Connection status: active, limited, refresh_required, expired, revoked, error, paused, disconnected, transferred.
lastReadAt: string | null // Last time Nömad stored a metric of this account.
history: {
from: string | null // Oldest provider day imported so far; null until the first import.
target: string | null // Oldest day the import goes back to (the provider's depth, capped).
through: string | null // Newest provider day of the daily series (providers settle the last 1–3 days later).
importing: boolean // True while the history is still being imported: figures before `from` are not there yet.
}
| null // Daily history of this account, for sources with a daily series; null otherwise.
}>
unlocks: Array<"followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"> // Metrics connecting it adds to the report.
missing: string | null // For `contract` adapters: what is missing, in the reader's language.
}>
updatedAt: string | null
}One section of the brand's Statistics, exactly as the screen draws it: overview, social, web, ads, content, activity (works, posts, conversations, Library files and meetings in Nömad, always available) or sources. Returns compared figures, daily series, a breakdown per network or account, breakdowns by dimension (where visits come from, audience by country, age and gender, spend by campaign), the top posts of the period and the sources with what connecting each one unlocks. Prefer stats.overview for a quick answer and this for a full report.
| Field | Value |
|---|---|
| Kind | Read |
| HTTP method | POST /api/v1/stats.report |
| MCP tool | stats_report |
| Scope | stats.read |
| Minimum role | Viewer |
| Human confirmation | No |
| Doors | Nödo, Voice, MCP, API, Chat, Screens, Apps |
| Status | Available |
Input
{
section?: "overview" | "social" | "web" | "ads" | "content" | "activity" | "sources" // default "overview"
from?: string // First day of the period (YYYY-MM-DD). Default: 28 days before `to`.
to?: string // Last day of the period (YYYY-MM-DD), included. Default: yesterday in `timeZone`.
compare?: "previous" | "year" | "none" // default "previous" · `previous`: the same number of days just before; `year`: the same days a year earlier; `none`: no comparison.
timeZone?: string // ≤ 64 · IANA zone the days are counted in. Default: Europe/Madrid.
}Output
{
section: "overview" | "social" | "web" | "ads" | "content" | "activity" | "sources"
period: {
from: string
to: string
previousFrom: string | null
previousTo: string | null
compare: "previous" | "year" | "none"
timeZone: string
}
figures: Array<{
metric: "followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"
value: number | null // Null when no source the brand has measures it in the period.
previous: number | null
change: number | null // Stock metrics (followers): gained or lost during the period.
currency: string | null // ISO currency for `spend`; null when several currencies cannot be added.
sources: string[] // Products (`instagram`, `meta_ads`, `nomad`…) the value comes from.
window: {
from: string
to: string
}
| null // When the value covers other days than the period (a provider window such as the last 28 days of reach, or a history still being imported), the days it covers.
partial: boolean // True when some connected source could not contribute to this figure in the period.
}>
series: Array<{
metric: "followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"
product: string | null
points: Array<{
day: string
value: number | null
}>
previous: Array<{
day: string
value: number | null
}> // The comparison period, day by day, aligned by position.
}>
breakdown: Array<{
key: string
product: string
family: "social" | "web" | "business" | "ads" | "email" | "nomad"
name: string // Account, page or ad account name as the provider reports it.
handle: string | null
currency: string | null
values: Record<string, number | null> // Normalized metric id → value for the period.
window: {
from: string
to: string
}
| null
}>
dimensions: Array<{
widget: string // Report widget id, e.g. `web.channels`, `social.audience_country`.
metric: "followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"
dimension: "channel" | "country" | "city" | "device" | "landing_page" | "age" | "gender" | "campaign"
kind: "total" | "latest" // `total`: summed over the period's days; `latest`: the newest picture inside the period (audience demographics).
asOf: string | null // For `latest`: the day of the picture.
currency: string | null
sources: string[]
total: number | null // Sum of every value of the dimension (the share base).
rows: Array<{
value: string // Raw value: ISO country code, provider channel name, age range, F/M/U, page path, campaign name…
amount: number
share: number | null // Fraction of `total` (0–1).
}>
}> // Breakdowns by country, channel, landing page, device, age, gender or campaign, from the daily history.
topPosts: Array<{
id: string
origin: "nomad" | "imported" // `nomad`: published from Nömad; `imported`: published on the network and imported.
postId: string | null // The Nömad post (open it in Publicaciones); null for imported ones.
product: string
accountName: string | null
text: string | null
permalink: string | null
thumbnailUrl: string | null
publishedAt: string
metrics: Record<string, number> // Latest reading: reach, views, impressions, engagement, likes, comments, shares, saves…
measuredAt: string | null
}>
sources: Array<{
product: string
family: "social" | "web" | "business" | "ads" | "email" | "nomad"
name: string
adapter: "live" | "contract" // `live`: Nömad reads it; `contract`: declared, not read yet (see `missing`).
state: "connected" | "attention" | "not_connected" | "unavailable" // `attention`: connected but a connection needs a person (reconnect in Connections). `unavailable`: cannot be connected yet.
accounts: Array<{
id: string
name: string
handle: string | null
status: string // Connection status: active, limited, refresh_required, expired, revoked, error, paused, disconnected, transferred.
lastReadAt: string | null // Last time Nömad stored a metric of this account.
history: {
from: string | null // Oldest provider day imported so far; null until the first import.
target: string | null // Oldest day the import goes back to (the provider's depth, capped).
through: string | null // Newest provider day of the daily series (providers settle the last 1–3 days later).
importing: boolean // True while the history is still being imported: figures before `from` are not there yet.
}
| null // Daily history of this account, for sources with a daily series; null otherwise.
}>
unlocks: Array<"followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"> // Metrics connecting it adds to the report.
missing: string | null // For `contract` adapters: what is missing, in the reader's language.
}>
updatedAt: string | null
}One normalized metric day by day for the period and the comparison period, across the brand's sources or only one (product, e.g. instagram). Followers are the level each day; Nömad activity (posts_published, works_opened, works_completed, conversations, messages, files_added, meetings) is a count per day; provider metrics (views, engagement, reach, sessions, users, spend, clicks…) come from the daily history Nömad imports when an account is connected (see history in stats.sources.list); a day nothing measured is a null point, never zero.
| Field | Value |
|---|---|
| Kind | Read |
| HTTP method | POST /api/v1/stats.series |
| MCP tool | stats_series |
| Scope | stats.read |
| Minimum role | Viewer |
| Human confirmation | No |
| Doors | Nödo, Voice, MCP, API, Chat, Screens, Apps |
| Status | Available |
Input
{
metric: "followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"
product?: string // ≤ 60
from?: string // First day of the period (YYYY-MM-DD). Default: 28 days before `to`.
to?: string // Last day of the period (YYYY-MM-DD), included. Default: yesterday in `timeZone`.
compare?: "previous" | "year" | "none" // default "previous" · `previous`: the same number of days just before; `year`: the same days a year earlier; `none`: no comparison.
timeZone?: string // ≤ 64 · IANA zone the days are counted in. Default: Europe/Madrid.
}Output
{
period: {
from: string
to: string
previousFrom: string | null
previousTo: string | null
compare: "previous" | "year" | "none"
timeZone: string
}
series: {
metric: "followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"
product: string | null
points: Array<{
day: string
value: number | null
}>
previous: Array<{
day: string
value: number | null
}> // The comparison period, day by day, aligned by position.
}
}The brand's posts published in the period (from Nömad or imported from the network), ranked by metric (engagement, reach, views or impressions) with their latest reading, permalink and network. Use it to say what content worked and to suggest more of it.
| Field | Value |
|---|---|
| Kind | Read |
| HTTP method | POST /api/v1/stats.posts.top |
| MCP tool | stats_posts_top |
| Scope | stats.read |
| Minimum role | Viewer |
| Human confirmation | No |
| Doors | Nödo, Voice, MCP, API, Chat, Screens, Apps |
| Status | Available |
Input
{
metric?: "engagement" | "reach" | "views" | "impressions" // default "engagement"
product?: string // ≤ 60
limit?: integer // 1–50 · default 10
from?: string // First day of the period (YYYY-MM-DD). Default: 28 days before `to`.
to?: string // Last day of the period (YYYY-MM-DD), included. Default: yesterday in `timeZone`.
compare?: "previous" | "year" | "none" // default "previous" · `previous`: the same number of days just before; `year`: the same days a year earlier; `none`: no comparison.
timeZone?: string // ≤ 64 · IANA zone the days are counted in. Default: Europe/Madrid.
}Output
{
period: {
from: string
to: string
previousFrom: string | null
previousTo: string | null
compare: "previous" | "year" | "none"
timeZone: string
}
metric: string
items: Array<{
id: string
origin: "nomad" | "imported" // `nomad`: published from Nömad; `imported`: published on the network and imported.
postId: string | null // The Nömad post (open it in Publicaciones); null for imported ones.
product: string
accountName: string | null
text: string | null
permalink: string | null
thumbnailUrl: string | null
publishedAt: string
metrics: Record<string, number> // Latest reading: reach, views, impressions, engagement, likes, comments, shares, saves…
measuredAt: string | null
}>
}Where the brand's figures come from: every network, ad account, analytics and business profile Nömad can read, whether it is connected (with its accounts and last reading), needs attention, or is not connected, and which metrics connecting it unlocks. contract sources are declared but not read yet. Connecting is done by a brand owner or admin in Nömad › Connections.
| Field | Value |
|---|---|
| Kind | Read |
| HTTP method | POST /api/v1/stats.sources.list |
| MCP tool | stats_sources_list |
| Scope | stats.read |
| Minimum role | Viewer |
| Human confirmation | No |
| Doors | Nödo, Voice, MCP, API, Chat, Screens, Apps |
| Status | Available |
Input
{}Output
{
sources: Array<{
product: string
family: "social" | "web" | "business" | "ads" | "email" | "nomad"
name: string
adapter: "live" | "contract" // `live`: Nömad reads it; `contract`: declared, not read yet (see `missing`).
state: "connected" | "attention" | "not_connected" | "unavailable" // `attention`: connected but a connection needs a person (reconnect in Connections). `unavailable`: cannot be connected yet.
accounts: Array<{
id: string
name: string
handle: string | null
status: string // Connection status: active, limited, refresh_required, expired, revoked, error, paused, disconnected, transferred.
lastReadAt: string | null // Last time Nömad stored a metric of this account.
history: {
from: string | null // Oldest provider day imported so far; null until the first import.
target: string | null // Oldest day the import goes back to (the provider's depth, capped).
through: string | null // Newest provider day of the daily series (providers settle the last 1–3 days later).
importing: boolean // True while the history is still being imported: figures before `from` are not there yet.
}
| null // Daily history of this account, for sources with a daily series; null otherwise.
}>
unlocks: Array<"followers" | "followers_gained" | "reach" | "impressions" | "views" | "engagement" | "engagement_rate" | "clicks" | "ctr" | "spend" | "conversions" | "sessions" | "active_users" | "key_events" | "page_views" | "calls" | "directions" | "posts_published" | "works_completed" | "works_opened" | "conversations" | "messages" | "files_added" | "meetings"> // Metrics connecting it adds to the report.
missing: string | null // For `contract` adapters: what is missing, in the reader's language.
}>
}