{"_id":"@advertising-chat/mcp-manage","name":"@advertising-chat/mcp-manage","dist-tags":{"latest":"0.2.1"},"versions":{"0.2.1":{"name":"@advertising-chat/mcp-manage","version":"0.2.1","description":"Management MCP server for Advertising.chat — operate ad units, line items, creatives, campaigns, and performance queries from any MCP-capable agent with your own account","license":"MIT","author":{"name":"Advertising.chat"},"homepage":"https://docs.advertising.chat/","repository":{"type":"git","url":"git+https://github.com/advertising-chat/adkit.git","directory":"packages/mcp-manage"},"keywords":["mcp","model-context-protocol","advertising","ads","management","llm"],"main":"bin/index.js","types":"bin/index.d.ts","bin":{"adchat-mcp-manage":"bin/cli.js"},"scripts":{"build":"tsc -p .","clean":"rm -rf ./bin","prepack":"npm run clean && npm run build","test":"mocha"},"engines":{"node":">=18"},"dependencies":{"@modelcontextprotocol/sdk":"^1.29.0","ajv":"^8.17.1","ajv-formats":"^3.0.1","zod":"^4.0.0"},"_id":"@advertising-chat/mcp-manage@0.2.1","gitHead":"b2fd51fa84823a3ac6767e0c50d60d6986048486","bugs":{"url":"https://github.com/advertising-chat/adkit/issues"},"_nodeVersion":"22.13.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-lD1zA5eJ+oIjJZw4j41tSldJ2JtlaXonjGN9BXNswAHPSGbjoDrtrRsSn+nJP8O8zD042WrjpiZSzQofpWtfJw==","shasum":"16566ea4bb06ecb30763ca7aca8744396b97e1fa","tarball":"https://registry.npmjs.org/@advertising-chat/mcp-manage/-/mcp-manage-0.2.1.tgz","fileCount":29,"unpackedSize":157936,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIEbRONq5XdxJRjJYADZRcYfpFr+IERw/7H9pRS7EfEUjAiEAhSAXYPeVK6CEJPnHW4y2gnWVOibC7Rdo2MGnkj9+sq0="}]},"_npmUser":{"name":"myk","email":"myk@mykwillis.com"},"directories":{},"maintainers":[{"name":"myk","email":"myk@mykwillis.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-manage_0.2.1_1783137062784_0.12418145027285199"},"_hasShrinkwrap":false}},"time":{"created":"2026-07-04T03:51:02.629Z","0.2.1":"2026-07-04T03:51:02.928Z","modified":"2026-07-04T03:51:03.158Z"},"maintainers":[{"name":"myk","email":"myk@mykwillis.com"}],"description":"Management MCP server for Advertising.chat — operate ad units, line items, creatives, campaigns, and performance queries from any MCP-capable agent with your own account","homepage":"https://docs.advertising.chat/","keywords":["mcp","model-context-protocol","advertising","ads","management","llm"],"repository":{"type":"git","url":"git+https://github.com/advertising-chat/adkit.git","directory":"packages/mcp-manage"},"author":{"name":"Advertising.chat"},"bugs":{"url":"https://github.com/advertising-chat/adkit/issues"},"license":"MIT","readme":"# @advertising-chat/mcp-manage\n\nOperate your Advertising.chat account from Claude Desktop, Claude Code, or\nany MCP-capable agent host — with your own account and permissions.\n\n`mcp-manage` is a local MCP (Model Context Protocol) server that projects\nthe Advertising.chat management API as ~39 tools: ad units, line items,\ncreatives (including flow creatives), campaigns, ad groups, API keys, and\nreal-time performance queries. Every call runs with **your** token and\n**your** role — the server can't do anything you couldn't do with curl.\n\n## Quick start\n\n1. Authenticate once with the Advertising.chat CLI:\n\n   ```bash\n   npx ads-cli login   # or: ads login, if you have ads-cli installed\n   ```\n\n   `mcp-manage` picks up (and auto-refreshes) the cached token at\n   `~/.ads-cli`. Alternatively set `ADCHAT_TOKEN` to an access token.\n\n2. Add the server to your MCP host. Claude Desktop\n   (`claude_desktop_config.json`):\n\n   ```json\n   {\n     \"mcpServers\": {\n       \"advertising-chat-manage\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"@advertising-chat/mcp-manage\"]\n       }\n     }\n   }\n   ```\n\n   Claude Code:\n\n   ```bash\n   claude mcp add advertising-chat-manage -- npx -y @advertising-chat/mcp-manage\n   ```\n\n3. Ask your agent things like *\"how many impressions did we serve\n   yesterday?\"* or *\"create a disabled line item for the homepage ad unit\n   with the summer-sale creative.\"*\n\n## Configuration\n\n| Env var | Meaning |\n|---|---|\n| `ADCHAT_TOKEN` | Explicit access token (overrides the `~/.ads-cli` cache). |\n| `ADCHAT_ORG` | Target org id. Default: your own org, resolved from your identity. |\n| `ADCHAT_SYSTEM_REQUEST` | `true` to send `X-Adchat-System-Request` (sysops only; requires `ADCHAT_ORG`). |\n| `ADCHAT_MANAGE_BASE_URL` | Management API base URL override (default `https://api.advertising.chat/system`). |\n\n## Safety model\n\n- **Your authority, nothing more.** Requests carry your Auth0 token and\n  target org; org membership and role checks happen server-side exactly as\n  they do for the console. A viewer role can read everything and mutate\n  nothing.\n- **Created disabled.** Ad units, line items, campaigns, and ad groups are\n  created with `enabled: false` unless you explicitly ask to launch.\n- **Deletes need confirmation.** Destructive tools refuse to run without an\n  explicit `confirm: true` argument, and MCP hosts additionally prompt on\n  non-read-only tools.\n- **Attributed.** Every request is tagged `X-Adchat-Agent: mcp-manage` for\n  audit.\n- The server never logs your token. Installing third-party MCP servers\n  alongside this one is your host's trust decision.\n\n## Embedding the tool layer\n\nThe tool definitions and handlers are importable without the stdio server —\nthe Advertising.chat console copilot consumes the same table server-side:\n\n```ts\nimport {\n  tools,            // definitions: name, description, zod schema, annotations\n  createHandlers,   // bind handlers to an HTTP client\n  createHttpClient,\n  validateFlowPayload,\n} from '@advertising-chat/mcp-manage';\n\nconst http = createHttpClient({ getToken, org });\nconst handlers = createHandlers(http);\nawait handlers.list_ad_units({ limit: 10 });\n```\n\n## Docs\n\nFull tool catalog and walkthrough:\n<https://docs.advertising.chat/adkit/manage-mcp/>\n","readmeFilename":"README.md","_rev":"1-21156fbd7677eb8029a2efed9efab6cd"}