{"_id":"@bossforce.ai/mcp-meta-ads","name":"@bossforce.ai/mcp-meta-ads","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bossforce.ai/mcp-meta-ads","version":"0.1.0","type":"module","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/advertising/meta-ads"},"publishConfig":{"access":"public"},"bin":{"bossforce-mcp-meta-ads":"dist/bin.js"},"dependencies":{"zod":"^4.4.3","@bossforce.ai/mcp-core":"0.3.0"},"devDependencies":{"@bossforce.ai/mcp-testkit":"0.0.0"},"scripts":{"build":"tsc -p tsconfig.json","test":"node --test \"dist/*.test.js\""},"_id":"@bossforce.ai/mcp-meta-ads@0.1.0","description":"BossForce MCP server for **Meta Ads** (Facebook and Instagram advertising) via the Meta Marketing API on the Graph API.","bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","_integrity":"sha512-HLGG3nwBqcF6Pv8vDycsAHU/weT6roKEtJiPkRr08NsrCB2cBEMOs6iIlIzHUjSDnx1FfqqAsXDWIRt1rMhv7Q==","_resolved":"C:\\Users\\user\\AppData\\Local\\Temp\\afab1b6a731d45cda7c62ebf2d198cbe\\bossforce.ai-mcp-meta-ads-0.1.0.tgz","_from":"file:bossforce.ai-mcp-meta-ads-0.1.0.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-HLGG3nwBqcF6Pv8vDycsAHU/weT6roKEtJiPkRr08NsrCB2cBEMOs6iIlIzHUjSDnx1FfqqAsXDWIRt1rMhv7Q==","shasum":"8210a3c05b5e8aecc7c0778b0e79245bc024cc4a","tarball":"https://registry.npmjs.org/@bossforce.ai/mcp-meta-ads/-/mcp-meta-ads-0.1.0.tgz","fileCount":26,"unpackedSize":30286,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCW/rva2sBvKuHWlgpJOR+JdfpquC1bHlfsOyDcvj2BCgIhAMIq1lBzEuvMdWPLvjjV/x/00bvpz+HEB9IHk7gZPrew"}]},"_npmUser":{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"},"directories":{},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-meta-ads_0.1.0_1781069215067_0.07093468080135135"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-10T05:26:54.851Z","0.1.0":"2026-06-10T05:26:55.270Z","modified":"2026-06-10T05:26:55.521Z"},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"description":"BossForce MCP server for **Meta Ads** (Facebook and Instagram advertising) via the Meta Marketing API on the Graph API.","homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/advertising/meta-ads"},"bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"readme":"# @bossforce.ai/mcp-meta-ads\n\nBossForce MCP server for **Meta Ads** (Facebook and Instagram advertising) via the\nMeta Marketing API on the Graph API.\n\nRead-only: discover ad accounts, list campaigns, and pull performance insights\n(impressions, clicks, spend) over a date range.\n\n## Tools\n\n| Tool               | Method | Graph edge                       |\n| ------------------ | ------ | -------------------------------- |\n| `list_ad_accounts` | GET    | `/me/adaccounts`                 |\n| `list_campaigns`   | GET    | `/act_{ad_account_id}/campaigns` |\n| `get_insights`     | GET    | `/act_{ad_account_id}/insights`  |\n\n`ad_account_id` is a tool argument (accepted with or without the `act_` prefix).\n\n## Auth\n\nOAuth2 (`oauth_service: facebook`). The server uses a long-lived Meta **user or\nsystem-user access token** directly as an HTTP Bearer token against\n`https://graph.facebook.com/{version}` (default `v22.0`, override with\n`META_ADS_GRAPH_VERSION`).\n\n| Env                                             | Purpose                                              |\n| ----------------------------------------------- | ---------------------------------------------------- |\n| `META_ADS_CLIENT_ID` / `META_ADS_CLIENT_SECRET` | App credentials (platform `mcp_env`).                |\n| `META_ADS_ACCESS_TOKEN`                         | Long-lived user / system-user access token (Bearer). |\n| `META_ADS_GRAPH_VERSION`                        | Optional Graph API version, e.g. `v22.0`.            |\n\nThe token is read lazily, cached, and re-read once on a `401`.\n\n## Gating (production)\n\nUsing this in production requires:\n\n- A Meta app with the **Marketing API** product.\n- The **`ads_read`** / **`ads_management`** permissions, which must pass **Meta\n  App Review** and **Business Verification**. Before review, these permissions\n  only work for users who have an Admin/Developer/Tester role on the app.\n- A **long-lived (~60 day) user token** or a **System User token** issued in\n  Business Manager, granted access to the target ad accounts. Meta has **no\n  OAuth2 `refresh_token` grant** for these tokens, so the token must be\n  re-issued before it expires — there is no automated server-side refresh.\n\n## Error mapping\n\nHTTP status and Graph error codes map onto the BossForce taxonomy: `190` /\n`401` / `403` / permission codes -> `auth`; `429` and codes `4/17/32/613` (and\n`80000`-series subcodes) -> `rate_limit`; `404` -> `not_found`; `400` / `422`\n-> `validation`; everything else -> `upstream`.\n","readmeFilename":"README.md","_rev":"1-387d261aadad1c6e471a373c1b1b740d"}