Followers, reach, engagement, top publications and posting times. Read-only. Setup and authentication are on the main MCP page.

📄

AI-readable version: mcp.md — the complete reference in one plain-Markdown file, for agents and LLMs. Index: llms.txt

Analytics

⚠️

Analytics profiles are not publishing profiles. They are a separate connection with separate IDs and no link between them — a social account can be connected to publishing, to analytics, to both, or to neither. Analytics IDs carry an an_ prefix (an_66f3c1d2e4b0a1c2d3e4f5a6) so passing the wrong one fails immediately instead of silently returning nothing. Start every analytics task with analytics_profiles_list.

ToolDescription
analytics_profiles_listList profiles that have analytics — call this first
analytics_metrics_listMetric/chart catalog: meanings, formulas, per-platform availability
analytics_overviewHeadline numbers for a period — followers, reach, posts, engagement
analytics_audienceFollowers over time plus demographics where available
analytics_postsPost, story or profile metrics over time
analytics_top_postsRank publications by a metric
analytics_best_timeWeekday × hour engagement heatmap
analytics_compare_periodsPeriod over period, with absolute and percent change

What differs per platform

InstagramFacebookLinkedInTikTokTwitter/X
analytics_overview✅✅✅✅✅
Followers✅✅✅✅✅
Demographics✅✅✅——
Stories (type: stories)✅————
Profile metrics (type: profile)✅✅✅——
analytics_top_posts✅✅✅✅—
analytics_best_time✅✅✅✅✅

Don't memorize that table — read capabilities.endpoints from analytics_profiles_list, which also reflects the account's plan and connection state.

Reading the numbers correctly

Tool Reference

Detailed parameters for each MCP tool. Required fields must always be provided; optional fields can be omitted.

Analytics

All analytics tools are read-only and share the same period parameters:

ParameterTypeDescriptionRequired
analytics_profile_idstringFrom analytics_profiles_list, always an_.... Not a publishing profile_id.Yes
date_fromstringYYYY-MM-DD in the account timezone. Defaults to 30 days before date_to.No
date_tostringYYYY-MM-DD, inclusive. Defaults to today.No
granularitystringday (default), week, monthNo
timezonestringIANA name. Defaults to the account timezone.No

Maximum range: 400 days at day granularity, about 3 years at week/month.

analytics_profiles_list

Call this first. Optional platform filter. Each profile returns:

FieldDescription
idAnalytics profile ID, always an_...
capabilitiesWhich analytics tools work for this profile, allowed sort_by values, supported granularities
coverageFrom which date data actually exists, and whether the initial backfill finished
statusinactive means the network token expired — collection is paused until the user re-authorizes it in the dashboard
linked_publish_profilePublishing profile for the same social account, or null. Use its id in posts_create — never an an_... id.

analytics_metrics_list

Catalog of metrics and charts. Optional platform filter. Metrics with source: "derived" are computed by Onlypult and have no equivalent in the network's own statistics; formula says exactly how.

analytics_overview

Headline numbers for a period, grouped by category. Add include_series: true to also get per-interval data points (off by default to keep responses small).

analytics_audience

Follower dynamics and, where the network provides it, gender / age / countries / cities / languages. TikTok and Twitter/X report follower counts only.

analytics_posts

Metrics over time. type: posts (default), stories (Instagram only), profile (profile views and contact taps; not on TikTok). For "which posts performed best" use analytics_top_posts instead.

Each block has chart, title, unit, summary (total, and often avg / max) and data. A point is {date, value}, or {date, all, image, video, gallery, reels} when the chart splits by media type. Saves, shares and video views of one publication are fields on analytics_top_posts.

analytics_top_posts

ParameterTypeDescriptionRequired
typestringposts (default) or stories (Instagram only)No
sort_bystringRanking metric — platform-dependent, see capabilities.top_posts_sort_by. Default published_at.No
sort_dirstringdesc (default) for best-first, asc for worst-firstNo
limitnumber1–50, default 20No
skipnumberOffset for pagingNo
media_typesstring[]image, video, gallery, link, article, poll, …No

Not available for Twitter/X. Slower and rate-limited more tightly than other analytics tools, because media details are fetched from the social network live. A wrong sort_by returns the allowed values in details.allowed. caption is truncated to 500 characters and marked content_trust: untrusted_external.

Fields of each item in items. A field is absent when that platform does not return it.

FieldWhat it is
id, platform_id, type, media_type, media_product_type, published_atIdentity. published_at is Unix time in milliseconds. media_product_type is feed, reels or story.
urlPermalink of the publication.
media_urlImage URL. For a video or Reel this is the cover, not the file. The link expires.
caption, titleText. title is TikTok only. Untrusted.
likes, commentsLikes and comments, including Instagram stories.
reactionsTotal reactions. Facebook.
sharesTimes the post was shared or reposted. Not returned for stories.
savedTimes the post was saved. Instagram.
video_viewsTimes the video was viewed, including repeats. Not returned for stories.
clicksClicks on the post. LinkedIn.
reachUnique accounts that saw the publication. Not returned for TikTok.
impressionsTimes the publication was shown. On Instagram this counts unique accounts. On Facebook and LinkedIn repeat views are included. Not returned for TikTok.
engagementInteractions with the publication. Not returned for TikTok, LinkedIn or stories.
exits, replies, taps_back, taps_forwardInstagram stories. Left the story, replies, taps to the previous and next story.

analytics_best_time

Weekday × hour heatmap of interactions and engagement rate, plus posting frequency and best-performing hashtags. day is 0 = Monday … 6 = Sunday, hour is 0–23 in the requested timezone — convert to the account timezone from account_get before using it in publish_at. Prefer 60–90 day periods; shorter ones are noisy.

analytics_compare_periods

Same aggregates as analytics_overview, for two periods, with change per metric. The baseline defaults to the equally long period right before date_from; override with compare_date_from / compare_date_to. change.percent is null when the baseline value was zero.

Analytics errors

CodeMeaning
analytics_not_availableThe plan does not include Analytics
analytics_profile_not_foundUnknown ID, no access — or a publishing profile_id was passed by mistake
analytics_platform_unsupportedThis tool does not apply to this platform (e.g. stories on Facebook)
analytics_metric_unavailableUnknown chart name, or not available for this platform
analytics_granularity_unsupportedOnly day, week, month are supported
analytics_range_too_largeNarrow the period or use a coarser granularity
analytics_data_not_readyInitial collection still running — retryable
analytics_profile_reauth_requiredThe network connection expired; the user must re-authorize it
analytics_upstream_unavailableAnalytics service or social network temporarily down — retryable

Example conversations

Performance summary

You: How is my Instagram doing this month?

Assistant: analytics_profiles_list (pick the an_… id) → analytics_overview for the month → reports the numbers, and mentions coverage if the profile started collecting mid-period

Month over month

You: Compare July to June across my accounts

Assistant: analytics_profiles_list → analytics_compare_periods per profile → summarizes change, saying "no baseline" where percent is null

Best posts, then new content

You: Find what worked best last quarter and draft five posts like it

Assistant: analytics_profiles_list → analytics_top_posts(sort_by="reach", limit=10) → summarizes the patterns → uses linked_publish_profile.id → posts_create with is_draft=true

Timing

You: When should I publish on TikTok?

Assistant: analytics_profiles_list → analytics_best_time over ~90 days → converts the top weekday/hour cells to the account timezone → posts_create with that publish_at

Unsupported combination

You: Show me Stories stats for my Facebook page

Assistant: sees capabilities.endpoints without "stories" → explains Stories analytics are Instagram-only and offers analytics_posts instead