Skip to main content
Glama

Ads Manager by AdKit: Google Ads, Meta Ads, TikTok Ads, LinkedIn Ads

adkit_manage

Destructive

Manage AND report on Meta, Google, TikTok, Reddit, X, LinkedIn, Microsoft, and ChatGPT Ads.

Reporting & analytics — campaign performance, results, spend, ROAS, impressions, clicks, conversions, CPC/CPA: use entity:"results" (Google also supports action:"placements" and "search-terms"). For advertiser benchmarks, use entity:"benchmarks", a platform, and params.from:"YYYY-MM"; omit to for one month and omit action (Meta, Google, TikTok and LinkedIn). Answers "how are my ads doing" / "what's my spend" / "show campaign performance".

Management — connect project accounts and create, edit, or publish supported ad resources. ChatGPT Ads supports normalized account assignment; its advertiser operations use entity:"platform-api-request".

Coverage differs per platform — the exact entities, actions, and params for each platform are documented under adkit_help({ path: "manage " }).

Most mutations create drafts by default; publish:true sends changes live and requires explicit user approval. Use AdKit field names in params (not raw platform fields); pass full request bodies as top-level data. Use platformOverrides for raw fields on supported resources. Unsupported native platform resources and workflows are reachable via the raw platform API: entity:"platform-api-request" action:"mutate" (project opt-in); adkit_feedback is the channel for reporting these AdKit gaps. File uploads: entity:"media" action:"request_upload_url" → PUT the bytes → reference the returned uploadId. For creatives/variants/images inside an ad set, use entity:"ads".

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoOptional entity identifier for single-item actions like get, update, disconnect, pages, pixels, and similar routes. Do not use this for drafts publish/delete; those require ids[].
idsNoDraft batch identifier list. Required for entity: "drafts" with action: "publish" or "delete", even for a single draft. Each array item must be exactly one draft ID. Good: ["id1","id2"]. Bad: ["id1,id2"].
dataNoTop-level AdKit request body merged over params for mutation requests after request shaping.
actionNoRequired except for benchmarks reports, which take no action. Actions and entity-specific requirements are documented in adkit_help.
entityYesEntity name. Common: campaigns, adsets, ads, accounts, media, research, results, benchmarks, drafts, platform-api-request. Platform-specific entities are listed under adkit_help({ path: "manage <platform>" }).
paramsNoFree-form request params. GET requests send params as query. Mutations send params as body fields by default, but some Google mutations route IDs like accountId/adGroupId/campaignId into query when the REST route expects them there. Batch/full AdKit bodies belong in top-level data.
publishNoOptional publish flag for create flows that support immediate execution.
platformNoAd platform for the requested entity and action.
accountIdNoAd account to act on for the selected platform. Auto-resolved when the project has exactly one account on that platform; REQUIRED when multiple are connected. Get available ids from adkit_status or the platform accounts entity.
projectIdNoRequired. Get from adkit_projects. Auto-resolves only for single-project users.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / action / description
      Previous value: -"Required except for benchmarks, which takes no action. Action: list, get, create, update, delete. Entity-specific actions are listed under adkit_help({ path: \"manage <platform>\" })."New value: +"Required except for benchmarks reports, which take no action. Actions and entity-specific requirements are documented in adkit_help."
  2. Changed3 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Action: list, get, create, update, delete. Entity-specific actions are listed under adkit_help({ path: \"manage <platform>\" })."New value: +"Required except for benchmarks, which takes no action. Action: list, get, create, update, delete. Entity-specific actions are listed under adkit_help({ path: \"manage <platform>\" })."
    • changedInput schema / properties / entity / description
      Previous value: -"Entity name. Common: campaigns, adsets, ads, accounts, media, research, results, drafts, platform-api-request. Platform-specific entities are listed under adkit_help({ path: \"manage <platform>\" })."New value: +"Entity name. Common: campaigns, adsets, ads, accounts, media, research, results, benchmarks, drafts, platform-api-request. Platform-specific entities are listed under adkit_help({ path: \"manage <platform>\" })."
    • changedInput schema / required
      Previous value: -[
      -  "entity",
      -  "action"
      -]New value: +[
      +  "entity"
      +]
  3. Changed2 schema fields changed
    • changedInput schema / properties / accountId / description
      Previous value: -"Ad account to act on: Meta act_ id, Google customerId, TikTok advertiserId, Reddit ad account id, or X ad account id. Auto-resolved when the project has exactly one account on that platform; REQUIRED when multiple are connected. Get the available ids from adkit_status."New value: +"Ad account to act on for the selected platform. Auto-resolved when the project has exactly one account on that platform; REQUIRED when multiple are connected. Get available ids from adkit_status or the platform accounts entity."
    • changedInput schema / properties / platform / enum
      Previous value: -[
      -  "meta",
      -  "google",
      -  "tiktok",
      -  "reddit",
      -  "x",
      -  "linkedin",
      -  "microsoft"
      -]New value: +[
      +  "meta",
      +  "google",
      +  "tiktok",
      +  "reddit",
      +  "x",
      +  "linkedin",
      +  "microsoft",
      +  "chatgpt"
      +]
  4. First observed

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=false and destructive=true, so mutation risk is signposted; the description adds genuinely new behavior: "Most mutations create drafts by default; publish:true sends changes live and requires explicit user approval," plus project opt-in for the raw platform API. This draft-vs-live distinction is not derivable from the annotations and is the key safety context. Auth/permission scope and rate limits are not covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the headline capability and organized under em-dash section headers, which helps scanning. However it is long and dense, with several clauses (per-platform coverage, platformOverrides, media uploads, ChatGPT normalization) that add bulk to a single description and partly restate schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must stand alone, and for a high-complexity multi-platform tool it covers routing, draft/publish semantics, field-naming rules, raw-API fallback, and file-upload flow while deferring per-platform specifics to adkit_help. Return-value shape and pagination behavior are not described, though the help-tool deferral mitigates this.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all ten parameters, making 3 the baseline. The description adds routing meaning for entity values and clarifies that full bodies go in top-level data and AdKit field names must be used, but it does not explain params/platformOverrides semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb pair (manage AND report) and the resource (ads across eight named platforms), then splits into reporting vs management modes. It names siblings it delegates to (adkit_help for docs, adkit_feedback for gaps), so the agent can route without opening schemas. It is a broad catch-all tool, so its boundary against every other manage-capable sibling is not fully drawn.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing is given for the main branches: entity:"results" for performance/spend/ROAS, entity:"benchmarks" for advertiser benchmarks with the from/for omission rules, entity:"platform-api-request" for unsupported native resources, entity:"media" for uploads, entity:"ads" for creatives. It does not explicitly say when NOT to use this tool (e.g. vs adkit_upload_file, which overlaps with the media upload flow).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.