Skip to main content
Glama

Opus Growth, Ad Platforms MCP Connector

Server Details

Run Google, Meta, Microsoft, TikTok and LinkedIn Ads from Claude or ChatGPT. Writes need approval.

Ownership verified
Status
Healthy
Uptime
30.2% over 39 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
opusgrowth/Opus-Growth-The-MCP-Connector-for-Ad-Platforms
GitHub Stars
0
Server Listing
Opus Growth MCP Connector

TDQS

A4.4/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have clearly distinct jobs: reporting, entity listing, account lookup, write gateway, discovery, and support. Minor overlap exists between search and list_accounts (both can surface accounts) and between describe and search_tools (both help discover capabilities), but the detailed descriptions make misselection unlikely.

Naming Consistency4/5

Names are consistently lowercase snake_case and mostly follow a verb_noun pattern: list_accounts, list_entities, list_servers, get_report, provide_contact_details, report_issue, search_tools. The bare-verb names describe, fetch, and search are the main deviations, but the overall style remains predictable and readable.

Tool Count5/5

12 tools is well within the ideal 3–15 range for a multi-platform connector. The visible set is lean: unified report/list tools, two read/write gateways, a discovery tool, and support/admin helpers, avoiding per-platform tool proliferation while still covering a broad domain.

Completeness5/5

The call_tool and call_write_tool gateways combined with search_tools provide access to the full tool catalog, so reporting, listing, CRUD, and hosting/WordPress edits all have a reachable path. provide_contact_details is an intentional unlock gate for writes, not a missing capability, and no obvious dead ends remain.

Available Tools

12 tools
call_toolRun a Read ToolA
Read-only
Inspect

Run a READ-ONLY Opus tool by name — the gateway to every reporting/listing capability that is not in your visible core set. Use search_tools(query) FIRST to get the exact name and its argument schema, then call it here. name = exact tool name; arguments = that tool's parameters as an object. Reads data from the advertising and analytics APIs the user has connected (Google Ads, Microsoft Advertising, Meta, TikTok, LinkedIn, Search Console, GA4, YouTube, Tag Manager, Google Business Profile) plus Opus Growth's own SEO/hosting data. This gateway NEVER writes: if the tool you name modifies data it is refused and you are told to use call_write_tool. Arguments are validated against the tool's schema server-side; on a mismatch you get a precise error telling you what to fix. Credits and access rules behave exactly as calling the tool directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
argumentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint, openWorldHint, destructiveHint), the description explains concrete behaviors: the gateway NEVER writes, write attempts are refused with a directive to use call_write_tool, arguments are validated server-side and produce precise errors, and credits/access rules match direct invocation. This meaningfully extends the annotation-only profile without contradiction.

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 purposeful, front-loading the core purpose and read-only guarantee before the usage workflow. Every sentence contributes useful information, such as the discovery prerequisite, validation behavior, and write-refusal routing. No filler or redundancy.

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 gateway tool with dynamic targets, the description is complete: it explains how to discover target tools, what data domains are reachable, how writes are blocked, how errors are surfaced, and how credits behave. The presence of an output schema means return-value details are not required here.

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

Parameters5/5

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

Schema coverage is 0%, so the description carries the full burden for parameter meaning. It explicitly defines both parameters: 'name = exact tool name' and 'arguments = that tool's parameters as an object.' It also explains that arguments are validated against the target tool's schema, compensating well for the absence of schema 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 clearly states the tool's purpose: 'Run a READ-ONLY Opus tool by name — the gateway to every reporting/listing capability that is not in your visible core set.' It specifies a verb, a resource, and a scope, and distinguishes itself from the sibling call_write_tool by emphasizing read-only behavior.

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?

The description gives explicit guidance: use search_tools(query) FIRST to discover the exact tool name and schema, then call this gateway. It also states when not to use it — if the named tool modifies data, it is refused and call_write_tool should be used instead. This clearly routes the agent between alternatives.

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

call_write_toolRun a Write ToolA
Destructive
Inspect

Run a WRITING Opus tool by name (create / update / pause / remove) — the gateway to every write capability that is not in your visible core set. Use search_tools(query) FIRST to get the exact name and its argument schema, then call it here. name = exact tool name; arguments = that tool's parameters as an object. Writes go to the advertising platform APIs the user has connected (Google Ads, Microsoft Advertising, Meta, TikTok, LinkedIn) and to Opus Growth's own hosting/WordPress services. Read-only tools are refused here — use call_tool for those. The tool's own preview-and-confirm gate still applies: tools that change a live account return a PREVIEW with confirm=false and only apply with confirm=true. Credits and access rules behave exactly as calling the tool directly.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
argumentsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

The description goes beyond the annotations by disclosing the destinations (advertising platform APIs and Opus Growth's hosting/WordPress), the preview-and-confirm gate, and the credit/access behavior. It confirms the destructiveHint by framing this as the write gateway, and clearly states read-only calls are rejected.

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 longer than average but every sentence carries essential routing or behavior information, and it is front-loaded with the purpose and core workflow. There is no filler or repeated schema content.

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 generic write dispatcher with a low-coverage schema, the description covers the prerequisite lookup, parameter meaning, target systems, read-only exclusion, confirmation gate, and access rules. Nothing needed for correct invocation is missing, and the presence of an output schema means return details do not need to be re-explained.

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?

The input schema alone only shows generic `name` and `arguments` fields with no descriptions; the description compensates by defining `name` as the exact tool name from search_tools and `arguments` as that tool's parameter object. It also tells the agent where to discover the parameter schema, which is the only viable guidance for a dynamic dispatcher.

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 names a specific operation ('Run a WRITING Opus tool by name') and enumerates the write categories it covers, so an agent immediately knows this is the generic write dispatcher. It also separates itself from siblings by stating that read-only tools are refused and belong on call_tool, and that search_tools should provide the exact name.

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 an explicit before-use workflow: call search_tools(query) first to get the exact name and argument schema, then invoke this tool. It also states the exclusion condition ('Read-only tools are refused here') and names call_tool as the alternative.

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

describeDescribe Platform CapabilitiesA
Read-only
Inspect

Explains what the unified read tools can do: with no argument it lists every platform get_report / list_entities support; with a platform it returns that platform's account-id field, the row levels and the breakdown dimensions it accepts, plus the entity types list_entities can list. Call this whenever you are unsure which level/breakdown/entity name to pass. Read-only, costs nothing.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint, and the description adds 'Read-only, costs nothing' plus a detailed account of the two behaviors (no argument vs. platform). It does not contradict annotations and provides useful operational context beyond the structured fields.

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 dense sentences, front-loaded with purpose, then behavior, then when-to-use. Every clause adds value; no filler or redundant restating of the schema.

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 one-optional-parameter introspection tool with an output schema, the description fully covers what happens with and without the parameter, what the return contains, and when to call it. Nothing essential 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 has one optional 'platform' with no description (0% coverage), so the description carries the burden. It clearly explains that omitting platform lists every supported platform, while passing platform returns platform-specific fields like account-id, row levels, breakdown dimensions, and entity types.

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?

Description uses a specific verb ('Explains') and names the exact resource: the unified read tools' capabilities. It distinguishes two modes (no argument vs. platform) and mentions the specific functions it introspects (get_report / list_entities), making it clearly different from sibling tools like get_report or list_entities.

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 an explicit call condition: 'Call this whenever you are unsure which level/breakdown/entity name to pass.' This directly tells an agent when to invoke describe instead of guessing parameters or trying sibling tools.

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

fetchGet Account DetailsA
Read-only
Inspect

Expands a search result (id = 'platform:account_id') into details: account name, id, and fields like currency/status (OpenAI/ChatGPT connector fetch contract). Read-only. Returns: {id, title, text, url, metadata}.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and destructiveHint, and the description adds value by explaining the tool expands a search result, the expected id format, and the return shape. This goes beyond the annotations, clarifying behavior without contradicting them.

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 description is a single, information-dense sentence that front-loads the purpose and includes the output shape. It is concise and well-structured, though splitting into separate sentences for input and output might improve readability slightly.

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 that an output schema exists (as indicated by context signals), the description does not need to detail return values, but it does provide a preview. It covers the input format, purpose, and read-only nature. It does not discuss error cases or prerequisites, but these are not critical for a simple fetch operation.

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 0%, but the description compensates by explaining the `id` parameter must be a 'platform:account_id' from a search result. This provides essential semantic meaning that the schema lacks.

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 ('Expands'), a clear resource (a search result id into account details), and lists the fields returned (account name, id, currency/status). It also specifies the exact input format ('platform:account_id') and output structure, making the tool's purpose unmistakable.

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?

The description implies the tool is used after a `search` call, but it does not explicitly mention when NOT to use it or compare with sibling tools like list_accounts or get_report. It gives context (read-only, expands search result) but lacks explicit routing guidance.

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

get_reportUnified Performance ReportA
Read-only
Inspect

ONE report tool for EVERY connected platform — use this for any "how did X perform" question instead of hunting for a platform-specific report tool. platform: google_ads | meta (facebook/instagram) | tiktok | linkedin | microsoft | ga4 | search_console | youtube | business_profile. account = that platform's account id (Google Ads customer_id, Meta account_id, GA4 property, Search Console site url, Business Profile location…); leave empty to use the connected/default one. days = lookback window (or give start_date/end_date as YYYY-MM-DD). level = row granularity for ad platforms (campaign | ad_group/adset | ad). breakdown = split rows by a dimension (device, day, country, age, gender, publisher_platform… for GA4/Search Console this is the dimension: channel, source, page, query…). Call describe(platform) to see exactly which levels and breakdowns that platform supports. For search_console the breakdown also takes a COMBINATION and a SORT: 'page,query' answers which page ranks for which term, and 'query by impressions' sorts by impressions instead of clicks — Search Console itself only ever returns rows by clicks, so high-impression low-click terms are invisible without it. Returns the platform's metric rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
levelNo
limitNo
accountNo
end_dateNo
platformYes
breakdownNo
start_dateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral detail beyond annotations: the unified multi-platform scope, default account behavior when left empty, and the subtle Search Console behavior that rows are only ever returned by clicks unless a sort is specified. This meaningfully exceeds what annotations alone provide.

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 description is long but dense flame every sentence adds parametrical or behavioral value, and the primary purpose is front-loaded in the first sentence. The run-on semicolon style makes it slightly harder to parse, but the content is appropriately sized for an 8-parameter unified tool with cross-platform nuances.

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 tool with 8 parameters and an output schema, the description is complete enough: every operationally important parameter is explained, platform-specific nuances are disclosed, and the output is summarized as the platform's metric rows. The presence of an output schema means return-value details need not be spelled out, so no critical context is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must carry the full parameter burden, and it does. It explains platform values, account ID semantics across platforms, days versus start_date/end_date, level values, breakdown dimensions, and the special Search Console combination/sort syntax. Only 'limit' is left to inference, which is reasonable since it is self-explanatory from 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?

The description uses a specific verb+resource ('report tool for EVERY connected platform') and explicitly scopes it to 'how did X perform' questions slash 'Returns the platform's metric rows.' It clearly differentiates from the sibling search/list tools by positioning itself as the unified reporting entry point rather than a platform-specific or metadata tool.

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 explicit usage guidance: use for any performance question, pass platform/account/days/level/breakdown, and call describe(platform) to see supported options. It provides clear context and points to an alternative (describe) for discovering platform specifics, though it does not list explicit when-not-to-use cases or name a concrete sibling tool as the alternative.

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

list_accountsGoogle Ads AccountsA
Read-only
Inspect

Lists the user's connected Google Ads account(s). Returns only the account(s) the user selected at connect time; the response carries default_account_id. all_accessible=true returns every account the credential can reach, which also expands client accounts under MCC (manager) accounts. platform is optional and defaults to Google Ads; naming another connected platform (meta | tiktok | linkedin | microsoft | ga4 | search_console | youtube | business_profile) returns the name of that platform's own account-listing tool instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
platformNo
all_accessibleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark the tool readOnly and non-destructive; the description adds the key behavioral facts beyond that: the response carries default_account_id, all_accessible expands under MCC, and platform has a default-and-redirect behavior. 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?

Every clause earns its place: core purpose, default scope, the all_accessible toggle, and platform routing are each specified once with no filler. Information is front-loaded, with the most essential behavior first.

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?

The definition fully equips an agent to call the tool correctly: both parameters are semantically covered, output schema supplies return shape, and annotations supply safety/open-world context. Nothing needed for invocation is missing, and the cross-platform routing prevents misuse.

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

Parameters5/5

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

With 0% schema coverage, the description carries the full burden for both parameters. It explains platform's optional/default nature, enumerates accepted platform values, and clarifies all_accessible=false/true semantics, including MCC client expansion.

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 verb and resource: 'Lists the user's connected Google Ads account(s).' It immediately distinguishes scoped behavior (connected/selected accounts) from all_accessible behavior, and clarifies that naming a different platform redirects to that platform's own tool, so an agent can tell it apart from list_entities and platform-specific siblings.

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 clear usage context: default returns only accounts selected at connect time, while all_accessible=true expands to all reachable accounts, including MCC clients. It also explains how to delegate to another platform's account-listing tool, though it does not name sibling tools explicitly or include when-not-to-use exclusions.

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

list_entitiesList EntitiesA
Read-only
Inspect

Lists the entities (campaigns, ad groups/ad sets, ads, keywords) of ANY connected ad platform with their IDs — use this instead of looking for a platform-specific list tool. platform: google_ads (default) | meta (facebook/instagram) | tiktok | linkedin | microsoft. entity: campaigns | ad_groups (adsets on Meta, adgroups on TikTok) | ads | keywords (Google Ads) | campaign_groups & creatives (LinkedIn). account = that platform's account id (for Google Ads you may also use customer_id); leave empty to use the connected/default account. parent_id narrows children to one parent (e.g. the campaign id when listing ad groups/ad sets, the ad set id when listing ads). Call describe(platform) to see which entity names a platform accepts.

Google Ads specifics (platform='google_ads'):

PAGING: rows is ONE PAGE — limit rows from offset (limit max 2000). total_rows is the real count and serving_count / serving_summary are always computed over ALL rows, not the page. truncated=true → call again with offset=next_offset and merge; never present the page as the complete list. Keyword and ad pages are returned as FLAT rows (a keyword inventory can run to thousands of rows — the raw nested GAQL form overflows the client's tool-result budget and then nothing reaches you at all).

CURRENT BIDS: ad group rows carry max_cpc (and target_cpa when set), keyword rows carry max_cpc plus effective_max_cpc and bid_source. Read the bid before changing it — a percentage change ("raise this by 30%") is otherwise sent as an absolute number and can LOWER the bid instead. bid_source: AD_GROUP_CRITERION means the keyword carries its own bid and OVERRIDES the ad group: raising the ad group bid then changes nothing for that keyword. Average CPC from a report is not a substitute — it is what was paid, not the ceiling that was set, and it is usually lower.

ACTIVE / RUNNING / LIVE = is_serving: true (derived from serving_status), NOT status: "ENABLED". They are different things: a campaign whose end date has passed still reads status=ENABLED while the Google Ads UI shows it as "Ended". When the user asks which campaigns are active, answer from is_serving and account for the rest using serving_status

  • status_reasons (ENDED, PAUSED, NOT_ELIGIBLE, MISCONFIGURED, PENDING...). Never present a status=ENABLED row as active on its own — the user is comparing your answer to their Google Ads screen. serving_summary gives the counts.

For campaigns it ALSO returns the bidding strategy (bidding_strategy), daily budget (daily_budget), targets (target_cpa / target_roas) and the max CPC ceiling (max_cpc, in account currency; null means no ceiling is set AT CAMPAIGN LEVEL). When max_cpc_note is present the campaign uses a portfolio strategy and max_cpc was not read.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
entityNocampaigns
offsetNo
accountNo
platformNo
parent_idNo
customer_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds substantial behavioral context beyond that: paging semantics (rows is one page, total_rows is real count, truncated=true means merge), flat-row return format for keywords/ads, bid-related caveats (max_cpc, bid_source override), and the critical distinction between is_serving and status=ENABLED. This is rich, non-obvious behavior that an agent must know to use the tool correctly.

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 description is long, but every section earns its place: the opening paragraph defines scope and parameters, and the Google Ads specifics section covers paging, bids, and status semantics that are essential for correct use. It is front-loaded with the core purpose and parameter overview before diving into platform-specific details. It could be slightly tighter, but the density of critical operational information justifies the length.

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?

Given the tool's complexity (7 parameters, 5 platforms, multiple entity types, paging, bid semantics, status semantics) and the presence of an output schema, the description is remarkably complete. It covers parameter meaning, platform differences, paging behavior, return-format caveats, and the active-vs-enabled trap. The only minor gap is that it doesn't describe the output schema structure in prose, but the output schema exists and the description explicitly mentions key fields (total_rows, serving_count, serving_summary, is_serving, status_reasons, etc.).

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 0%, so the description carries the full burden of explaining parameters. It explains platform, entity, account, parent_id, and the Google Ads customer_id alias, plus limit/offset paging semantics. It does not explicitly describe the 'limit' and 'offset' defaults in prose, but the schema provides defaults and the paging section covers their meaning. This is strong compensation for the 0% schema coverage.

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 verb and resource ('Lists the entities ... of ANY connected ad platform with their IDs') and explicitly distinguishes itself from platform-specific list tools, telling the agent to use this instead. It enumerates the entity types per platform, so an agent can immediately tell what this tool covers and that it is the generic cross-platform list tool among the 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?

The description gives explicit when-to-use guidance ('use this instead of looking for a platform-specific list tool'), explains how to disambiguate entity names per platform, and provides platform-specific operational guidance (e.g., Google Ads paging, active vs. enabled status). It also tells the agent to call describe(platform) to see accepted entity names, which is a clear alternative/fallback path.

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

list_serversList Hosting ServersA
Read-only
Inspect

Lists the websites you can edit: Opus Growth hosting servers ('Sunucum') AND any WordPress sites connected with the Opus Growth Connector plugin.

A hosting server is an isolated container we run for the user (edit with site_write_file / site_run_command). A connected WordPress site is the user's OWN WordPress (edit with the wordpress_* tools). Both are editable — they just use different tool families.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate a read-only, non-destructive, open-world operation. The description adds meaningful behavioral context beyond annotations: the result set mixes managed hosting servers with user-owned WordPress sites, and both are editable through different tool families. No contradictions with annotations are present.

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 main purpose is front-loaded in the first sentence, and the second paragraph earns its place by explaining the important distinction between the two result types and the relevant edit tool families. There is no filler or redundant restatement.

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?

Given the empty schema, the read-only annotations, and the output schema, the description fully covers what an agent needs: what is listed, the two categories of resources, and how to act on each afterward. Nothing essential 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?

The tool has zero parameters, so there is nothing for the description to clarify. The baseline of 4 applies because no parameter documentation burden exists.

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: it lists the websites the user can edit. It clearly distinguishes between Opus Growth hosting servers and connected WordPress sites, and even names the tool families used to edit each. This allows an agent to differentiate it from sibling tools like list_accounts 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 Guidelines4/5

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

The description explains the two kinds of results and which edit tool families apply to each, giving clear context for when this tool is relevant. It does not explicitly name alternatives or say 'use this instead of list_accounts', but the context is strong enough for an agent to infer when to call it.

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

provide_contact_detailsProvide Contact DetailsAInspect

Saves the account owner's full name and phone number, unlocking the operations that change an ad account (creating/updating/pausing campaigns or ads, budgets, statuses). It can also be done in the panel at platform.opus-growth.com, and it is not required for view/list/report tools. phone is in international E.164 format (e.g. +90 532 123 45 67); country_code takes the dialing code, e.g. "+90". Calling once is enough.

ParametersJSON Schema
NameRequiredDescriptionDefault
phoneNo
last_nameNo
first_nameYes
country_codeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations only say readOnlyHint=false and destructiveHint=false; the description adds that it saves data, that it's a prerequisite for change operations, and provides phone format (E.164) and country_code meaning. It doesn't detail repeated-call behavior, but the annotations already cover the safety profile, and the description adds useful context.

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 description is moderately long but every sentence adds value: purpose, alternative, format, and idempotency. It is front-loaded with the main action and ends with practical details. No unnecessary fluff.

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 simple save operation, it covers purpose, prerequisites, and parameter formats. It doesn't describe the return value, but an output schema exists, so that is not a gap. It could explicitly state that phone is optional if not provided, but the schema already shows defaults. Overall, it is adequately complete.

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?

The schema has 0% description coverage, so the description must explain parameters. It does explain phone format (E.164) and country_code (dialing code), and implies first_name/last_name via 'full name'. However, it doesn't clarify that only first_name is required while phone and others are optional, which could cause confusion since it says 'saves ... phone number'. It still adds format details beyond 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?

The description clearly states the action (saves the account owner's full name and phone number) and its purpose (unlocking operations that change an ad account). It also distinguishes itself from read-only tools by explicitly stating it is not required for view/list/report tools, helping an agent pick the right tool.

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 guidance: it is needed to enable operations that modify an ad account (creating/updating/pausing campaigns, budgets, statuses), and it is not needed for read-only tools. It also mentions an alternative (panel) and states that calling once is enough, which is clear direction.

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

report_issueReport IssueAInspect

Reports a bug or unexpected failure to Opus Growth support: pass a short summary, the failing tool_name, and any error details. The user is emailed when the issue is resolved. title, description and text are accepted as synonyms of summary/details, so a report is never lost to a parameter-name mismatch.

ParametersJSON Schema
NameRequiredDescriptionDefault
textNo
titleNo
detailsNo
summaryNo
tool_nameNo
descriptionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark this as non-read-only and non-destructive, and the description adds useful behavioral context: the user receives an email on resolution, and synonyms are accepted to prevent lost reports. This goes beyond the annotation fields without contradicting them.

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 compact sentences lead with the purpose, then cover required parameters and edge-case aliases. There is no fluff; the extra explanation about synonyms earns its place.

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 simple reporting tool, the description covers purpose, parameters, aliases, and side effects. It doesn't explain whether at least one of summary/details is expected, but the output schema and annotations cover the remaining context, so this is a minor 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?

With 0% schema description coverage, the description carries the full burden and does compensate: it explains summary, tool_name, details, and all three synonyms. It is slightly vague about which synonyms map to which field, but it still meaningfully documents every parameter.

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 ('Reports') and names the exact resource ('a bug or unexpected failure to Opus Growth support'), which makes the tool's job unmistakable. The content is clearly distinct from sibling tools like get_report or call_tool even without naming them.

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 clearly states the intended trigger (bug or unexpected failure) and how to structure the report (summary, tool_name, details). It does not explicitly contrast with alternatives or give negative guidance, but the use case is clear enough.

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

search_toolsFind a ToolA
Read-only
Inspect

Find the right Opus tool from the FULL catalog. The chat shows only a CORE set directly; for ANYTHING else — specific platform actions (Meta/TikTok/LinkedIn/Microsoft specifics), audiences, GTM, conversions, extensions, experiments, hosting, SEO add-ons, etc. — search here FIRST, then run the tool with call_tool. Returns matching tools with name, description and the full JSON argument schema so you can call them correctly. query = plain language, e.g. 'create tiktok campaign', 'add sitelink extension', 'gtm publish container'.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds meaningful behavioral context: it returns matching tool names, descriptions, and full JSON argument schemas, and it positions the tool as a non-executing catalog lookup. 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?

The description is dense but every sentence earns its place: purpose, when-to-use, return value, and parameter semantics. It is front-loaded with the key purpose and avoids 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 tool is simple and has an output schema, so return-value details are not required. The description covers purpose, usage workflow, examples, and query semantics. The only minor gap is that the limit parameter is never mentioned, but the tool remains callable correctly with the information provided.

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 schema description coverage at 0%, the description must carry the burden. It explains the query parameter well ('plain language' plus three concrete examples), but it does not explain the limit parameter at all, leaving the agent to infer its meaning from the default value of 8.

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: 'Find the right Opus tool from the FULL catalog.' It clearly differentiates itself from the chat's core tool set and from call_tool by framing itself as a discovery step that returns tool metadata rather than executing an action.

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?

The description explicitly says when to use the tool: 'for ANYTHING else... search here FIRST.' It also gives a concrete workflow ('then run the tool with call_tool') and provides example queries. This is direct, actionable usage guidance that leaves little to inference.

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
    • Changedlist_accounts1 field changed
      • addedInput schema / properties / platform
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
  2. 1 tool update
    • Changedreport_issue5 fields changed
      • addedInput schema / properties / description
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedInput schema / properties / summary / default
        Added value: +""
      • addedInput schema / properties / text
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • addedInput schema / properties / title
        Added value: +{
        +  "default": "",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "summary"
        -]
  3. 12 tool updates
    • First observedcall_tool
    • First observedcall_write_tool
    • First observeddescribe
    • First observedfetch
    • First observedget_report
    • First observedlist_accounts
    • First observedlist_entities
    • First observedlist_servers
    • First observedprovide_contact_details
    • First observedreport_issue
    • First observedsearch
    • First observedsearch_tools

Publisher details

Operator
Opus Growth is a trading brand of Talat KOÇ, a sole proprietorship registered in Türkiye (Gökalp Tax Office).
Operator website
https://opus-growth.com
Vendor relationship
Unknown
Restrictions
An Opus Growth account is required. New accounts start with 75 free credits that never expire; after that a paid plan applies, from $49/month. Each user connects their own advertising accounts over OAuth and sees only their own data. One connected ad account on Free and Pro, several on Agency. Every write returns a dry run first and applies only after an explicit confirmation call. Reads are cheap, writes cost more, previews are free. Hosting tools are off on the free plan. No regional restriction.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Connects AI assistants to Google Ads, Meta Ads, ChatGPT Ads, TikTok Ads and LinkedIn Ads so users can query live campaign performance, budgets and audiences in the account's own currency and prepare changes as proposals that only take effect after explicit approval. Reads run immediately, while every write is staged as an approvable proposal with before/after values, and newly created campaigns, ad sets and ads start paused.
    1
    -
  • 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
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables natural-language analysis and management of Google Ads accounts, campaigns, keywords, budgets, and performance metrics through Claude.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.