Skip to main content
Glama

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

Server Details

PPC advertising on Google Ads, Meta Ads (Facebook Ads), TikTok Ads, LinkedIn Ads, Reddit Ads & more.

Ownership verified
Status
Healthy
Uptime
81.9% over 75 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL
Repository
adkit/ads-mcp
GitHub Stars
18
Server Listing
AdKit

TDQS

A4/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have clear high-level roles: setup for connecting platforms, manage for campaign operations/reporting, studio for AI creative generation, and upload_file for transfers. There is some overlap around account connection and creative handling, but the descriptions mostly disambiguate those boundaries.

Naming Consistency4/5

All tools consistently use the adkit_ prefix and snake_case, making the set predictable. However, names mix noun-like domains (adkit_projects, adkit_status) with verb-like actions (adkit_upload_file, adkit_manage), so it is not a strict verb_noun convention throughout.

Tool Count5/5

Eleven tools is well within the appropriate range for a multi-platform ads manager that also includes project setup, reporting, creative generation, library browsing, and integrations. Each tool has an identifiable place in the workflow.

Completeness4/5

The surface covers onboarding, project setup, platform connection, campaign management/reporting, uploads, creative generation, library research, and integrations. Minor gaps remain, such as explicit delete/archive operations, though raw platform API access provides a workaround.

Available Tools

11 tools
adkit_checkinAInspect

Onboarding only. Records that this agent successfully used AdKit after setup. Intended solely for setup and connection verification, at the user's explicit request.

NameRequiredDescriptionDefault
agentIdNoCanonical agent id for this setup flow, for example "openclaw", "claude-code", or "cursor".

TDQS

A4/5.0
Behavior3/5

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

Annotations already mark readOnlyHint=false and idempotentHint=false, so the writing nature is implied. The description adds the important consent and onboarding context, but it does not disclose what happens on repeated calls or what the tool returns, leaving some behavioral ambiguity.

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

Conciseness5/5

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

Two short sentences with the key constraint front-loaded. Every phrase earns its place and there is no redundancy.

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 lightweight one-parameter tool with no output schema, the description adequately covers purpose, scope, and consent requirements. Minor missing context includes duplicate-call behavior and expected return value, but these are low-risk for an onboarding check-in.

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%, and the single agentId parameter is fully documented by the schema. The tool description adds no parameter-level detail, which is acceptable since the schema already carries the semantics.

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

Purpose5/5

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

States a specific action (records check-in), a specific resource (successful AdKit usage after setup), and a strict scope (onboarding only). This clearly distinguishes it from siblings like adkit_setup or adkit_status.

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?

Provides clear usage context: onboarding, setup and connection verification, and only at the user's explicit request. It also excludes non-onboarding use via 'Onboarding only' and 'solely,' though it does not explicitly name alternative tools.

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

adkit_feedbackAInspect

Report an AdKit bug, confusing behavior, missing capability, or product feedback. Fire-and-forget: it never blocks the user's task.

Fields, filled with whatever is known:

  • intent: what the user was trying to accomplish.

  • error: the exact error text, code, or HTTP status.

  • context: {"toolPath": "adkit_manage meta campaigns create", "platform": "meta", "accountId": "..."}.

Do not include secrets, tokens, request/response bodies, uploaded files, or personal data.

NameRequiredDescriptionDefault
typeNoReport type.
errorNoThe exact error text, code, or HTTP status.
intentNoWhat the user was trying to accomplish.
contextNoOperation context: {"toolPath": "adkit_manage meta campaigns create", "platform": "meta", "accountId": "act_123"}. Include resource IDs relevant to the issue. No secrets or personal data.
messageYesPlain-English feedback or bug report. Required.
severityNoSeverity. Use critical when the agent is blocked or users are likely affected.

TDQS

A4.1/5.0
Behavior4/5

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

The annotations provide basic mutability hints, but the description adds valuable behavioral context: fire-and-forget semantics, that it never blocks the user's task, and a clear privacy boundary excluding secrets, tokens, bodies, uploaded files, and personal data. This goes beyond the structured annotations.

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

Conciseness5/5

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

The description is compact and front-loaded with purpose. The field list is short and earns its place by adding filling guidance rather than just repeating the schema, and the privacy rule is a single necessary sentence. No filler.

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 fire-and-forget feedback tool with no output schema, the description covers what triggers it, what fields to populate, the expected non-blocking behavior, and what to omit. It does not explicitly state what the tool returns, but the fire-and-forget framing makes that less critical.

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 baseline is 3. The description adds practical guidance by saying fields should be filled with whatever is known, giving a concrete context example with toolPath/platform/accountId, and reinforcing the sensitive-data exclusion. This elevates it above the schema-only case.

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 states a specific verb ('Report'), the target resource (AdKit), and enumerates accepted categories (bug, confusing behavior, missing capability, product feedback). It is clear and specific, though it does not explicitly distinguish itself from the sibling tool adkit_help.

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?

The description gives clear context for when to use the tool: to report a bug or feedback, and it calls out the fire-and-forget, non-blocking nature. It does not explicitly name alternatives or state when not to use it, but the conditions are reasonably clear.

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

adkit_helpA
Read-onlyIdempotent
Inspect

Read-only reference documentation for the other AdKit tools: field names, accepted values, and per-platform limits. Sections: "manage" (campaigns, accounts, and reporting across Meta, Google, TikTok, Reddit, X, and LinkedIn, plus Microsoft and ChatGPT Ads raw access and drafts), "integrations" (read-only GA4 data), "library" (browse ads, advertisers, and inspiration boards), and "studio" (AI static ad generation). Open a section with path, for example adkit_help({ path: "manage google campaigns create" }), or search it with q, for example adkit_help({ q: "keyword planner" }). It runs nothing and changes nothing.

NameRequiredDescriptionDefault
qNoKeyword search across every help path (Manage, Google/Meta/TikTok/LinkedIn/Reddit/X/Microsoft, Library, Studio). Returns the top matching command paths, e.g. q: "keyword planner" finds "manage google research keywords". A nonblank q takes precedence over path and detail. Search here before telling the user a capability is unavailable.
pathNoHelp path, for example "manage meta campaigns" or "library advertisers".
detailNoOptional detail level. Use "full" to include advanced params.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false; the description reinforces this with 'It runs nothing and changes nothing,' which is consistent and reassuring. It also discloses the scope of content covered per section, though it says nothing about response format or fallback behavior when a path doesn't resolve.

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?

Front-loads the core definition, then sections, then usage examples – a logical order with no filler. The section enumeration is dense but each item conveys real scope an agent would otherwise have to probe for.

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

Completeness5/5

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

For a three-parameter read-only help tool with a fully described schema and no output schema, this is complete: it tells the agent what content exists, how to reach it, and how to search. Nothing needed to call it correctly is missing.

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 coverage is 100%, so the baseline is 3; the description goes further by showing concrete path and q string formats and by noting that path strings are composed of section/platform/resource (e.g. 'manage google campaigns create'), which helps the agent construct valid input. It does not mention the q-over-path precedence, but that is already documented in the schema.

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

Purpose5/5

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

States a specific verb and resource ('Read-only reference documentation for the other AdKit tools') and enumerates the four content sections, so an agent can distinguish it immediately from the actionable siblings like adkit_manage or adkit_studio.

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

Usage Guidelines5/5

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

Gives explicit invocation patterns: open a section with path (with a concrete example) or search with q (with a concrete example), and adds the directive 'Search here before telling the user a capability is unavailable.' The when-to-use versus siblings is unambiguous.

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

adkit_integrationsA
Read-onlyIdempotent
Inspect

Read connected GA4 reports and Google Search Console websites, organic keywords, and pages. Provider is ga4 or gsc; the field reference is adkit_help({ path: "integrations ga4" }) or adkit_help({ path: "integrations gsc" }).

NameRequiredDescriptionDefault
pageNoOptional exact page URL. GSC get_keywords only.
limitNoResult limit from 1 to 100 (default: 50). GA4 list_properties or any GSC operation.
queryNoOptional property name, account name, or property resource search. Use only with list_properties.
actionYesGA4: list_properties, get_metadata, run_report. GSC: list_sites, get_keywords, get_pages.
deviceNoOptional GSC device filter.
offsetNoZero-based result offset (default: 0). GA4 list_properties or any GSC operation. Use nextOffset for another available page.
reportNoNative GA4 runReport request body (dateRanges, metrics, dimensions, filters, etc.). Required for run_report.
countryNoOptional GSC ISO alpha-3 country filter, e.g. USA.
endDateNoGSC inclusive end date YYYY-MM-DD (Pacific Time). Required for get_keywords/get_pages.
keywordNoOptional exact organic search query. GSC get_pages only.
siteUrlNoGSC property from list_sites: sc-domain:example.com or https://example.com/. Required for get_keywords/get_pages.
propertyNoGA4 property resource from list_properties, e.g. "properties/123456789". Required for get_metadata and run_report.
providerYesData provider: Google Analytics 4 or Google Search Console.
projectIdNoRequired. Get from adkit_projects. Auto-resolves only for single-project users.
startDateNoGSC inclusive start date YYYY-MM-DD (Pacific Time). Required for get_keywords/get_pages.
connectionIdNoOptional connected Google login. Use connectionId from list_properties (GA4) or list_sites (GSC) when several logins are connected.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior, so the safety profile is covered. The description adds that data comes from connected GA4/GSC sources and references help paths, but it does not disclose pagination, rate limits, or return behavior beyond what the schema implies.

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

Conciseness5/5

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

The description is two tightly written sentences with no wasted language. The core read capability is front-loaded, and the provider/help reference follows efficiently.

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

Completeness3/5

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

For a 16-parameter, six-action tool with no output schema, the description is quite thin: it does not outline the available actions or describe return shape. The 100% schema coverage and help references mitigate this, but an agent still relies almost entirely on structured fields to understand the full operation set.

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 all 16 parameters are already documented in the input schema. The description only adds the provider distinction and help pointers, which is baseline-level value when the schema does the heavy lifting.

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 states a specific read operation over GA4 reports and GSC websites, organic keywords, and pages, and identifies the two providers. It does not explicitly differentiate from siblings, but no sibling appears to overlap with this data-integration purpose.

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

Usage Guidelines3/5

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

It tells the agent that the provider is either ga4 or gsc and points to adkit_help for field references, which is useful routing guidance. However, it does not say when to use this tool versus alternatives or when not to use it, so usage is only implied.

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

adkit_libraryA
Destructive
Inspect

Browse 1M+ ads from thousands of advertisers across Meta, Google, and LinkedIn. Keep a per-project watchlist of advertisers and save ads to shareable inspiration boards. For advertiser list/search, params.scope is library (default, all advertisers) or watchlist (the selected project's My Watchlist). Create and fill boards before setting shareEnabled: true through boards update, and only enable sharing when the user explicitly asks. The user's own campaigns live in adkit_manage.

NameRequiredDescriptionDefault
idNoEntity identifier. Required for get, ads analyze, track, untrack, boards get, boards update, and boards add-ads.
actionYeslist, search, get, and similar only read. For ads, analyze queues analysis of one ad by id, with no params. Saved results and active jobs are reused. New jobs use the shared daily analysis allowance (20 Base, 50 Pro). Use ads get to read analysisStatus and the saved creative analysis. Pending/processing means wait before checking again; failed includes analysisError and retry requires a new analyze call. add and track put an advertiser on the selected project's watchlist; untrack takes it off that list and leaves the advertiser and its ads in the library. Boards: create starts an empty board, update edits its name, description, color, or sharing, and add-ads adds library ads to it.
entityYesLibrary entity to query.
paramsNoFree-form request params. Sent as query for GET requests and as body fields for mutations.
projectIdNoRequired. Get from adkit_projects. Auto-resolves only for single-project users.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description adds the important nuance that most browsing is read while mutations are limited to boards and watchlist changes. It adds genuinely new behavioral constraints not in annotations: fill boards before setting shareEnabled:true, and only enable sharing on explicit user request. It does not discuss allowance limits or failure modes, but those are already in the action parameter schema.

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

Conciseness5/5

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

Four sentences, front-loaded with what the library is, then scope semantics, then the sharing safety rule, then the sibling pointer. Each sentence carries distinct information with no restatement of the name or title.

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 carries the burden, and it covers the three entities, the read-vs-write split, and the sharing precondition. Per-action detail (analyze flow, add-ads, untrack semantics) is delegated to the enum description, which is reasonable given the dispatcher shape, but the description alone would not be enough to drive every action.

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 coverage is 100%, so baseline is 3, but params is a free-form object with no documented keys and the description supplies the one key that matters: params.scope with values library (default) and watchlist (the selected project's My Watchlist). That is real meaning the schema cannot convey. It does not enumerate other params keys, keeping it at 4 rather than 5.

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+resource and scale ('Browse 1M+ ads from thousands of advertisers across Meta, Google, and LinkedIn') and names the two subsystems it manages: watchlists and inspiration boards. It distinguishes itself from adkit_manage by stating that the user's own campaigns live there, so an agent can route correctly without opening the schema.

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?

Gives concrete selection rules: params.scope=library vs watchlist for advertiser list/search, and an explicit exclusion ('The user's own campaigns live in adkit_manage'). It also sets an approval gate on sharing. It stops short of telling the agent when to prefer adkit_studio or other library-adjacent siblings, so not a 5.

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

adkit_manageA
Destructive
Inspect

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".

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.

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.

adkit_projectsA
Destructive
Inspect

List, create, or update AdKit projects. Use a projectId returned by list for update and other project-scoped tools. List also returns accessible workspaces.

NameRequiredDescriptionDefault
nameNoProject or business name.
tagsNoBusiness tags for action "create" or "update". Updating replaces the full list.
brandNoBrand colors for action "update".
limitNoMaximum projects to return for action "list". Defaults to 20; max 50.
queryNoOptional project name or website search for action "list".
actionNoDefaults to "list". Use "create" when no project exists. For "update", pass projectId and only the fields to change.
websiteNoProject website URL or domain.
categoryNoBusiness category for action "create" or "update".
industryNoBusiness industry for action "create" or "update".
projectIdNoProject to update. Required when action is "update".
descriptionNoBusiness description for action "create" or "update".
workspaceIdNoOptional workspace for action "create". Choose an ID returned in workspaces; omit for the default workspace.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true, idempotentHint=false, and readOnlyHint=false, so the safety profile is largely covered by structured data. The description adds the useful side-effect that list also returns accessible workspaces, but it never warns that update can overwrite project fields (e.g. tags replacing the full list) despite carrying the destructive hint.

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

Conciseness5/5

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

Three short sentences, front-loaded with the verb+resource, then the identifier workflow, then the list-return detail. No sentence is redundant and nothing is buried.

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?

Given 12 parameters, 100% schema coverage, and no output schema, the description adequately covers how to obtain and use projectId and what list returns. It omits any hint about destructive update behavior or create prerequisites, but the annotations and schema fill most of that gap.

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 baseline is 3, and the description goes beyond it by explaining the projectId lifecycle (obtain via list, then reuse for update and other project-scoped tools). It adds workflow meaning but no additional format or constraint detail for the remaining parameters.

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 states specific verbs and a clear resource ('List, create, or update AdKit projects'), so the agent immediately knows this is the CRUD entry point for projects. It does not explicitly contrast itself with siblings like adkit_manage or adkit_setup, but the resource-level specificity is strong.

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?

It gives real workflow guidance: use a projectId from list for update, note that list returns accessible workspaces, and (in the schema) that action defaults to list and create is for when no project exists. There is no explicit when-not guidance or named alternative sibling, which keeps it short of a 5.

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

adkit_setupA
Read-onlyIdempotent
Inspect

Use when the user wants to connect an ad platform (Meta, Google Ads, ...). Returns the link they open to sign in and pick an ad account. Requires projectId from adkit_projects.

NameRequiredDescriptionDefault
targetNoSetup flow to launch. Currently only "manage" is supported for linking ad platforms.
platformNoOptional platform to deep-link directly into. Omit to get the general manage setup links.
projectIdNoRequired. Get from adkit_projects. Auto-resolves only for single-project users.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotentHint/non-destructive, so the safety profile is covered. The description still adds real behavioral context beyond that: the tool returns a link rather than performing the linking itself, and projectId auto-resolves only for single-project users, which affects invocation.

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

Conciseness5/5

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

Three short sentences with the usage trigger front-loaded, then the return value, then the prerequisite. No filler and nothing buried mid-sentence.

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 zero-required-parameter read-only tool with a 100% covered schema, the description covers trigger, return, and prerequisite adequately even without an output schema. Minor gaps remain around what happens when auto-resolution fails and whether the returned link is time-limited.

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% and the description's parameter notes ('Requires projectId from adkit_projects', 'auto-resolves only for single-project users', platform deep-linking) largely restate what the schema already documents. Baseline 3 is appropriate when the schema carries parameter meaning.

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?

States a specific action (connect an ad platform), the platforms involved, and the concrete return (a sign-in link plus ad-account picker), which is far more useful than a bare name. It does not, however, explain how it differs from the similarly named sibling adkit_integrations, so the agent must still infer the boundary.

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?

Opens with an explicit trigger: 'Use when the user wants to connect an ad platform' — an agent can act on that without guessing. It names no exclusions or alternative tools for overlapping cases, so it stops just short of full routing guidance.

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

adkit_statusA
Read-onlyIdempotent
Inspect

Return project context, connected platforms, assigned ad accounts, and Studio setup. Requires projectId from adkit_projects.

NameRequiredDescriptionDefault
projectIdNoRequired. Get from adkit_projects. Auto-resolves only for single-project users.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, and the description adds what data is returned. However, 'Requires projectId' is slightly overstated because the schema notes the parameter auto-resolves for single-project users, and no edge-case behavior is disclosed. No contradiction with annotations.

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

Conciseness5/5

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

One sentence that front-loads the return contents and immediately states the dependency. No filler or repetition.

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?

The description explains what the tool returns and the input dependency. It lacks an explicit call scenario or output-shape details, but given a single parameter and read-only safe operation, it is nearly complete.

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?

With 100% schema coverage, the description adds no new parameter meaning; it simply repeats that projectId is required and sourced from adkit_projects, which the schema already documents.

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

Purpose5/5

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

The description uses a specific verb ('Return') and a precise resource ('project context, connected platforms, assigned ad accounts, and Studio setup'), which clearly identifies the tool as a status/read-only lookup and distinguishes it from sibling tools like adkit_projects or adkit_setup.

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?

It explicitly states the prerequisite: projectId must come from adkit_projects. This tells the agent which prior tool to call. It does not name alternatives or exclusion cases, so it misses the highest bar, but the usage context is clear enough.

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

adkit_studioA
Destructive
Inspect

AI ad generation workspace. Create ad briefs, generate images (create/clone/resize/edit), list ad media, inspect media items, and share briefs. Use entity "ads" + action "generate" to generate images. Omit id to auto-create an ad, or provide id to add variants to an existing ad.

To use a user's own photo as a clone/edit reference: entity:"media" action:"request_upload_url" → PUT file bytes → pass { type:"temporary_upload", id: } in generate references.

Has no live campaign data, spend, or performance reporting; that data lives in adkit_manage. Studio ads are creative drafts, not launched ads.

NameRequiredDescriptionDefault
idNoAd or media ID. For generate: omit to auto-create an ad, or provide an ad ID to add variants. For media list: provide the ad ID whose media should be returned.
actionYesAds actions: list, get, create, update, delete, generate, share. Media actions: list, get, delete, request_upload_url.
entityYesStudio entity to operate on.
paramsNoRequest params. For generate: mode, aspectRatio, quantity, instructions, audience, model (for example: gpt-image-2), quality (OpenAI: Low/Medium/High; Gemini: 1K/2K/4K), colors, references (array of { type: "media"|"library-ad"|"temporary_upload", id: string }), title. For reads: fields (comma-separated or "all").
projectIdNoRequired. Get from adkit_projects. Auto-resolves only for single-project users.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already signal readOnly=false and destructiveHint=true; the description adds meaningful behavior beyond that: Studio entities are drafts, no live campaign data is exposed, and the temporary-upload workflow requires a PUT before passing the reference. It does not detail side effects of delete/update, but the key conceptual boundary is well disclosed.

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

Conciseness5/5

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

The description is dense but efficiently organized: capability overview, critical action mapping, the upload workflow, and boundary with adkit_manage. Every sentence contributes guidance an agent needs, and no space is wasted restating the tool name or schema.

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 multi-entity, multi-action tool with nested params and no output schema, the description covers the major decision points: which entity/action combos to use, id behavior, the upload sequence, and where live data lives. It does not describe return payloads, but that is a minor gap given the breadth of operations and the strong schema coverage.

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 coverage is 100%, so the baseline is 3, but the description enhances it materially with action-specific id semantics ('omit to auto-create' vs 'provide id to add variants'), the temporary_upload reference shape, and example enum values for model/quality. It leaves a few actions to the schema, but adds real operational meaning beyond the property descriptions.

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

Purpose5/5

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

The description opens with a specific role: 'AI ad generation workspace' and enumerates concrete operations (create briefs, generate images, list media, inspect media items, share briefs). It also distinguishes itself from adkit_manage by explicitly stating Studio ads are creative drafts, so an agent can separate this tool from its siblings.

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

Usage Guidelines5/5

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

It gives explicit routing instructions: use entity 'ads' with action 'generate', omit or provide id depending on variant behavior, and use the media request_upload_url flow for user photos. It also states what the tool does NOT contain (live campaign data/spend/performance) and directs that data to adkit_manage, which is clear when-not guidance.

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

adkit_upload_fileAInspect

Upload one file to Meta, Google, TikTok, LinkedIn, X, ChatGPT Ads, or Studio from files, a public HTTPS URL, or a completed temporary upload. X and ChatGPT Ads currently support images. Use files when the client supports file inputs. Otherwise, use source for a public URL or completed temporary upload. Base64 payloads are not accepted. Report upload failures with adkit_feedback.

NameRequiredDescriptionDefault
filesNoSelect one file using the client instructions for this input. The client supplies download_url and file_id to AdKit. Do not invent these values. Use source if the client cannot pass files.
actionYesUse "upload" with files or source. Use "request_upload_url" when neither a client file input nor a public URL is available. Send the bytes to the returned upload URL before using its uploadId.
sourceNoOne public URL or completed temporary upload. Do not use together with files.
filenameNoFilename for request_upload_url.
accountIdNoAd account for Meta, Google, TikTok, LinkedIn, X, or ChatGPT Ads. May be omitted when AdKit can resolve one account.
projectIdNoRequired. Get from adkit_projects. Auto-resolves only for single-project users.
sizeBytesNoOptional exact file size for request_upload_url.
contentTypeNoMIME type for request_upload_url, for example image/png or video/mp4.
destinationNoRequired for upload. The platform or Studio library that should receive the file.

TDQS

A4.7/5.0
Behavior4/5

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

The annotations already disclose that this is a non-read-only, open-world, non-idempotent, non-destructive operation. The description adds useful behavioral constraints beyond the annotations: exactly one file, no base64 payloads, platform-specific image support, and the request_upload_url byte-upload workflow.

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

Conciseness5/5

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

The description is front-loaded with the core action and then efficiently covers source selection, platform limitations, and failure reporting. Every sentence provides actionable guidance with no repetition of schema text.

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

Completeness5/5

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

For a nine-parameter tool with nested objects and no output schema, the description covers the key workflow: destination platforms, accepted sources, the temporary upload fallback, the base64 restriction, and failure reporting. The schema supplies the remaining parameter detail.

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 schema carries most parameter documentation. The description still adds meaningful semantics by clarifying the exclusive files-vs-source choice, when request_upload_url applies, and that base64 payloads are rejected.

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

Purpose5/5

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

The description states a specific verb and resource: upload one file to named ad platforms or Studio. It distinguishes supported source modes and platform-specific image limitations, so an agent can identify exactly what the tool does without opening the schema.

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

Usage Guidelines5/5

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

It explicitly says to use files when the client supports file inputs, otherwise use source for a public HTTPS URL or completed temporary upload, and reserves request_upload_url for when neither is available. It also names a sibling tool, adkit_feedback, for reporting failures.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedadkit_manage2 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. 1 tool update
    • Changedadkit_upload_file3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Use \"upload\" when the file is already attached, at a public URL, or in a completed temporary upload. Use \"request_upload_url\" only when the client cannot pass the file."New value: +"Use \"upload\" with files or source. Use \"request_upload_url\" when neither a client file input nor a public URL is available. Send the bytes to the returned upload URL before using its uploadId."
      • changedInput schema / properties / files / description
        Previous value: -"File supplied automatically by a host that supports MCP attachments. Never construct this field."New value: +"Select one file using the client instructions for this input. The client supplies download_url and file_id to AdKit. Do not invent these values. Use source if the client cannot pass files."
      • changedInput schema / properties / source / description
        Previous value: -"One public URL or completed temporary upload. Do not use when the host supplied a file."New value: +"One public URL or completed temporary upload. Do not use together with files."
  3. 1 tool update
    • Changedadkit_library3 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"list, search, get, and similar only read. add and track put an advertiser on the selected project's watchlist; untrack takes it off that list and leaves the advertiser and its ads in the library. Boards: create starts an empty board, update edits its name, description, color, or sharing, and add-ads adds library ads to it."New value: +"list, search, get, and similar only read. For ads, analyze queues analysis of one ad by id, with no params. Saved results and active jobs are reused. New jobs use the shared daily analysis allowance (20 Base, 50 Pro). Use ads get to read analysisStatus and the saved creative analysis. Pending/processing means wait before checking again; failed includes analysisError and retry requires a new analyze call. add and track put an advertiser on the selected project's watchlist; untrack takes it off that list and leaves the advertiser and its ads in the library. Boards: create starts an empty board, update edits its name, description, color, or sharing, and add-ads adds library ads to it."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list",
        -  "search",
        -  "get",
        -  "similar",
        -  "add",
        -  "track",
        -  "untrack",
        -  "create",
        -  "update",
        -  "add-ads"
        -]New value: +[
        +  "list",
        +  "search",
        +  "get",
        +  "similar",
        +  "add",
        +  "track",
        +  "untrack",
        +  "create",
        +  "update",
        +  "add-ads",
        +  "analyze"
        +]
      • changedInput schema / properties / id / description
        Previous value: -"Entity identifier. Required for get, track, untrack, boards get, boards update, and boards add-ads."New value: +"Entity identifier. Required for get, ads analyze, track, untrack, boards get, boards update, and boards add-ads."
  4. 1 tool update
    • Changedadkit_manage1 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."
  5. 1 tool update
    • Changedadkit_manage3 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"
        +]
  6. 1 tool update
    • Changedadkit_integrations14 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"List accessible properties, discover property-specific custom fields and key events, or run a read-only GA4 report."New value: +"GA4: list_properties, get_metadata, run_report. GSC: list_sites, get_keywords, get_pages."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list_properties",
        -  "get_metadata",
        -  "run_report"
        -]New value: +[
        +  "list_properties",
        +  "get_metadata",
        +  "run_report",
        +  "list_sites",
        +  "get_keywords",
        +  "get_pages"
        +]
      • changedInput schema / properties / connectionId / description
        Previous value: -"Optional connected GA4 login. Use the connectionId returned by list_properties when more than one login is connected."New value: +"Optional connected Google login. Use connectionId from list_properties (GA4) or list_sites (GSC) when several logins are connected."
      • addedInput schema / properties / country
        Added value: +{
        +  "description": "Optional GSC ISO alpha-3 country filter, e.g. USA.",
        +  "type": "string"
        +}
      • addedInput schema / properties / device
        Added value: +{
        +  "description": "Optional GSC device filter.",
        +  "enum": [
        +    "desktop",
        +    "mobile",
        +    "tablet"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / endDate
        Added value: +{
        +  "description": "GSC inclusive end date YYYY-MM-DD (Pacific Time). Required for get_keywords/get_pages.",
        +  "type": "string"
        +}
      • addedInput schema / properties / keyword
        Added value: +{
        +  "description": "Optional exact organic search query. GSC get_pages only.",
        +  "type": "string"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Optional property result limit from 1 to 100. Use only with list_properties; defaults to 50."New value: +"Result limit from 1 to 100 (default: 50). GA4 list_properties or any GSC operation."
      • changedInput schema / properties / offset / description
        Previous value: -"Optional zero-based property result offset. Use only with list_properties; defaults to 0."New value: +"Zero-based result offset (default: 0). GA4 list_properties or any GSC operation. Use nextOffset for another available page."
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "Optional exact page URL. GSC get_keywords only.",
        +  "type": "string"
        +}
      • changedInput schema / properties / provider / description
        Previous value: -"Data provider. Currently Google Analytics 4."New value: +"Data provider: Google Analytics 4 or Google Search Console."
      • changedInput schema / properties / provider / enum
        Previous value: -[
        -  "ga4"
        -]New value: +[
        +  "ga4",
        +  "gsc"
        +]
      • addedInput schema / properties / siteUrl
        Added value: +{
        +  "description": "GSC property from list_sites: sc-domain:example.com or https://example.com/. Required for get_keywords/get_pages.",
        +  "type": "string"
        +}
      • addedInput schema / properties / startDate
        Added value: +{
        +  "description": "GSC inclusive start date YYYY-MM-DD (Pacific Time). Required for get_keywords/get_pages.",
        +  "type": "string"
        +}
  7. 1 tool update
    • Changedadkit_library1 field changed
      • changedInput schema / properties / action / description
        Previous value: -"Library action to execute. For advertisers, track/untrack changes the selected project watchlist. For boards, list/get reads the selected project, create/update changes board metadata, and add-ads saves selected library ads."New value: +"list, search, get, and similar only read. add and track put an advertiser on the selected project's watchlist; untrack takes it off that list and leaves the advertiser and its ads in the library. Boards: create starts an empty board, update edits its name, description, color, or sharing, and add-ads adds library ads to it."
  8. 1 tool update
    • Changedadkit_integrations6 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"List accessible properties or run a read-only GA4 report."New value: +"List accessible properties, discover property-specific custom fields and key events, or run a read-only GA4 report."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list_properties",
        -  "run_report"
        -]New value: +[
        +  "list_properties",
        +  "get_metadata",
        +  "run_report"
        +]
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "Optional property result limit from 1 to 100. Use only with list_properties; defaults to 50.",
        +  "type": "number"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Optional zero-based property result offset. Use only with list_properties; defaults to 0.",
        +  "type": "number"
        +}
      • changedInput schema / properties / property / description
        Previous value: -"GA4 property resource from list_properties, e.g. \"properties/123456789\". Required for run_report."New value: +"GA4 property resource from list_properties, e.g. \"properties/123456789\". Required for get_metadata and run_report."
      • addedInput schema / properties / query
        Added value: +{
        +  "description": "Optional property name, account name, or property resource search. Use only with list_properties.",
        +  "type": "string"
        +}
  9. 1 tool update
    • Changedadkit_upload_file2 fields changed
      • changedInput schema / properties / accountId / description
        Previous value: -"Ad account for Meta, Google, TikTok, LinkedIn, or X. May be omitted when AdKit can resolve one account."New value: +"Ad account for Meta, Google, TikTok, LinkedIn, X, or ChatGPT Ads. May be omitted when AdKit can resolve one account."
      • changedInput schema / properties / destination / enum
        Previous value: -[
        -  "meta",
        -  "google",
        -  "tiktok",
        -  "linkedin",
        -  "x",
        -  "studio"
        -]New value: +[
        +  "meta",
        +  "google",
        +  "tiktok",
        +  "linkedin",
        +  "x",
        +  "chatgpt",
        +  "studio"
        +]
  10. 1 tool update
    • Addedadkit_integrations
  11. 3 tool updates
    • Changedadkit_library2 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Library action to execute. For advertisers, track/untrack changes the selected project watchlist. For boards, create/update changes board metadata and add-ads saves selected library ads."New value: +"Library action to execute. For advertisers, track/untrack changes the selected project watchlist. For boards, list/get reads the selected project, create/update changes board metadata, and add-ads saves selected library ads."
      • changedInput schema / properties / id / description
        Previous value: -"Entity identifier. Required for get, track, untrack, boards update, and boards add-ads."New value: +"Entity identifier. Required for get, track, untrack, boards get, boards update, and boards add-ads."
    • Changedadkit_manage2 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"
        +]
    • Changedadkit_setup1 field changed
      • changedInput schema / properties / platform / enum
        Previous value: -[
        -  "meta",
        -  "google",
        -  "tiktok",
        -  "reddit",
        -  "x",
        -  "linkedin",
        -  "microsoft"
        -]New value: +[
        +  "meta",
        +  "google",
        +  "tiktok",
        +  "reddit",
        +  "x",
        +  "linkedin",
        +  "microsoft",
        +  "chatgpt"
        +]
  12. 1 tool update
    • Changedadkit_library4 fields changed
      • changedInput schema / properties / action / description
        Previous value: -"Library action to execute. For advertisers, track/untrack adds/removes an existing advertiser from the selected project watchlist; add requires a website or ad library URL and tracks the advertiser. For a name, search first, then track its ID."New value: +"Library action to execute. For advertisers, track/untrack changes the selected project watchlist. For boards, create/update changes board metadata and add-ads saves selected library ads."
      • changedInput schema / properties / action / enum
        Previous value: -[
        -  "list",
        -  "search",
        -  "get",
        -  "similar",
        -  "add",
        -  "track",
        -  "untrack"
        -]New value: +[
        +  "list",
        +  "search",
        +  "get",
        +  "similar",
        +  "add",
        +  "track",
        +  "untrack",
        +  "create",
        +  "update",
        +  "add-ads"
        +]
      • changedInput schema / properties / entity / enum
        Previous value: -[
        -  "advertisers",
        -  "ads"
        -]New value: +[
        +  "advertisers",
        +  "ads",
        +  "boards"
        +]
      • changedInput schema / properties / id / description
        Previous value: -"Entity identifier. Required for get, track, and untrack; track/untrack change watchlist membership for the selected project only."New value: +"Entity identifier. Required for get, track, untrack, boards update, and boards add-ads."
  13. 10 tool updates
    • First observedadkit_checkin
    • First observedadkit_feedback
    • First observedadkit_help
    • First observedadkit_library
    • First observedadkit_manage
    • First observedadkit_projects
    • First observedadkit_setup
    • First observedadkit_status
    • First observedadkit_studio
    • First observedadkit_upload_file

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Enables direct management of Google Ads and Meta Ads campaigns, keywords, ads, and ad review status through the official APIs, without third-party quotas or intermediaries.
    13
    37 npm
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for managing Google Ads, Meta Ads, LinkedIn Ads, and TikTok Ads via AI. 210+ tools including account audits, wasted spend detection, and PMax insights.
    2
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    Connects Google Ads, Meta Ads, and LinkedIn Ads to AI assistants, enabling natural language ad campaign management, reporting, and optimization across platforms.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.