{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_ca6jdgfd94bb","handle":"linkedin-ads-mcp-py","url":"https://wellknown.network/agents/linkedin-ads-mcp-py","links":{"self":"https://wellknown.network/agents/linkedin-ads-mcp-py/record.json","html":"https://wellknown.network/agents/linkedin-ads-mcp-py","markdown":"https://wellknown.network/agents/linkedin-ads-mcp-py/record.md","api":"https://wellknown.network/api/v1/agents/linkedin-ads-mcp-py","status":"https://wellknown.network/api/v1/agents/linkedin-ads-mcp-py/status","claim":"https://wellknown.network/agents/linkedin-ads-mcp-py/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/linkedin-ads-mcp-py/claim.json","badge":"https://wellknown.network/agents/linkedin-ads-mcp-py/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/linkedin-ads-mcp-py/history","tools":"https://wellknown.network/api/v1/agents/linkedin-ads-mcp-py/tools"},"ard":{"identifier":"urn:air::server:linkedin-ads-mcp-py","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"linkedin-ads-mcp-py","summary":"LinkedIn Ads MCP server with MCC client-switching support","description":"# linkedin-ads-mcp\n\nMCP server for the LinkedIn Marketing API, with built-in MCC-style client switching across every\nad account your LinkedIn login can access.\n\n## Installation\n\nOnce published to PyPI:\n\n```bash\nuv tool install linkedin-ads-mcp-py\n```\n\nThis installs the `linkedin-ads-mcp` and `linkedin-ads-auth` commands. Or run it directly without\ninstalling:\n\n```bash\nuvx --from linkedin-ads-mcp-py linkedin-ads-mcp\n```\n\nPoint your MCP client (e.g. `.mcp.json` or Claude Desktop's config) at the `linkedin-ads-mcp`\ncommand.\n\n## Setup\n\n1. Create an app at [LinkedIn Developers](https://www.linkedin.com/developers/apps) with access to\n   the **Advertising API** product (requires LinkedIn's approval — see their docs, no published\n   SLA).\n2. Add `http://localhost:3000/callback` (or your own `LINKEDIN_REDIRECT_URI`) to the app's\n   authorized redirect URLs.\n3. Set the following environment variables (e.g. in a `.env` file in your working directory, or\n   directly in your MCP client's server config):\n\n   ```bash\n   LINKEDIN_CLIENT_ID=your_client_id\n   LINKEDIN_CLIENT_SECRET=your_client_secret\n   # Optional overrides:\n   # LINKEDIN_REDIRECT_URI=http://localhost:3000/callback\n   # LINKEDIN_TOKEN_PATH=/path/to/tokens.json\n   ```\n\n4. Authenticate (opens a browser for the LinkedIn OAuth consent screen):\n\n   ```bash\n   uvx --from linkedin-ads-mcp-py linkedin-ads-auth\n   ```\n\n   Tokens are saved to `~/.linkedin-ads-mcp/tokens.json` by default and refreshed automatically\n   when a refresh token is available.\n\n5. Run the server:\n\n   ```bash\n   uvx --from linkedin-ads-mcp-py linkedin-ads-mcp\n   ```\n\n### Headless / remote deployments\n\nHosts that can't open a browser or receive the local OAuth callback (e.g. MCP Anywhere) can't run\n`linkedin-ads-auth` themselves. Instead, run it once locally as above, then read the `refresh_token`\nvalue out of the saved token file (`~/.linkedin-ads-mcp/tokens.json` by default) and set it as\n`LINKEDIN_REFRESH_TOKEN` alongside `LINKEDIN_CLIENT_ID`/`LINKE…","publisher":{"name":"LOCOMOTIVE Agency","url":null},"homepage":null,"repository":null,"version":"0.1.1","license":null,"protocols":["mcp"],"tags":["mcp","ai","tools","linkedin","ads"],"pricing":null,"endpoints":[{"url":"pypi:linkedin-ads-mcp-py","type":"package_pypi","auth":null,"probeable":false}],"skills":null,"tools":null,"extra":null,"attribution":{"kind":"pypi","name":"pypi","summary":"pypi","version":"pypi","description":"pypi","publisherName":"pypi"}},"derived":{"capabilities":[{"slug":"content.social","name":"Social Media","confidence":1,"provenance":"declared"},{"slug":"content.marketing","name":"Marketing","confidence":1,"provenance":"declared"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.814,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":0.745,"provenance":"derived"}],"categories":["content","infra","security"],"language":"en"},"observed":{"status":"unknown","statusReason":"Distributed as a package to run locally; no network endpoint to check.","lastOkAt":null,"lastProbedAt":null,"statusComputedAt":null,"reliability30d":null,"latestObservations":[],"tools":null,"package":{"name":"linkedin-ads-mcp-py","registry":"pypi","observedAt":"2026-10-24T17:29:12.780Z","publishedAt":"2026-09-22T16:29:06.248945Z","latestVersion":"0.1.1"},"toolSurface":null,"endpointFacts":[]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"pypi","key":"linkedin-ads-mcp-py","url":"https://pypi.org/project/linkedin-ads-mcp-py/","firstSeenAt":"2026-09-24T10:27:44.697Z","fetchedAt":"2026-10-24T17:27:53.503Z","normalizedAt":"2026-10-24T17:27:53.503Z"}]},"firstSeenAt":"2026-09-24T10:27:44.697Z","updatedAt":"2026-10-24T17:29:12.780Z"}