Skip to main content
Glama
IvanBBaev

facebook-mcp

by IvanBBaev

Post Insights

facebook_post_insights
Read-onlyIdempotent

Fetch insights for a single published Facebook post, including views, clicks, reactions, and video metrics, with per-metric summaries or aggregate totals for performance analysis.

Instructions

Read Graph insights for one published post (post_media_view, post_clicks, post_reactions_by_type_total, video metrics, ...) in the same compact flat shape as facebook_page_insights: rows plus per-metric summaries, or totals only with aggregate:true. The default period is "lifetime" — one cumulative value per metric. Post metrics lag minutes to hours after publishing, so empty series on a fresh post are normal and are flagged as such rather than reported as zeros. Reel metrics are NOT reachable through this tool: they live on /{video-id}/video_insights, a different edge — a Reel ID here returns empty series, never Reel numbers. Use facebook_reel_insights with the VIDEO id instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
sinceNoStart of the window as a calendar date "YYYY-MM-DD" (inclusive, Page timezone). Omitted ⇒ Graph's own default window. The since..until span may not exceed 90 days per call (checked before the request); read longer histories in slices.
untilNoEnd of the window as a calendar date "YYYY-MM-DD". Each returned `date` is the END of the period the value covers, so a window reaching today ends in a partial, still-being-computed bucket. Omitted ⇒ today.
periodNoAggregation window Graph applies per data point. "day" is a daily series (the Page default); "lifetime" is one cumulative value per metric (the post default); "week"/"days_28" are rolling windows; "month" is calendar-monthly; "total_over_range" collapses since..until into a single value. Not every metric supports every period — a metric queried with an unsupported period comes back empty, which the notes call out.
metricsYesGraph insights metric names to read, e.g. ["page_media_view","page_follows"] (1-20 per call; trimmed and lower-cased). Names are Graph-version dependent and Meta renamed most of them in the 2024-09, 2025-11 and 2026-06 waves: pre-wave names such as "page_impressions" or "page_fans" are dropped before the request and answered with their replacement instead of an error. Graph fails the WHOLE call when one surviving name is invalid, so isolate a suspect name by requesting it alone.
post_idYesThe published post to read, as Graph's "{page-id}_{post-id}" ID (as returned by facebook_list_posts / facebook_get_post). Permalink URLs are rejected. The post must belong to the resolved Page, whose token authorizes the read.
profileNoPage profile key (e.g. "brand-a") or a raw Page ID. Omitted ⇒ the default Page (FB_PAGE_ID).
max_rowsNoLower the per-point row cap for this call (1-250; the default and the ceiling are both 250 — this argument can only shrink it). Rows past the cap are dropped and the result reports how many; prefer aggregate:true over a tiny cap when you only need totals.
aggregateNoTrue ⇒ return per-metric totals only (period, points, total, first/last boundary) and NO per-point rows. Use it for wide windows or many metrics: it is the cheapest way to stay inside the result budget when a daily series would otherwise be truncated.
Install Server

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool readOnly, idempotent, openWorld, and non-destructive; the description adds beyond that by disclosing the output shape (rows plus per-metric summaries vs totals with aggregate:true), the lifetime default, and the lag/cached behavior for fresh posts. It also warns that Reel IDs silently produce empty series rather than Reel numbers, which is valuable behavioral context with no contradiction.

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

Conciseness5/5

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

Every sentence earns its place: scope and shape first, then the lifetime default, then the lag/empty-series caveat, then the Reel exclusion and corrective alternative. It is information-dense but well-ordered and not bloated.

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?

Despite no output schema, the description explains the return shape, aggregate mode, default period, and edge cases (fresh posts, Reel IDs) needed to interpret results correctly. Combined with a 100%-covered input schema, an agent has enough context to invoke and understand the tool accurately.

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 description coverage is 100% and the parameter fields already carry thorough descriptions for period, metrics, post_id, aggregate, max_rows, etc. The description only restates lifetime and aggregate:true which the schema already covers, so it adds minimal parameter-level meaning beyond the schema.

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?

The first sentence names the verb 'Read', the resource ('Graph insights for one published post'), and representative metrics, and references the compact shape shared with facebook_page_insights. It explicitly says Reel metrics are not reachable and names the correct sibling tool, so an agent can distinguish it cleanly.

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?

The description explicitly states that Reel metrics live on a different edge, that a Reel ID returns empty series, and that facebook_reel_insights should be used with the VIDEO id instead. It also gives concrete when-to-use expectations by saying a fresh post's empty series are normal and flagged rather than zeros.

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

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/IvanBBaev/facebook-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server