{"_id":"@bossforce.ai/mcp-linkedin-ads","name":"@bossforce.ai/mcp-linkedin-ads","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@bossforce.ai/mcp-linkedin-ads","version":"0.1.0","type":"module","repository":{"type":"git","url":"git+https://github.com/bossforce-ai/bossforce-tools.git","directory":"mcps/advertising/linkedin-ads"},"publishConfig":{"access":"public"},"bin":{"bossforce-mcp-linkedin-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-linkedin-ads@0.1.0","description":"MCP server for the **LinkedIn Marketing API** (Advertising API). Read-only reporting over a Campaign Manager account: list ad accounts and campaigns, and pull performance analytics (impressions, clicks, spend). Calls the versioned `/rest` APIs with `Linke","bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"homepage":"https://github.com/bossforce-ai/bossforce-tools#readme","_integrity":"sha512-+8qH6VodOCxbsGb49YbrYRqMtJ3Xx+aGyIeoV6XNWaUvWMXeY6kcj5HBanPanM+va61LRex6ii6qtQv0T5jCGA==","_resolved":"C:\\Users\\user\\AppData\\Local\\Temp\\e05e9cdd06b0628d7916be169991952d\\bossforce.ai-mcp-linkedin-ads-0.1.0.tgz","_from":"file:bossforce.ai-mcp-linkedin-ads-0.1.0.tgz","_nodeVersion":"22.18.0","_npmVersion":"10.9.3","dist":{"integrity":"sha512-+8qH6VodOCxbsGb49YbrYRqMtJ3Xx+aGyIeoV6XNWaUvWMXeY6kcj5HBanPanM+va61LRex6ii6qtQv0T5jCGA==","shasum":"9480ca5aab3bc2b2e37c1a3e71883a1c5b0459aa","tarball":"https://registry.npmjs.org/@bossforce.ai/mcp-linkedin-ads/-/mcp-linkedin-ads-0.1.0.tgz","fileCount":26,"unpackedSize":38419,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHqNRQZbh3ZZKIOo0AeS3Ia+A5q74NTN05ft57Ywy7ZwAiEA6EmIg2MuTFVcXFBEDXNar059VfXyS/Ur1tnwg8aOVRg="}]},"_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-linkedin-ads_0.1.0_1781069212373_0.6861294766199431"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-10T05:26:52.187Z","0.1.0":"2026-06-10T05:26:52.529Z","modified":"2026-06-10T05:26:52.740Z"},"maintainers":[{"name":"bossforce.ai","email":"bossforce.ai@gmail.com"}],"description":"MCP server for the **LinkedIn Marketing API** (Advertising API). Read-only reporting over a Campaign Manager account: list ad accounts and campaigns, and pull performance analytics (impressions, clicks, spend). Calls the versioned `/rest` APIs with `Linke","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/linkedin-ads"},"bugs":{"url":"https://github.com/bossforce-ai/bossforce-tools/issues"},"readme":"# @bossforce.ai/mcp-linkedin-ads\n\nMCP server for the **LinkedIn Marketing API** (Advertising API). Read-only\nreporting over a Campaign Manager account: list ad accounts and campaigns, and\npull performance analytics (impressions, clicks, spend). Calls the versioned\n`/rest` APIs with `LinkedIn-Version` and `X-Restli-Protocol-Version: 2.0.0`.\n\n## Credentials\n\nOAuth2 (refresh-token grant). The platform performs the LinkedIn authorization\nand supplies the refresh token; the server exchanges it for short-lived access\ntokens itself and refreshes once on a `401`.\n\n| Env                          | Role                |\n| ---------------------------- | ------------------- |\n| `LINKEDIN_ADS_CLIENT_ID`     | OAuth client id     |\n| `LINKEDIN_ADS_CLIENT_SECRET` | OAuth client secret |\n| `LINKEDIN_ADS_REFRESH_TOKEN` | OAuth refresh token |\n\nScopes: `r_ads` (read ad accounts) and `r_ads_reporting` (reporting). These are\n3-legged (member-consent) scopes; the 2-legged client-credentials flow is not\navailable for marketing use cases. The credentials are read lazily, so the\nserver boots and answers `tools/list` without them; calls fail with an `auth`\nerror until they are set.\n\n### Gating (production access)\n\nUsing this server in production requires access to the **LinkedIn Marketing\nDeveloper Platform**:\n\n1. Create a developer app at [linkedin.com/developers](https://www.linkedin.com/developers/apps).\n2. Request the **Advertising API** product on the app.\n3. Pass LinkedIn's app review/approval to leave the Development Tier.\n\nUntil approved, the app is restricted to the Development Tier (up to 5 ad\naccounts configured on the app). The authenticated member must also hold an ad\naccount role (e.g. `VIEWER` or above) on each account.\n\n## Tools\n\n| Tool               | Arguments                                                                                                                | Returns                                  |\n| ------------------ | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------- |\n| `list_ad_accounts` | `status?`, `type?`, `test?`, `page_size?`, `page_token?`                                                                 | `{ elements, metadata }` of ad accounts  |\n| `list_campaigns`   | `account_id`, `status?`, `test?`, `page_size?`, `page_token?`                                                            | `{ elements, metadata }` of campaigns    |\n| `get_analytics`    | `pivot`, `time_granularity`, `date_range_start`, `date_range_end?`, one of `accounts`/`campaigns`/`creatives`, `fields?` | `{ elements, paging }` of analytics rows |\n\n`get_analytics` requires exactly one of `accounts`, `campaigns` or `creatives`\n(numeric ids — the tool builds the `urn:li:sponsored*` URNs). Pass `fields` to\nrequest specific metrics; otherwise only `impressions` and `clicks` are returned.\n\n## Develop\n\n```bash\npnpm --filter @bossforce.ai/mcp-linkedin-ads build\npnpm --filter @bossforce.ai/mcp-linkedin-ads test\n```\n\nRegenerate the tools/list snapshot after an intentional signature change:\n\n```bash\nUPDATE_SNAPSHOTS=1 pnpm --filter @bossforce.ai/mcp-linkedin-ads test\n```\n","readmeFilename":"README.md","_rev":"1-e7d61a07126b08c169ad5e314265cfef"}