MCP server for the Microsoft Advertising (Bing Ads) REST API, oriented toward agent-led campaign management and reporting.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"microsoft-ads-mcp","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# microsoft-ads-mcp [](https://github.com/shinypebble/microsoft-ads-mcp/actions/workflows/ci.yml) An MCP server for the **Microsoft Advertising (Bing Ads) REST API**, built for agent-led campaign management and reporting. It exposes a focused set of *useful-work* tools — walk the campaign tree, create **and edit in place** (rename, repoint Final URLs, tracking templates, status, bids), manage negative keywords, ad extensions, conversion goals/UET tags, and ZIP location targeting, run the Bulk API, and pull performance reports that are actually downloaded and parsed for you — rather than a 1:1 mirror of the API surface. Built with [FastMCP](https://gofastmcp.com) and the official Microsoft [`msads`](https://pypi.org/project/msads/) REST SDK (which ships OpenAPI-generated **Pydantic v2** models). Managed with `uv`, linted/formatted with `ruff`, type-checked with `ty`. ## Why REST / `msads` (not the legacy SOAP `bingads` SDK) Microsoft is retiring the SOAP API: **new features are REST-only from Oct 1, 2026**, and SOAP is **fully deprecated on Jan 31, 2027** ([migration guide](https://learn.microsoft.com/en-us/advertising/guides/migrate-to-rest?view=bingads-13)). The REST SDK `msads` gives typed Pydantic models, structured HTTP exceptions, and the same OAuth/`ServiceClient` entry points — so this server is built on it directly. ### SDK quirks worth knowing - **`msads` is synchronous** (requests/urllib3). Tools here are therefore plain sync functions; FastMCP runs them in a worker thread, so the event loop is never blocked. We do not wrap the SDK in async. - **`msads` does not declare its `python-dateutil` dependency**, even though `openapi_client` imports it. We pin `python-dateutil` explicitly in `pyproject.toml`. - The package installs as the `bingads.*` (auth + `ServiceClient`) and `openapi_client.*` (models + exceptions) import namespaces — there is no top-level…
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.