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
75.5% over 55 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL
Repository
adkit/ads-mcp
GitHub Stars
14
Server Listing
AdKit

TDQS

A4/5.0

Scored across 11 tools

Disambiguation4/5

Most tools target distinct areas (projects, setup, status, library, studio, integrations) and their descriptions explicitly cross-reference one another. However, adkit_upload_file overlaps with the media upload flows described inside adkit_manage and adkit_studio, and adkit_checkin/adkit_setup/adkit_status all touch setup or connection state, creating minor confusion.

Naming Consistency5/5

All tools use a consistent adkit_ snake_case prefix with predictable noun or verb labels. No camelCase or mixed styles appear, making the names easy to parse and remember.

Tool Count4/5

11 tools fit a multi-platform ads manager and stay within the expected 3-15 range. The set includes several auxiliary/meta tools (checkin, feedback, help) alongside one broad adkit_manage tool, which is slightly heavy on auxiliary surface but still reasonable.

Completeness4/5

Core domains are covered: projects, setup, connection status, campaign management/reporting across major platforms, media upload, creative generation, and integrations. Minor gaps exist around explicit delete operations and some platform-specific workflows, but raw API access and help discovery mitigate them.

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.

ParametersJSON Schema
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.

ParametersJSON Schema
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

Discover the AdKit MCP contract with progressive drill-down. Top-level paths: "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). Start with adkit_help() for the root overview, or drill down like adkit_help({ path: "manage google campaigns create" }). A keyword search with q, e.g. adkit_help({ q: "keyword planner" }) → "manage google research keywords", covers the full command catalog: a capability missing from one drill-down path may still exist under another.

ParametersJSON Schema
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.7/5.0
Behavior4/5

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

Annotations already establish read-only, idempotent, non-destructive behavior, and the description adds navigational behavior: progressive drill-down, q-based keyword search across the full catalog, and cross-path fallback semantics. It does not contradict the annotations, though it could describe the return/response format more explicitly.

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 well-organized sentences carry the full contract: the first establishes the catalog categories, the second gives concrete invocation patterns and search behavior. It is dense but front-loaded and free of filler.

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 help tool with no required parameters and rich annotations, the description covers root invocation, drill-down paths, keyword search, and precedence semantics, with examples. The lack of an output schema is not a gap because the return is clearly help content.

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?

Input schema covers 100% of the parameters, so the baseline is 3; the description adds value with worked examples for path and q and clarifies that q searches the entire command catalog. This extends the schema documentation meaningfully without redundancy.

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?

Clearly identifies this as the AdKit help/discovery tool with a specific verb ('discover') and resource (the AdKit MCP contract). The top-level path categories distinguish it from sibling operation tools and make its scope concrete with examples.

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?

Provides explicit when-to-use guidance: start with adkit_help() for the root overview, drill down via path, or use q for keyword search. The directive to search before telling a user a capability is unavailable, plus the note that a capability may exist under another path, is strong usage guidance.

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. For actions and fields, call adkit_help with path "integrations ga4" or "integrations gsc".

ParametersJSON Schema
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.6/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and openWorld, so the safety profile is covered. The description adds that this is read-oriented and points to help for actions, but doesn't describe auth requirements, rate limits, or pagination behavior beyond what schema offsets imply.

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 sentences, front-loaded with the read purpose, followed by a concrete help pointer. No wasted words and easy to scan.

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 16 parameters, 100% schema coverage, and rich annotations, the description covers the broad purpose and defers detail to adkit_help. It is nearly complete for a router-style tool, though it omits any mention of the required projectId and its dependency on adkit_projects.

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 every parameter is already documented in the schema, including action enums, provider enums, and per-action requirements. The description adds nothing about parameter semantics beyond the schema, making baseline 3 appropriate.

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 verb ('Read') and concrete resources (GA4 reports, GSC websites, organic keywords, pages). It distinguishes the resource domain from siblings like adkit_projects, though it doesn't explicitly name which sibling to use for other integrations actions.

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?

Says to call adkit_help with specific paths for 'actions and fields,' implying this tool covers reads. However, it doesn't state when to use this tool versus alternatives, nor when NOT to use it, leaving routing largely implicit.

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

adkit_libraryAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoEntity identifier. Required for get, track, untrack, boards get, boards update, and boards add-ads.
actionYeslist, 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.
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.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false, destructiveHint=false, idempotentHint=false, and openWorldHint=true, so the safety profile is partly covered. The description adds genuine behavioral context beyond the annotations: the sharing action is gated on explicit user intent, and create/add-ads have ordered prerequisites. It does not discuss rate limits or return shape, but the added sharing constraint is meaningful.

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?

Purpose is front-loaded in the first sentence, followed by capability, scope semantics, and a safety caveat. It is dense but every sentence carries distinct information; the middle sentences are somewhat packed but not wasteful.

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 a free-form params object and no output schema, the description covers the main entity/action split, the boards workflow, and the sibling boundary. Remaining gaps (e.g., search vs list distinction, similar) are minor since the schema's action enum documents those.

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%, giving a baseline of 3, and the description exceeds that by explaining params.scope values (library vs watchlist) that the free-form params object (additionalProperties: true) leaves undefined. That is real meaning beyond the schema, though it covers only one of the nested params.

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 ('Browse 1M+ ads from thousands of advertisers across Meta, Google, and LinkedIn') and layers on the watchlist and boards capabilities. It explicitly names the sibling boundary by pointing to adkit_manage for the user's own campaigns, so an agent can distinguish this library-browsing tool from management tools without opening schemas.

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 when-to-use rules: params.scope library vs watchlist, and the sequencing rule 'Create and fill boards before setting shareEnabled: true through boards update.' It also states an exclusion ('only enable sharing when the user explicitly asks') and routes own campaigns to adkit_manage.

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

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

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.

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.

ParametersJSON Schema
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_setup
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.

ParametersJSON Schema
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.
adkit_statusA
Read-onlyIdempotent
Inspect

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

ParametersJSON Schema
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.

ParametersJSON Schema
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

Beta. Upload one file to Meta, Google, TikTok, LinkedIn, X, ChatGPT Ads, or Studio from a host-provided attachment, public HTTPS URL, or completed temporary upload. X and ChatGPT Ads currently support images. When no attachment or public URL exists, a requested upload URL fills the same role. Base64 payloads and local file paths are not accepted. Report upload failures with adkit_feedback.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNoFile supplied automatically by a host that supports MCP attachments. Never construct this field.
actionYesUse "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.
sourceNoOne public URL or completed temporary upload. Do not use when the host supplied a file.
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.1/5.0
Behavior4/5

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

Annotations already declare openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds valuable non-obvious constraints: beta status, which source types are accepted, that base64 and local paths are rejected, and that X and ChatGPT Ads are image-only. It stops short of describing success output or rate limits.

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-loaded with the beta flag and core action, then constraints, then failure routing. Dense and largely waste-free, though the middle sentence about upload URLs is slightly convoluted.

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 9-parameter mutation tool with nested objects and no output schema, the description covers sources, platform restrictions, rejection cases, and failure handling. It omits what a successful call returns (e.g., file id) and any permission requirements, which are minor gaps.

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 every parameter is already documented in the schema, including the action semantics and the source object. The description restates the accepted source forms but adds no syntax or format detail beyond what the schema provides, so the baseline of 3 applies.

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 ('Upload one file') plus the full set of destinations, so an agent can immediately distinguish this from adkit_library, adkit_studio, or adkit_manage. The scope constraint ('one file') is explicit.

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?

Clearly explains the two action modes ('upload' when the file is attached/URL/temporary upload; 'request_upload_url' only when the client cannot pass the file) and the fallback when no attachment or URL exists. It also routes failures to adkit_feedback, but gives no explicit guidance on when NOT to use this tool versus siblings.

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_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."
  2. 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"
        +]
  3. 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"
        +}
  4. 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."
  5. 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"
        +}
  6. 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"
        +]
  7. 1 tool update
    • Addedadkit_integrations
  8. 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"
        +]
  9. 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."
  10. 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
    C
    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
    39 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.