meta-mcp
Provides tools for managing Facebook Pages, including listing pages, getting page info, posts, comments, and page insights.
Provides tools for Instagram business accounts, including getting account info, listing media, media insights, user insights, and hashtag search.
Provides read-only access to Meta's Graph API, including Facebook Pages, Instagram, WhatsApp Business, and Ads Marketing APIs.
Provides tools for WhatsApp Business API, including listing business accounts, phone numbers, message templates, and analytics.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@meta-mcplist my ad accounts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
meta-mcp
Read-only MCP server for Meta (Facebook) Graph API. Plugs into Claude Code (and any other MCP-compatible client) over stdio (local) or Streamable HTTP (remote).
Covers four API surfaces with a single long-lived token:
Marketing API — ad accounts, campaigns, ad sets, ads, creatives, insights
Facebook Pages — pages, posts, comments, page insights
Instagram Graph — business accounts, media, media/account insights, hashtag search
WhatsApp Business — WABAs, phone numbers, message templates, analytics
Plus debug_token (inspect any token) and graph_get (raw GET escape-hatch).
HTTP method is hard-coded to GET everywhere — Claude cannot accidentally create, mutate, or delete anything.
Tools
Specialized (validated with zod):
Surface | Tools |
Common |
|
Pages |
|
Marketing |
|
| |
|
Related MCP server: flin-meta-ads-mcp
1. Get an access token
The token prefix EAA... is the same for every Graph token type — you can't tell which kind you have from the prefix. Run debug_token after first start to identify it. The four kinds:
Kind | When to use | How to obtain |
System User | Recommended for ads / business automation — long-lived, doesn't tie to a human account | Business Manager → Business settings → Users → System users → Generate new token |
Page Access Token | Single page only | Graph Explorer with a user token: |
User OAuth token | Personal access, expires in ~60 days | Standard FB Login OAuth flow |
App access token | Server-to-server calls that don't need user context (e.g. | `APPID |
For page_insights and any Instagram tool you need a Page Access Token. This server resolves it lazily: if FB_ACCESS_TOKEN is a user/system token with admin rights, calling any Page/IG tool triggers a one-time /me/accounts fetch that caches each page's token. No manual swap needed.
2. App credentials (recommended)
If you set both FB_APP_ID and FB_APP_SECRET in .env:
Every request is signed with
appsecret_proof— Meta's defence against token replay if the access token leaks.debug_tokenworks (Meta requiresAPPID|APPSECRETto call that endpoint).
Find them at developers.facebook.com → My Apps → {your app} → Settings → Basic.
3. Three ways to run
Mode | When to use |
npm ( | Easiest for end users — no clone, no build |
stdio (from source) | Hacking on the server locally |
Docker (Ubuntu) | Shared server, multiple devices, mobile, teammates |
A. Install from npm
claude mcp add meta \
--env FB_ACCESS_TOKEN=<your-token> \
--env FB_APP_ID=<your-app-id> \
--env FB_APP_SECRET=<your-app-secret> \
-- npx -y meta-mcpOr manually in ~/.claude.json:
{
"mcpServers": {
"meta": {
"command": "npx",
"args": ["-y", "meta-mcp"],
"env": {
"FB_ACCESS_TOKEN": "EAA...",
"FB_APP_ID": "<your-app-id>",
"FB_APP_SECRET": "<your-app-secret>"
}
}
}
}In Claude Code: /mcp → meta: connected.
B. Local — stdio from source
git clone https://github.com/nourgithub/meta-mcp.git
cd meta-mcp
cp .env.example .env
# edit .env — set FB_ACCESS_TOKEN at minimum
# (also FB_APP_ID + FB_APP_SECRET for debug_token / appsecret_proof)
npm install
npm run build
claude mcp add meta -- node "$(pwd)/dist/index.js"C. Remote — Docker on Ubuntu
Everything ships in deploy/:
deploy/Dockerfile— multi-stage Node 20 alpine build, runs as non-root withtinifor clean signalsdeploy/docker-compose.yml— two services: the app + Caddy as TLS-terminating reverse proxydeploy/Caddyfile— auto-HTTPS via Let's Encrypt, proxies/mcp(SSE-aware) and/health
Pre-requisites: Ubuntu server with public IP and a DNS A-record pointing your domain at it.
# 1) On the server — install Docker
ssh root@SERVER_IP
apt-get update
apt-get install -y ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" \
> /etc/apt/sources.list.d/docker.list
apt-get update
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 2) Open ports 80 and 443 (skip if no ufw)
ufw allow 80/tcp
ufw allow 443/tcpFrom your laptop, push the project to the server:
tar -czf - -C /d/meta-mcp \
--exclude='./node_modules' --exclude='./dist' --exclude='./.env' --exclude='./.git' . \
| ssh root@SERVER_IP "mkdir -p /opt/meta-mcp && tar -xzf - -C /opt/meta-mcp"Back on the server, prepare .env:
ssh root@SERVER_IP
cd /opt/meta-mcp
cp .env.example .env
nano .envFill at minimum:
FB_ACCESS_TOKEN=EAA...
FB_APP_ID=...
FB_APP_SECRET=...
MCP_TRANSPORT=http
MCP_HTTP_PORT=8765
MCP_HTTP_AUTH_TOKEN=<openssl rand -hex 32>
MCP_HTTP_ALLOWED_HOSTS=meta-mcp.example.com
META_MCP_DOMAIN=meta-mcp.example.com
ACME_EMAIL=you@example.comchmod 600 .env. Build and start:
cd /opt/meta-mcp/deploy
docker compose build
docker compose up -d
docker compose ps # both services should be "running" / "healthy"
docker compose logs -f # watch Caddy fetch the certVerify:
curl https://meta-mcp.example.com/health
# {"ok":true,"name":"meta-mcp"}
curl -i -X POST https://meta-mcp.example.com/mcp
# 401 — missing bearer (expected)Connect Claude Code:
claude mcp add --transport http meta https://meta-mcp.example.com/mcp \
--header "Authorization: Bearer <your MCP_HTTP_AUTH_TOKEN>"Pagination
All *_list tools accept:
limit— page size (default 25)auto_paginate=true— walkpaging.nextup tomax_pages(default 4) timesmax_pages— safety cap
When auto_paginate=true the response shape is:
{
"items": [ ...flattened from all pages ],
"pages": 3,
"truncated": false,
"next_cursor": "QVFIUjF..."
}Cursors are short-lived (~30 min). Don't reuse a stale next_cursor after a long delay.
Rate limits
Meta's actual budget depends on app tier (Standard / Advanced), token type, and per-object usage — there is no single fixed RPS for Graph API. The server applies:
Client-side: soft cap of
META_RPS_LIMITrequests / second (default 25, env-tunable).Header-aware cooldown: after each response we parse
X-App-Usage,X-Ad-Account-Usage,X-Business-Use-Case-Usage. If any bucket > 90%, the next request is delayed (usingestimated_time_to_regain_accessif present).Retry: on HTTP 429 or Graph error codes
4,17,32,613the request is retried with exponential backoff (max 2 retries).
Security
FB_ACCESS_TOKENis sent only asAuthorization: Bearerheader, never as a query parameter — keeps it out of proxy / CDN logs.If
FB_APP_SECRETis set, every request includesappsecret_proof(HMAC-SHA256 of token with secret). Token replay from another machine fails.Graph error bodies are scrubbed before being returned: occurrences of the token, app secret and
appsecret_proofare replaced with***to prevent leakage via tool output.HTTP mode:
MCP_HTTP_AUTH_TOKENis mandatory, compared with constant-time.MCP_HTTP_ALLOWED_HOSTSenables DNS-rebinding protection.HTTPS in Docker mode handled by Caddy automatically.
Caveats
Insights async jobs not supported. For huge Ads Insights ranges Meta recommends
POST /insights→ pollreport_run_id. This server is GET-only; use shorter ranges or export from Ads Manager.Webhook subscriptions out of scope. MCP is a request/response model; subscribing to realtime updates needs a separate server.
Page-token cache is per-process. Restarting the server clears it. First IG/Page-Insights call after restart triggers one extra
/me/accountsround-trip.
Project layout
meta-mcp/
├── src/
│ ├── index.ts # entry: picks transport, registers tools
│ ├── config.ts # loads .env, validates required vars
│ ├── client.ts # fetch wrapper, rate limiter, paginator, page-token cache
│ ├── http-server.ts # Express + StreamableHTTPServerTransport + bearer auth
│ └── tools/
│ ├── raw.ts # graph_get
│ ├── debug.ts # debug_token
│ ├── pages.ts # Facebook Pages
│ ├── marketing.ts # Ads
│ ├── instagram.ts # Instagram Graph
│ └── whatsapp.ts # WhatsApp Business
├── deploy/
│ ├── Dockerfile
│ ├── docker-compose.yml
│ └── Caddyfile
├── .env.example
├── package.json
└── tsconfig.jsonSmoke test without Claude
stdio:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.jsHTTP:
curl -sS -X POST https://meta-mcp.example.com/mcp \
-H "Authorization: Bearer $MCP_HTTP_AUTH_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}' \
-iLicense
MIT.
Available Tools
30 toolsad_account_getGet one ad accountD
GET /act_{id}.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description only includes an HTTP method, omitting any behavioral traits such as read-only nature, authentication requirements, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is minimal but fails to provide sufficient detail. It is under-specified rather than concise, missing critical information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no behavioral context, the description is severely incomplete. It does not explain what the tool returns, how to use the fields parameter, or any edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%; the description does not explain the meaning or constraints of 'account_id' or 'fields' beyond their names. It adds no semantic value over the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title 'Get one ad account' clearly states the verb and resource. The description adds an HTTP path template but doesn't improve clarity. It is distinguishable from sibling 'ad_accounts_list' which lists accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'ad_accounts_list' or other get tools. No mention of prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ad_accounts_listList ad accounts accessible to the tokenD
GET /me/adaccounts.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits such as being read-only, destructive, or requiring authentication. It simply states the endpoint without any behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise but at the expense of completeness. It is under-specified, providing no useful information beyond the endpoint. Effective conciseness requires conveying essential information succinctly, which is absent here.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters, no output schema, and no annotations, the description is critically incomplete. It lacks any context about the return format, pagination (limit), or field selection behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention the parameters (fields, limit) at all. The schema provides basic types and constraints, but the description adds no semantic meaning to the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'GET /me/adaccounts' is essentially a tautology of the title and name. It restates the HTTP method and path without explicitly stating the function of listing ad accounts. The title provides the purpose, but the description fails to add any value.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus the many sibling tools like ad_account_get, campaigns_list, etc. The description gives no context about prerequisites or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adcreative_getGet one ad creativeD
GET /{creative_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose behavioral traits such as error handling, rate limits, or what happens if the ID is invalid. It only implies a read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but not concise in a helpful way; it lacks essential details and is underspecified for a tool with two parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and no explanation of parameters or return value, the description is completely inadequate for an agent to correctly invoke or interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the parameters ('id' and 'fields'). The agent is left guessing what 'fields' means or what valid values are.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'GET /{creative_id}.' merely states the endpoint, which is a tautology with the title 'Get one ad creative'. It does not explain what an ad creative is or what the tool does beyond an HTTP method.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus siblings like 'adcreatives_list' or 'campaign_get'. It does not specify that it is for a single creative by ID vs listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adcreatives_listList ad creatives under an ad accountD
GET /act_{id}/adcreatives.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ||
| fields | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description minimally indicates it's a GET request (read operation), but does not disclose any behavioral traits such as rate limits, pagination behavior, or data scope. The agent has no insight into side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely brief but not concise in a helpful way; it omits critical information. Every sentence should earn its place, but this single sentence provides minimal value and could be expanded significantly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 5 parameters, no output schema, no annotations, and many sibling tools, the description is severely incomplete. It does not explain return values, pagination, or how it differs from similar list tools, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, meaning no parameter descriptions in the schema. The description adds no information about parameters (e.g., account_id format, fields usage, limit behavior), so it fails to compensate for the lack of schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description is just the endpoint path 'GET /act_{id}/adcreatives.' which barely adds any meaning beyond the title 'List ad creatives under an ad account.' It does not explain what ad creatives are or what listing entails, making it only slightly better than a tautology.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus sibling tools like adsets_list or campaigns_list. There is no mention of prerequisites, context, or exclusions, leaving the agent without decision-making support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
adsets_listList ad setsC
GET /{parent}/adsets. parent.type selects the path: 'account' → /act_{id}/adsets, 'campaign' → /{campaign_id}/adsets.
| Name | Required | Description | Default |
|---|---|---|---|
| parent | Yes | ||
| fields | No | ||
| filtering | No | ||
| effective_status | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must convey behavioral traits, but it only provides the HTTP method and path. No mention of pagination, filtering behavior, error handling, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise but under-specified. It front-loads the URL structure but omits necessary details. Appropriate length for what it contains, but not optimally helpful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, nested objects, no output schema, and no annotations, the description is severely incomplete. An agent would lack critical information to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds no semantics for parameters like fields, filtering, effective_status, limit, auto_paginate, or max_pages. Only the parent parameter is partially explained via URL path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the HTTP method (GET) and resource (adsets) with specific path construction for two parent types. It distinguishes from sibling tools like ads_list, campaigns_list, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool compared to alternatives. The description only explains URL structure without context on selecting parent type or other usage notes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ads_listList adsC
GET /{parent}/ads. parent.type selects the path: 'account' → /act_{id}/ads, 'campaign' → /{campaign_id}/ads, 'adset' → /{adset_id}/ads.
| Name | Required | Description | Default |
|---|---|---|---|
| parent | Yes | ||
| fields | No | ||
| filtering | No | ||
| effective_status | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It only reveals the HTTP method and path construction, but omits behavioral traits like pagination (auto_paginate, max_pages), rate limits, or side effects. Agent cannot infer safety or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Very concise single sentence with a mapping table. Front-loaded with HTTP method and path. However, could include more info without adding much length (e.g., brief parameter hints).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, nested objects, no output schema, and no annotations, the description is insufficient. It does not explain return format, how to handle pagination, or provide examples. Agent would struggle to use this tool effectively without additional documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description should explain parameters beyond parent. It does not describe fields, filtering, effective_status, limit, auto_paginate, or max_pages. While some are self-explanatory, filtering and effective_status need context for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists ads via a GET request and explains how the parent.type parameter selects the API path (account, campaign, adset). This distinguishes it from sibling tools like adsets_list and adcreatives_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs. alternatives. No mention of when to prefer other tools like ad_accounts_list or adsets_list. The description only provides path mapping, not usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
campaign_getGet one campaignD
GET /{campaign_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only gives an HTTP method and endpoint. It does not disclose any behavioral traits such as read-only nature, rate limits, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but under-specified. It is concise at the expense of clarity, lacking essential context and earning its place only as a placeholder.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description should explain return values and behavior, but it provides none. The tool's simplicity is not an excuse for omission.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Both parameters (id and fields) are undocumented in the schema and description. The description adds no meaning about what id represents or how to use the fields parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'GET /{campaign_id}.' is extremely vague and almost a tautology. It does not state what a campaign is or what retrieving it accomplishes, nor does it distinguish from siblings like campaigns_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., when to fetch a single campaign vs listing all campaigns). No prerequisites or usage context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
campaigns_listList campaigns under an ad accountD
GET /act_{id}/campaigns.
| Name | Required | Description | Default |
|---|---|---|---|
| account_id | Yes | ||
| fields | No | ||
| filtering | No | ||
| effective_status | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description lacks any behavioral details such as pagination, filtering support, rate limits, or side effects. The agent is left to guess from parameter names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but at the expense of utility. It is not front-loaded with helpful information and fails to earn its place by providing value beyond the endpoint template.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 7 parameters, no output schema, and no annotations, the description is severely incomplete. Critical details about return values, default behavior, and parameter semantics are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no information about parameters. The agent must rely solely on parameter names and types, which is insufficient for proper invocation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'GET /act_{id}/campaigns' which indicates listing campaigns, matching the tool name and title. However, it is minimal and does not elaborate on the scope or distinguish from sibling tools like 'campaign_get' or 'adsets_list'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Sibling tools exist for related operations, but the description provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
debug_tokenInspect a Meta access tokenA
GET /debug_token — returns token type (USER / PAGE / APP / SYSTEM_USER), app_id, expires_at, scopes, is_valid. If input_token is omitted, inspects the server's configured FB_ACCESS_TOKEN. Requires FB_APP_ID and FB_APP_SECRET to be configured (Meta requires APPID|APPSECRET as the access_token for this endpoint).
| Name | Required | Description | Default |
|---|---|---|---|
| input_token | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers key behavioral traits: the endpoint's authentication method (APPID|APPSECRET as access_token), the effect of omitting input_token, and the return fields. It does not mention read-only nature, but that is implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two effective sentences with no fluff. Information is front-loaded, starting with the HTTP method and endpoint, then listing return fields and special behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description adequately lists the return fields. It covers the core functionality and authentication context. Could mention error handling for invalid tokens, but not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description adds meaning to the parameter 'input_token' by stating it is optional and defaults to the server's configured token. This supplements the empty schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool inspects a Meta access token and lists the returned fields (token type, app_id, expires_at, scopes, is_valid). It distinguishes from sibling tools which focus on ads, pages, Instagram, WhatsApp, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (to inspect a token) and the behavior when input_token is omitted. It also notes the requirement for FB_APP_ID and FB_APP_SECRET. It lacks explicit alternatives or when-not-to-use, but the sibling tools serve different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
graph_getRaw GET to Meta Graph APIA
Escape-hatch: raw GET to any Graph API endpoint. Path must start with '/' and contain only safe characters. If the path starts with /v{X.Y}/ the version is stripped (server uses FB_GRAPH_VERSION). Always GET (read-only). Use only when no specialized tool fits.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| params | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only nature (Always GET), path constraints, and version stripping behavior. No annotations provided, so description carries burden well, though could mention error handling or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with 'Escape-hatch', no wasted words. Each sentence adds meaningful constraint or usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Fairly complete given no output schema and many siblings: it defines purpose, constraints, and usage context. Lacks explicit description of return value but raw GET implies raw response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, so description must compensate. For 'path', it adds syntax and constraints (starting with '/', safe characters, version stripping). For 'params', it only describes it as an object with no further detail, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it is a raw GET to any Graph API endpoint, acting as an escape-hatch. Distinguishes from siblings by specifying it is a fallback when no specialized tool fits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('use only when no specialized tool fits') and provides constraints on path format (must start with '/', safe characters, version stripping). Implicitly indicates not to use if a specialized tool exists.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_business_account_getGet Instagram Business / Creator accountB
GET /{ig_user_id}. Note: ig_user_id is NOT the @username — it's the IG Business Account id obtained via /{page_id}?fields=instagram_business_account. Requires the Page Access Token of the linked Facebook Page (resolved automatically via via_page_id).
| Name | Required | Description | Default |
|---|---|---|---|
| ig_user_id | Yes | ||
| via_page_id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It explains the authentication mechanism and the nature of the id parameter, but does not describe the return data or any side effects, which is a gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, front-loads the endpoint, and adds critical notes without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is incomplete for a tool with no output schema and no annotations. It fails to mention what the response contains, error conditions, or any pagination details, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It explains ig_user_id and via_page_id, but the 'fields' parameter is left undocumented, leaving part of the meaning unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves an Instagram Business/Creator account via GET endpoint, and the note about ig_user_id vs username adds specificity. However, it does not explicitly distinguish from sibling tools like ig_media_get beyond context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the prerequisite of obtaining ig_user_id from a linked Facebook Page and the need for a Page Access Token, but it lacks guidance on when not to use this tool or comparison to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_hashtag_mediaHashtag media — top or recentC
GET /{hashtag_id}/top_media or /{hashtag_id}/recent_media. user_id is required by Meta.
| Name | Required | Description | Default |
|---|---|---|---|
| hashtag_id | Yes | ||
| kind | Yes | ||
| user_id | Yes | ||
| fields | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only implies GET behavior via the endpoint string. It does not disclose pagination behavior (auto_paginate, max_pages), rate limits, or auth details beyond user_id. Minimal transparency for a tool with 7 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one sentence), but it is underspecified rather than efficiently concise. It could include key behavioral details without being much longer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters, 3 required, no output schema, and high complexity (pagination, enum kind), the description is severely incomplete. It lacks any explanation of return values, pagination logic, or the difference between top and recent media.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It only mentions hashtag_id (via the path) and user_id, and indirectly kind ('top_media or recent_media'). It adds no meaning for fields, limit, auto_paginate, or max_pages, leaving 5 of 7 parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'GET /{hashtag_id}/top_media or /{hashtag_id}/recent_media', which clearly identifies the tool as retrieving hashtag media for top or recent categories. It distinguishes from siblings like ig_hashtag_search, but does not explain the difference between top and recent media.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that 'user_id is required by Meta', providing a context-specific requirement. However, it offers no guidance on when to use this tool versus alternatives (e.g., ig_media_list), nor any exclusions or complementary tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_hashtag_searchSearch Instagram hashtag → hashtag_idA
GET /ig_hashtag_search?q=...&user_id=... — returns the hashtag id used by ig_hashtag_media. user_id is your IG Business Account id (not the FB user id).
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| user_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It clarifies the HTTP method (GET) and the user_id distinction, but lacks details on rate limits, error conditions, or scope limitations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no redundancy. Every word adds value: the API endpoint, parameters, purpose, and a critical distinction about user_id.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers purpose, result, and parameter specifics. Minor gaps like pagination or error handling do not significantly detract from completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining 'q' is the search query and 'user_id' is the IG Business Account id, adding meaningful context beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Search Instagram hashtag' and the resource 'hashtag_id', and explicitly distinguishes it from sibling 'ig_hashtag_media' by noting the output is used by that tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by referencing 'ig_hashtag_media' but does not explicitly state when to use this tool vs alternatives, nor provides exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_media_getGet one IG media itemC
GET /{media_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | ||
| via_page_id | Yes | ||
| fields | No | ||
| locale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavioral traits. It only states the HTTP method, implying read-only, but does not mention auth requirements, rate limits, or what happens on error.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but under-specified rather than concise. It lacks necessary detail for a 4-parameter tool, making it incomplete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, no annotations, and no parameter descriptions, the description is completely insufficient. An agent cannot understand input requirements or expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, yet the description does not explain any of the four parameters (media_id, via_page_id, fields, locale). The agent has no guidance on what values to provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The combination of the title 'Get one IG media item' and description 'GET /{media_id}.' clearly indicates the tool retrieves a single media item by ID. However, it does not differentiate from sibling tools like ig_media_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. Sibling tools such as ig_media_list and ig_media_insights exist but are not mentioned or contrasted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_media_insightsInsights for one IG media itemB
GET /{media_id}/insights. Metric set depends on media_type: IMAGE/CAROUSEL_ALBUM: impressions, reach, engagement, saved. VIDEO/REELS: plays, reach, engagement, video_views, saved. STORY: impressions, reach, replies, exits, taps_forward, taps_back.
| Name | Required | Description | Default |
|---|---|---|---|
| media_id | Yes | ||
| via_page_id | Yes | ||
| metric | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that metric set depends on media_type and lists specific metrics per type. However, it omits behavioral details like rate limits, required permissions, error scenarios (e.g., invalid media_id, unsupported media type), or whether results are aggregated or per post.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and front-loaded with the endpoint. Lists metric sets clearly, but could benefit from bullet points for readability. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, description is moderately complete for typical use cases. It explains metric variability but lacks parameter semantics, usage context, and error handling. For a tool with 3 required params and complexity, more detail is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% (no parameter descriptions), so description must compensate. It adds value by listing possible metric values per media type, but does not explain the purpose of media_id, via_page_id, or how to use the metric array (e.g., can request a subset, must match media type). Incomplete guidance for a 3-param tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves insights for an Instagram media item via GET endpoint, and specifies the metric sets for different media types (IMAGE/CAROUSEL_ALBUM, VIDEO/REELS, STORY). This distinguishes it from sibling tools like ig_media_get (metadata) and ig_user_insights (user-level insights).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like ig_user_insights or page_insights. Does not mention prerequisites (e.g., media must belong to a business account, token requirements) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_media_listList IG media (posts) of a Business accountD
GET /{ig_user_id}/media.
| Name | Required | Description | Default |
|---|---|---|---|
| ig_user_id | Yes | ||
| via_page_id | Yes | ||
| fields | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It does not indicate whether the operation is read-only, what the response format is, how pagination works, or any side effects. The existence of auto_paginate and max_pages parameters is not explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but fails to convey necessary information. It is under-specification, not conciseness. The single sentence does not earn its place as it provides no value beyond the endpoint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters (2 required), no output schema, and no annotations, the description is completely inadequate. It does not explain return values, pagination behavior, or any constraints, leaving the agent with no actionable understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to any of the 6 parameters. The description does not mention parameter names or their roles, leaving the agent to infer nothing from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description is merely the endpoint path 'GET /{ig_user_id}/media.' This is a tautology that adds no information beyond the tool name and title. It does not state what the tool does—it lacks a specific verb like 'list' or 'retrieve' and does not clarify that it returns media posts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., ig_media_get for a single media, ig_hashtag_media for hashtag-based search). The description does not mention prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ig_user_insightsAccount-level Instagram insightsB
GET /{ig_user_id}/insights. Period is required. Common metrics: impressions, reach, profile_views, follower_count (day); audience_country, audience_gender_age (lifetime).
| Name | Required | Description | Default |
|---|---|---|---|
| ig_user_id | Yes | ||
| via_page_id | Yes | ||
| metric | Yes | ||
| period | Yes | ||
| since | No | ||
| until | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; the description only mentions period is required and lists metrics, but lacks disclosure of rate limits, pagination, auth needs, or data behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded but too terse; it conveys essentials but lacks depth without being overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description is insufficient; it omits return format, pagination, and request construction details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description should detail each parameter; it only addresses period and metric, leaving via_page_id, since, until unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for GET /{ig_user_id}/insights, lists common metrics, and distinguishes from media-level or generic insights tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for Instagram user insights but does not explicitly state when to use vs alternatives or provide exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insightsAds Insights (sync only)A
GET /{object_id}/insights. Sync only — for huge date ranges Meta recommends async jobs (POST /insights → polling), which this read-only server does not support. object_id can be account (use 'act_{id}' or numeric and we'll prefix), campaign, adset or ad — level must match. Common fields: spend, impressions, clicks, ctr, cpc, cpm, reach, frequency, actions, action_values.
| Name | Required | Description | Default |
|---|---|---|---|
| object_id | Yes | ||
| level | Yes | ||
| fields | No | ||
| date_preset | No | ||
| time_range | No | ||
| time_increment | No | ||
| breakdowns | No | ||
| action_breakdowns | No | ||
| filtering | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It describes the tool as 'read-only' and clarifies it does not support async jobs. It also explains that object_id can be prefixed if numeric. This provides sufficient behavioral context for a read operation. A minor gap is the lack of detail on rate limits or response format, but the core safety profile is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is only 4 sentences, all front-loaded with the most critical information: the HTTP method, sync-only nature, and object_id/level requirements. Every sentence serves a purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, no output schema), the description adequately covers core concepts (object_id, level, common fields, sync limitation) but omits details on many advanced parameters and return value structure. For a Meta Insights API, experienced users may find it sufficient, but novices would need more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 12 parameters with 0% description coverage. The description adds value by explaining object_id (prefix logic), level (must match), and lists common fields (spend, impressions, etc.). However, it does not describe time_increment, breakdowns, filtering, pagination parameters, or other nuanced options. Given the low schema coverage, the description partially compensates but leaves significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is the 'GET /{object_id}/insights' endpoint for retrieving ads insights synchronously. It distinguishes itself from the async alternative by explicitly saying the server does not support async for huge date ranges, thus clarifying its scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: for sync requests and for objects like account, campaign, adset, or ad with a matching level. It also specifies when not to use it (for huge date ranges where async is recommended) and mentions that the read-only server does not support the async flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_getGet one Facebook PageC
GET /{page_id} — page metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ||
| fields | No | ||
| locale | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits like authentication requirements, rate limits, or destructive effects. The minimal description fails to inform the agent about what happens when the tool is invoked.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise at 7 words, but this conciseness comes at the cost of completeness. It is front-loaded with the endpoint, but lacks essential details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 parameters with no descriptions, no output schema, and no annotations, the description is severely incomplete. It does not cover return values, error handling, or usage context, making it inadequate for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the description adds no meaning beyond property names. 'fields' and 'locale' are not explained, leaving their purpose and format unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'GET /{page_id} — page metadata' clearly states the verb (GET) and resource (page metadata), and distinguishes from siblings like 'pages_list' and 'page_posts' by focusing on a single page. However, it does not explicitly differentiate from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance provided on when to use this tool versus alternatives such as 'pages_list' or 'page_insights'. The agent has no context for appropriate selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_insightsPage Insights metricsA
GET /{page_id}/insights. Requires a Page Access Token (resolved automatically). Pass an array of metric names (e.g. [page_impressions, page_fans, page_post_engagements]). Period default is day; pass since/until as YYYY-MM-DD or unix seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ||
| metric | Yes | ||
| period | No | ||
| since | No | ||
| until | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions HTTP method and token requirement, but omits details on response structure, pagination, rate limits, or error handling. For a tool with no annotations, this is somewhat incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with no extraneous words. It front-loads the endpoint and token requirement, then quickly covers key parameters. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description leaves out return value details and error cases. For a 5-parameter tool, it covers input semantics adequately but misses output expectations, which is a gap for the agent to fully understand the tool's usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description compensates by explaining the 'metric' array, 'period' default, and formats for 'since' and 'until'. It adds meaning beyond the schema's property names and types, though 'page_id' is not elaborated beyond the endpoint path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a GET endpoint for page insights, mentioning metric names and period. However, it does not explicitly differentiate from sibling tools like 'insights' or 'ig_user_insights', which serve similar purposes for different contexts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes prerequisites (Page Access Token, automatic resolution) and usage details (metric array, period defaults, date formats). But it does not explicitly state when to use this tool over alternatives, though the name strongly implies Facebook page context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
page_postsList posts on a Facebook PageA
Default edge is published_posts (Page-owned posts paged by created time). Other edges: posts (default Graph posts edge), feed (everything on the wall, including visitor posts), tagged (posts where the page is tagged).
| Name | Required | Description | Default |
|---|---|---|---|
| page_id | Yes | ||
| edge | No | published_posts | |
| fields | No | ||
| since | No | ||
| until | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behaviors. It mentions 'paged by created time' for the default edge, but does not explain pagination behavior (auto_paginate, max_pages), authentication needs, rate limits, or response structure. The transparency is adequate but missing key details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence plus a list of edge options. It is concise and front-loaded with the default edge. However, a bulleted list for edges would improve scannability. Overall, it earns its place without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, no output schema, no annotations), the description is incomplete. It does not cover return format, authorization, pagination behavior, or most parameters. The edge differentiation is useful, but the agent needs more context to use all parameters correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description should explain all parameters. It only covers the 'edge' parameter with enum values. Parameters like page_id, fields, since, until, limit, auto_paginate, and max_pages are not described, leaving the agent to guess their purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists posts on a Facebook Page and distinguishes multiple edge types (published_posts, posts, feed, tagged), each with a brief explanation. This differentiates it from sibling tools like post_get and post_comments.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains each edge option and what content it returns, guiding the agent on when to use which edge for different post types. It lacks explicit prerequisites or when-not-to-use guidance, but the edge descriptions are sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pages_listList Facebook Pages owned/managed by the tokenA
GET /me/accounts — returns pages with id, name and (importantly) access_token for each. Run this first to discover page_id values for other Page tools.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Discloses it's a GET request and returns access_token, a key behavioral detail. Lacks mention of pagination or auth, but sufficient for a simple read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence front-loaded with HTTP method and purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has 2 simple parameters and no output schema; description adequately conveys its role as a discovery tool within a family of Page tools. Could mention pagination but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (no descriptions on parameters). Description does not explain the 'fields' array or 'limit' integer, failing to compensate for missing schema documentation. Only implies output fields but not how to customize.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb (GET/List), resource (Facebook Pages), and outcome (returns id, name, access_token). Distinguishes from siblings by noting it's the first step to discover page_id for other Page tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Run this first to discover page_id values for other Page tools', providing clear when-to-use guidance and establishing it as a prerequisite.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_commentsList comments on a postD
GET /{post_id}/comments.
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | ||
| via_page_id | Yes | ||
| fields | No | ||
| order | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It only implies a read operation via the GET method but lacks details on permissions, rate limits, or pagination behavior. The description is insufficient for a 7-parameter tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short but under-specified. It lacks critical details and is not appropriately concise for a tool with 7 parameters and no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters), absent output schema, and no annotations, the description is severely incomplete. It fails to explain return values, parameter usage, or any context needed for effective tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description does not explain any parameter's meaning, including the required 'post_id' and 'via_page_id' or optional ones like 'fields' and 'order'. The description adds no value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'GET /{post_id}/comments.' minimally states the HTTP method and endpoint, but does not explicitly state that it lists comments on a post. It is a tautology of the name and title without adding new information or differentiating from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage guidelines are provided. The description does not indicate when to use this tool versus alternative comment-related tools or other list tools, leaving the agent without guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_getGet one Facebook PostA
GET /{post_id}. Post id format is usually {page_id}_{post_id}. Use a Page Access Token via via_page_id (extracted from the post id prefix).
| Name | Required | Description | Default |
|---|---|---|---|
| post_id | Yes | ||
| via_page_id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It correctly implies a read operation via GET, but does not disclose idempotency, potential rate limiting, or any security considerations beyond token usage. It is adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. The first sentence states the HTTP method and endpoint, the second explains the ID format and authentication. It is efficient, though could be slightly expanded without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool without output schema, the description covers identification and authentication. However, it omits the optional 'fields' parameter entirely and does not describe the response format. Given the simplicity, it is partially complete but leaves gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has zero descriptions, so the description must compensate. It explains the post_id format (composed of page_id and post_id) and the via_page_id as the token source. The optional 'fields' parameter is not described, but the two required parameters are well explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'GET /{post_id}' and explains the ID format, distinguishing it from sibling tools that handle ads, pages, or other resources. It specifies exactly what resource is retrieved: a single Facebook post.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context on when to use this tool (to get a single post) and explains the post ID format and token requirement. However, it does not explicitly state when not to use it or mention alternatives like page_posts for listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_analyticsWhatsApp Business analyticsC
GET /{waba_id}?fields=analytics.start({start}).end({end}).granularity({granularity}) — messages sent/delivered/read by phone number, by country, etc. start/end are unix timestamps in seconds.
| Name | Required | Description | Default |
|---|---|---|---|
| waba_id | Yes | ||
| start | Yes | ||
| end | Yes | ||
| granularity | Yes | ||
| phone_numbers | No | ||
| country_codes | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full responsibility for behavioral disclosure. It indicates a read-only GET operation but does not mention authentication needs, rate limits, pagination, or whether the request is idempotent. The description provides minimal behavioral context beyond the endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of a single sentence that packs the endpoint, parameters, and data type. No superfluous words. The structure front-loads the key information, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description does not explain the return format or what the analytics data looks like (e.g., a list of objects, aggregated counts). It also omits error handling, potential response sizes, and the behavior of optional parameters. The tool has 6 parameters with 4 required, but the description provides insufficient context for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must add meaning. It explains that start and end are Unix timestamps in seconds, and implies phone_numbers and country_codes are filters ('by phone number, by country'). However, it does not describe waba_id, granularity options (HALF_HOUR, DAY, MONTH), or the effect of these filters. The endpoint format adds some context but leaves significant gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves WhatsApp Business analytics messages sent/delivered/read by phone number, by country, etc., and provides the endpoint format. It specifies the resource ('analytics') and action (GET), distinguishing it from sibling analytics tools that target other platforms (e.g., insights, page_insights). However, it lacks detail on the response structure, which could improve clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidelines are provided for when to use this tool versus alternatives like insights or page_insights. The description does not mention prerequisites, such as requiring a WhatsApp Business Account ID, or note constraints like date range limits. There is no guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_business_owned_wabasList WhatsApp Business Accounts owned by a BusinessB
GET /{business_id}/owned_whatsapp_business_accounts — returns WABAs owned by the parent Business. Find business_id via Business Manager or /me/businesses.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | Yes | ||
| fields | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description bears full burden. It only states it returns WABAs but omits traits like read-only nature, required permissions, error handling, or pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, efficient and front-loaded with the main action. Could be improved by adding parameter descriptions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and 3 parameters, the description lacks essential context: no mention of return format, pagination, field selection, or default limit behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and description only mentions business_id. No explanation for fields array or limit parameter, leaving the agent uninformed about their semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states HTTP GET method, resource path, and that it returns WABAs owned by the parent Business. Distinguishes from siblings like wa_phone_numbers and wa_analytics by focusing on owned accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Hints at finding business_id via Business Manager or /me/businesses, which is helpful. However, no explicit guidance on when to use this vs alternative WhatsApp tools or exclusion conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_message_templatesList WA message templates under a WABAD
GET /{waba_id}/message_templates.
| Name | Required | Description | Default |
|---|---|---|---|
| waba_id | Yes | ||
| fields | No | ||
| limit | No | ||
| auto_paginate | No | ||
| max_pages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, and the description only provides the endpoint. There is no disclosure of error behavior, rate limits, or pagination behavior despite relevant parameters. The description fails to inform the agent about side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, but it is under-specified rather than concise. It provides minimal actionable information and omits essential details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 5 parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain the return format, pagination, or any other behavioral aspects needed for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not mention any parameters or their meanings. The agent must rely solely on parameter names, which is insufficient for correct usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the HTTP method and endpoint, which implies listing message templates under a WABA, but it does not explicitly state the action 'list' or clarify the scope. The title provides better clarity, but the description alone is vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like wa_template_get. The description lacks any context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_phone_number_getGet one WA phone number — quality rating / messaging tierA
GET /{phone_number_id} — includes quality_rating, messaging_limit_tier, name_status, verified_name.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number_id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations. Description specifies returned fields but does not explicitly state read-only nature or any behavioral constraints. Adequate for a simple GET.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise, front-loaded with path and key fields. No wasted words, but could be better structured with parameter explanations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description partially compensates by listing returned fields. Missing details on error handling or optional parameters like 'fields'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. Description only mentions phone_number_id via path, and does not explain parameters like 'fields' array. Fails to add meaning beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb (GET), resource (phone number), and specific returned fields. Title reinforces singular retrieval, distinguishing it from wa_phone_numbers list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when/alternatives guidance, but sibling tool wa_phone_numbers implies this is for single phone number, making usage clear implicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_phone_numbersList phone numbers under a WABAC
GET /{waba_id}/phone_numbers.
| Name | Required | Description | Default |
|---|---|---|---|
| waba_id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the HTTP method (GET). It does not disclose permissions, rate limits, pagination, or any side effects, leaving the agent uninformed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is too short and under-specified. It provides no more value than the endpoint string itself, failing to earn its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no context about return values or pagination, the description is completely inadequate for a listing operation. The agent cannot determine how to handle the response.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the two parameters. The 'fields' parameter is left completely undefined, which may confuse the agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title clearly states 'List phone numbers under a WABA', which indicates the tool's purpose. However, the description only repeats the endpoint without distinguishing it from the sibling tool 'wa_phone_number_get'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'wa_phone_number_get'. The description lacks context for agent decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wa_template_getGet one WA message templateC
GET /{template_id}.
| Name | Required | Description | Default |
|---|---|---|---|
| template_id | Yes | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read operation via 'GET', but no annotations are provided to confirm safety or side effects. No behavioral traits such as authentication requirements, response format, or potential errors are disclosed. The minimal information is insufficient for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely short (one line), but it is under-specified rather than concise. It does not earn its place as it merely restates the tool's purpose without adding value. Considerable context is missing, reducing its effectiveness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of output schema and annotations, the description should provide more context about return values, usage scenarios, and parameter details. It fails to do so, making the tool definition incomplete for safe and correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description only mentions 'template_id' implicitly via the path. The 'fields' parameter is not explained at all. The description adds no meaning to the parameters beyond their names, leaving the agent to guess their purpose and acceptable values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'GET /{template_id}' clearly states the action (GET) and resource (a template by ID). It is not a tautology as it adds the HTTP method, but it does not distinguish from sibling tools like 'wa_message_templates' which likely lists templates. The name and title already convey the purpose, so the description adds minimal additional clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or when not to use it. The description lacks any usage context, leaving the agent without direction on appropriate invocation scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
30 tool updates
v0.1.0- First observed
ad_account_get - First observed
ad_accounts_list - First observed
adcreative_get - First observed
adcreatives_list - First observed
ads_list - First observed
adsets_list - First observed
campaign_get - First observed
campaigns_list - First observed
debug_token - First observed
graph_get - First observed
ig_business_account_get - First observed
ig_hashtag_media - First observed
ig_hashtag_search - First observed
ig_media_get - First observed
ig_media_insights - First observed
ig_media_list - First observed
ig_user_insights - First observed
insights - First observed
page_get - First observed
page_insights - First observed
page_posts - First observed
pages_list - First observed
post_comments - First observed
post_get - First observed
wa_analytics - First observed
wa_business_owned_wabas - First observed
wa_message_templates - First observed
wa_phone_number_get - First observed
wa_phone_numbers - First observed
wa_template_get
TDQS
Every tool has a clearly distinct purpose targeting a specific resource (ad account, campaign, Instagram media, WhatsApp phone number, etc.). Even similar tools like ads_list and adsets_list are distinguished by the parent entity (account, campaign, adset). No ambiguity.
Naming follows a consistent snake_case pattern (resource_verb) for most tools (e.g., ad_account_get, ads_list, campaign_get). A few tools like graph_get and debug_token deviate slightly but are still readable and serve special purposes.
30 tools is on the higher side but justified by the broad scope covering Facebook Ads, Instagram, WhatsApp Business, and Page insights. Each tool addresses a specific read operation, and the count is manageable for such a large API surface.
The tool set is comprehensive for read operations on Meta's Graph API, covering ads, Instagram, WhatsApp, and Pages. However, it lacks write operations (create/update/delete) which are available via graph_get escape hatch only. This is acceptable for a read-only server, but some common workflows (e.g., posting content) are absent.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Hosted Meta ads MCP with OAuth, bounded reads, and prepare/confirm writes.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP Server for the Meta Marketing API. Gives Claude Desktop direct access to your ad account data — campaign performance, creative analysis, audience breakdowns, and budget pacing.103981MIT
- AlicenseBqualityBmaintenanceRead-only MCP server for Meta Ads that lists and reads ad accounts, campaigns, ad sets, ads, ad images, creatives, and fetches insights at various levels.14MIT
- FlicenseAqualityBmaintenanceLocal MCP server for operating Instagram, Meta Ads, and Facebook Page from Claude Code via Meta's Graph API. Provides 20 tools for publishing, campaign management, and insights.20-
- FlicenseAqualityBmaintenanceMCP server for reading Meta Business (Facebook Pages and Instagram) data via Graph API, with cross-account portfolio aggregation to answer questions about follower growth, page insights, and metrics. It runs as a stdio or HTTP server for Claude Desktop.9-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/nourpups/meta-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server