Skip to main content
Glama

List Post Analytics

list_post_analytics
Read-only

Per-post metrics for posts published inside the window, sorted by a metric or by publish date, paginated. Use it for "top posts", "which post got the most comments" and "how did post X do". Covers posts published through AdaptlyPost and posts discovered on the connected accounts; Google Business Profile posts are listed with null metrics, since that platform reports only location impressions; discovered posts have postId and postPlatformId set to null, while AdaptlyPost posts carry the postId used by get_post. Returns { posts, total, page, limit, hasMore }; each post has platform, publishedAt, title, thumbnailUrl, permalink, connectionId, accountName and metrics { views, likes, comments, shares, saves, clicks, impressions, reach, engagementRate, plus engagedViews, averageViewDurationSeconds and averageViewPercentage on YouTube }, with null for metrics the platform does not report. Sort by a metric for a ranked list (list_top_posts returns the top few in one call); PUBLISHED_AT (default) for a chronological review. Not for publishing status: use list_post_results for that.

Input Schema

NameRequiredDescriptionDefault
toYesEnd of the reporting window (ISO 8601). Must not be earlier than from
fromYesStart of the reporting window as an ISO 8601 date or instant (e.g. "2026-08-01"). Metrics cover posts published between from and to; the comparison window is the same length immediately before from
pageNoPage number, from 1
limitNoPosts per page, 1 to 100
sortByNoMetric to sort by, descending. PUBLISHED_AT (default) lists newest first
platformsNoRestrict to these platforms; omit for every platform with analytics. MASTODON, TELEGRAM and TUMBLR have no analytics and are ignored. GOOGLE_BUSINESS reports location impressions only, with no per-post numbers
workspaceIdNoWorkspace to act in: an id from list_workspaces. Omit to act in the workspace list_workspaces marks current. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another
connectionIdsNoRestrict to these accounts, by the account id from list_accounts; omit for every account

Output Schema

NameRequiredDescriptionDefault
resultNoAn object with posts (each { id, postId, postPlatformId, platform, publishedAt, title, thumbnailUrl, permalink, connectionId, accountName, metrics }), total, page, limit, and hasMore.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedInput schema / properties / connectionIds
      Added value: +{
      +  "description": "Restrict to these accounts, by the account id from list_accounts; omit for every account",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / platforms / description
      Previous value: -"Restrict to these platforms; omit for every platform with analytics. MASTODON and TELEGRAM have no analytics and are ignored. GOOGLE_BUSINESS reports location impressions only, with no per-post numbers"New value: +"Restrict to these platforms; omit for every platform with analytics. MASTODON, TELEGRAM and TUMBLR have no analytics and are ignored. GOOGLE_BUSINESS reports location impressions only, with no per-post numbers"
    • changedInput schema / properties / platforms / items / enum
      Previous value: -[
      -  "LINKEDIN",
      -  "YOUTUBE",
      -  "INSTAGRAM",
      -  "FACEBOOK",
      -  "TIKTOK",
      -  "PINTEREST",
      -  "THREADS",
      -  "BLUESKY",
      -  "TWITTER",
      -  "MASTODON",
      -  "GOOGLE_BUSINESS",
      -  "TELEGRAM"
      -]New value: +[
      +  "LINKEDIN",
      +  "YOUTUBE",
      +  "INSTAGRAM",
      +  "FACEBOOK",
      +  "TIKTOK",
      +  "PINTEREST",
      +  "THREADS",
      +  "BLUESKY",
      +  "TWITTER",
      +  "MASTODON",
      +  "GOOGLE_BUSINESS",
      +  "TUMBLR",
      +  "TELEGRAM"
      +]
    • changedOutput schema / properties / result / description
      Previous value: -"An object with posts (each { id, postId, postPlatformId, platform, publishedAt, title, thumbnailUrl, permalink, accountName, metrics }), total, page, limit, and hasMore."New value: +"An object with posts (each { id, postId, postPlatformId, platform, publishedAt, title, thumbnailUrl, permalink, connectionId, accountName, metrics }), total, page, limit, and hasMore."
  2. Changed2 schema fields changed
    • changedInput schema / properties / platforms / description
      Previous value: -"Restrict to these platforms; omit for every platform with analytics. X (TWITTER) and MASTODON have no analytics and are ignored; LinkedIn analytics are pending platform approval and return no data yet"New value: +"Restrict to these platforms; omit for every platform with analytics. MASTODON and TELEGRAM have no analytics and are ignored. GOOGLE_BUSINESS reports location impressions only, with no per-post numbers"
    • changedInput schema / properties / platforms / items / enum
      Previous value: -[
      -  "LINKEDIN",
      -  "YOUTUBE",
      -  "INSTAGRAM",
      -  "FACEBOOK",
      -  "TIKTOK",
      -  "PINTEREST",
      -  "THREADS",
      -  "BLUESKY",
      -  "TWITTER",
      -  "MASTODON"
      -]New value: +[
      +  "LINKEDIN",
      +  "YOUTUBE",
      +  "INSTAGRAM",
      +  "FACEBOOK",
      +  "TIKTOK",
      +  "PINTEREST",
      +  "THREADS",
      +  "BLUESKY",
      +  "TWITTER",
      +  "MASTODON",
      +  "GOOGLE_BUSINESS",
      +  "TELEGRAM"
      +]
  3. Changed2 schema fields changed
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  4. Changed6 schema fields changed
    • addedInput schema / properties / limit / maximum
      Added value: +100
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • addedInput schema / properties / page / minimum
      Added value: +1
    • changedInput schema / properties / page / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / workspaceId / description
      Previous value: -"Workspace to act in: an id from list_workspaces. Omit to use the default workspace. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another"New value: +"Workspace to act in: an id from list_workspaces. Omit to act in the workspace list_workspaces marks current. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another"
  5. Changed1 schema field changed
    • addedInput schema / properties / workspaceId
      Added value: +{
      +  "description": "Workspace to act in: an id from list_workspaces. Omit to use the default workspace. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another",
      +  "type": "string"
      +}
  6. Changed2 schema fields changed
    • changedInput schema / properties / platforms / description
      Previous value: -"Restrict to these platforms; omit for every platform with analytics. X (TWITTER) has no analytics and is ignored; LinkedIn analytics are pending platform approval and return no data yet"New value: +"Restrict to these platforms; omit for every platform with analytics. X (TWITTER) and MASTODON have no analytics and are ignored; LinkedIn analytics are pending platform approval and return no data yet"
    • changedInput schema / properties / platforms / items / enum
      Previous value: -[
      -  "LINKEDIN",
      -  "YOUTUBE",
      -  "INSTAGRAM",
      -  "FACEBOOK",
      -  "TIKTOK",
      -  "PINTEREST",
      -  "THREADS",
      -  "BLUESKY",
      -  "TWITTER"
      -]New value: +[
      +  "LINKEDIN",
      +  "YOUTUBE",
      +  "INSTAGRAM",
      +  "FACEBOOK",
      +  "TIKTOK",
      +  "PINTEREST",
      +  "THREADS",
      +  "BLUESKY",
      +  "TWITTER",
      +  "MASTODON"
      +]
  7. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/non-destructive annotations, it discloses source coverage (AdaptlyPost vs discovered posts vs Google Business Profile) and the consequence: GBP posts appear with null metrics, discovered posts have null postId/postPlatformId, and unreported metrics are null. This is exactly the kind of edge-case behavior an agent cannot infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose and use cases, and every sentence carries information. It is dense, however, and the long return-shape enumeration partially duplicates the existing output schema, adding length without new decision-relevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a read tool with 8 parameters, null-heavy edge cases, and a sibling-heavy family. The description covers platform quirks, ID nullability, sorting intent, and cross-tool routing, leaving nothing an agent needs in order to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries parameter definitions and the baseline is 3. The description still adds interpretive value by explaining the sorting strategy (sort by a metric for a ranked list, PUBLISHED_AT default for chronological review), which tells the agent how to choose sortBy rather than just what it accepts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ('Per-post metrics for posts published inside the window') and immediately scopes behavior: sort options and pagination. It explicitly separates itself from siblings by naming list_top_posts, list_post_results, and get_post, so an agent can pick correctly without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete triggering questions ('top posts', 'which post got the most comments', 'how did post X do'), names the alternative (list_top_posts returns the top few in one call), and states an exclusion ('Not for publishing status: use list_post_results'). The when/when-not/alternative triad is fully covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources