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 reference for each platform's entities, actions, and field names is 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

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.
actionNoAction to run on the entity, for example list, get, create, update, delete, or publish. Not needed for benchmarks reports. The per-entity reference is adkit_help({ path: "manage <platform> <entity>" }).
entityYesEntity name. Common: campaigns, adsets, ads, accounts, media, research, results, benchmarks, drafts, platform-api-request. The per-platform reference is 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. Changed2 schema fields changed
    • changedInput schema / properties / action / description
      Previous value: -"Required except for benchmarks reports, which take no action. Actions and entity-specific requirements are documented in adkit_help."New value: +"Action to run on the entity, for example list, get, create, update, delete, or publish. Not needed for benchmarks reports. The per-entity reference is adkit_help({ path: \"manage <platform> <entity>\" })."
    • changedInput schema / properties / entity / description
      Previous 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>\" })."New value: +"Entity name. Common: campaigns, adsets, ads, accounts, media, research, results, benchmarks, drafts, platform-api-request. The per-platform reference is adkit_help({ path: \"manage <platform>\" })."
  2. 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."
  3. 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"
      +]
  4. 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"
      +]
  5. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true/openWorldHint=true, and the description adds genuinely new behavioral context: most mutations create drafts by default, publish:true goes live and needs explicit user approval, and platform-api-request requires project opt-in. That approval-and-draft gating is exactly the safety nuance annotations cannot express. It does not describe rate limits or partial-failure behavior, keeping it off a 5.

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

Conciseness4/5

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

The text is dense but front-loaded, leading with the two-mode split before the routing details, and each sentence carries operational information (entity routing, draft/publish semantics, data vs params). The list of metrics (spend, ROAS, impressions, clicks, conversions, CPC/CPA) is slightly padded but still helps an agent map natural-language questions to the right entity.

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?

For a 10-parameter, nested-object mega-tool with no output schema, the description covers the essential routing (reporting vs mutation vs escape hatch), draft/publish behavior, request-shaping rules, and the media upload flow. It leaves per-platform entity and field detail to adkit_help deliberately, which is reasonable for a router tool, though an agent still has to make a second call to act confidently.

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

Parameters4/5

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

Schema description coverage is 100%, so the 3 baseline is met by the schema alone, but the description adds real meaning: use AdKit field names rather than raw platform fields, send full request bodies as top-level data, and use platformOverrides for raw fields. It also clarifies the publish flag's live-send consequence, which the schema only weakly conveys.

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?

The description opens with a specific verb+resource scope (manage and report across eight named ad platforms) and then splits into two clearly-labeled modes: 'Reporting & analytics' and 'Management'. An agent can tell which branch applies. It stops short of the top mark because it does not distinguish this mega-tool from siblings like adkit_studio and adkit_library, which also appear to touch campaign content.

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?

Usage routing is unusually explicit: entity:"results" for performance, entity:"benchmarks" with params.from:"YYYY-MM" for benchmarks, entity:"platform-api-request" for unsupported native resources, entity:"media" action:"request_upload_url" for files, entity:"ads" for creatives, and adkit_feedback for gaps. The only gap is that it never states when a caller should prefer adkit_studio/adkit_library/adkit_help instead of this tool.

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.