The path of one request
- You sign in at https://adsmcp.si.
- You connect an ad account on Connections. That OAuth grant is stored for the tenant.
- The client connects to
https://mcp.adsmcp.si/mcp. - The client either completes hosted OAuth or sends
Authorization: Bearer YOUR_API_TOKEN. - The client lists tools, then calls one by name.
- A read runs and returns. A spend-affecting write becomes a Pending Action.
- You approve it in Ad Ops.
- The execution queue runs that approved payload. If the body changed after approval, it stops.
- The MCP service calls the ad platform. The chat client does not.
Hosted OAuth
Clients that speak MCP OAuth discover the server fromhttps://mcp.adsmcp.si/.well-known/oauth-protected-resource. That document names the resource https://mcp.adsmcp.si/mcp and the authorization server on the same host.
The authorization server advertises:
- Authorization code and refresh token grants.
- PKCE with
S256. A code withoutcode_challenge, or with another method, is rejected. - A public client. The token endpoint does not require a client secret.
- Dynamic client registration.
What the client is allowed to see
Tool discovery returns the catalog for that server, including whether a tool is a read or a write. Arguments such as account and campaign ids are strings. The client does not receive a long-lived ad platform token to reuse elsewhere. Quota is checked on the hosted service.get_usage_status reports the row. A failed quota check blocks spend-affecting writes.