Skip to main content
Glama
Upload-Post

Upload-Post

Official

Get post analytics

get_post_analytics

Fetch live per-platform analytics for a specific post by request ID, including TikTok retention, reach, and watch times, without changing the post or account.

Instructions

Per-platform metrics for a specific post identified by request_id. post_metrics carries whatever each platform reports, so its shape is not the same everywhere: on TikTok it adds retention (the curve, second by second), impression_sources (For You, following, search, profile…), audience_types (followers vs non-followers), new_followers won by the post, reach and the watch times (average_time_watched, total_time_watched, full_video_watched_rate) on top of the usual counters. It fetches the metrics live from the platform and changes nothing on the post or the account; Upload-Post keeps a copy of the result, which later reads of the same post can get from get_cached_post_analytics. Repeated calls for the same post within 5 minutes return the same result. When one platform cannot answer (for example, X's daily limit on live post reads), its entry carries post_metrics_error instead of post_metrics and the other platforms still answer.

Input Schema

NameRequiredDescriptionDefault
requestIdYes

Output Schema

NameRequiredDescriptionDefault
resultNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changedv0.11.1
    • removedInput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
    • removedOutput schema / $schema
      Removed value: -"http://json-schema.org/draft-07/schema#"
  2. First observedv0.4.0

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses a live platform call with no mutation of post or account, a server-side cached copy, a 5-minute idempotency window, and a per-platform failure mode where post_metrics_error replaces post_metrics while other platforms still answer (citing X's daily live-read limit). That error semantics and rate-limit context is exactly the kind of behavior annotations cannot express. No contradiction with readOnlyHint=false/destructiveHint=false: the tool is non-mutating but does perform external live reads and stores a result copy.

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-loads the core purpose and keeps everything else in one dense paragraph with no filler sentences. It is on the long side and the TikTok metric enumeration could be trimmed since an output schema exists, but each sentence conveys operational information.

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

Completeness4/5

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

With an output schema present, the tool does not need to enumerate return fields, yet it still explains the variable post_metrics shape and the error-entry pattern, plus side effects and caching. The only real gap is the missing guidance on where requestId comes from, which matters for a one-parameter tool at 0% schema coverage.

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

Parameters3/5

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

Schema coverage is 0% for the single required parameter, so the description carries the burden and only partially meets it: it names the identifier as `request_id` (note the casing differs from the schema's `requestId`) but never says where to obtain it or what format it takes. The reader knows the parameter identifies the post but not how to source it.

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?

States a specific verb and resource: per-platform metrics for a specific post identified by request_id. It explicitly distinguishes itself from get_cached_post_analytics by noting it fetches live and that the cached sibling serves later reads of the same post, so an agent can pick between them without opening either schema.

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

Usage Guidelines4/5

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

Names the alternative (get_cached_post_analytics) and the condition that separates them: live fetch now vs. the stored copy. It also warns that repeat calls within 5 minutes return the same result, which tells the agent not to poll. It stops short of an explicit 'use X when / never use Y when' rule, so a 4 rather than a 5.

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