paid-ads
Server Details
Hosted MCP server for Google Ads and LinkedIn Ads analysis.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 4.2/5 across 56 of 56 tools scored. Lowest: 3.5/5.
Tools are clearly separated by platform prefix (linkedin_, google_ads_) and have distinct purposes (analyze, compare, render, get, etc.). Descriptions explicitly direct users to preferred rendering tools, reducing ambiguity. However, the high number of similar tools (e.g., multiple compare functions) may still cause minor confusion.
Naming follows a consistent snake_case verb_noun pattern across all tools (e.g., linkedin_analyze_campaign, google_ads_render_weekly_group_report). No mixing of conventions, and verbs like get, render, analyze, compare are used uniformly.
With 56 tools covering two major ad platforms plus setup and reporting, the count is high but reflects the complexity of the domain. However, many tools are redundant (e.g., multiple equivalent 'get' vs 'render' pairs), and the set could be streamlined without sacrificing capability.
The tool surface covers the full analysis and reporting lifecycle for both LinkedIn and Google Ads, including data retrieval, analysis, rendering, and account health. Missing are campaign creation/update tools, but these are outside the stated purpose. Minor gaps like lacking bulk operations or cross-platform comparison are acceptable.
Available Tools
52 toolsclassify_campaign_reporting_groupAInspect
Assigns one synced campaign to a saved reporting group after client confirmation, optionally recording effective dates and resolving the related setup question.
| Name | Required | Description | Default |
|---|---|---|---|
| purpose | No | Optional campaign purpose note captured during classification. | |
| platform | Yes | ||
| groupName | Yes | Reporting group name to assign. | |
| followUpId | No | Optional setup-question ID to resolve after classification. | |
| effectiveTo | No | Optional YYYY-MM-DD date when this assignment stops applying. | |
| funnelStage | No | Optional funnel stage note captured during classification. | |
| analystNotes | No | Optional analyst notes to store on the campaign context. | |
| effectiveFrom | No | Optional YYYY-MM-DD date when this assignment becomes active. | |
| advertiserName | No | Optional advertiser name fallback. | |
| includedInReports | No | Set false to exclude the campaign from grouped reports while still tracking it. | |
| externalCampaignId | Yes | Platform-native campaign ID stored in saved account data. | |
| advertiserContextId | No | Optional saved advertiser ID when campaign ID alone is ambiguous. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a non-read-only, non-destructive mutation. The description adds that it requires client confirmation and optionally resolves setup questions, but doesn't detail side effects like overwriting behavior or limits. This adds some value but leaves gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys core purpose, prerequisites, and optional functionality without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (12 parameters, output schema exists), the description covers the main action, optional features, and prerequisite. It is sufficient for an agent to understand when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 92%, so most parameters are described in the schema. The description ties parameters together (e.g., effective dates, setup question), adding workflow meaning beyond individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('assigns') and resources ('synced campaign', 'reporting group'), clearly indicating the tool's action. It also mentions optional recording of effective dates and resolving setup questions, distinguishing it from siblings like 'resolve_context_follow_up' and 'save_reporting_groups'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states 'after client confirmation', indicating a prerequisite for use. While it doesn't explicitly list when not to use or provide alternatives, the context of sibling tools implies this is for a specific workflow step, offering clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auth_setup_statusARead-onlyInspect
Data tool for the current user's MCP/Auth0, LinkedIn Ads, and Google Ads connection status plus the exact setup URLs to continue the flow in a browser. For the user-facing setup UI, prefer render_auth_setup_status.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds no new behavioral context. It does not contradict annotations, but no additional disclosure is provided beyond stating the output includes setup URLs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences: first states what the tool returns, second gives usage guidance. No unnecessary words, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, an existing output schema (hidden), and no complex behavior, the description provides all necessary context: it returns status and URLs, and directs UI needs elsewhere. Fully adequate for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema coverage is 100%, so the description does not need to add parameter information. Baseline score of 4 is appropriate as no parameters exist to document.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns connection status and setup URLs for the current user's MCP/Auth0, LinkedIn Ads, and Google Ads. It explicitly distinguishes from sibling tool 'render_auth_setup_status' by directing the agent to prefer that for UI, ensuring unambiguous purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'For the user-facing setup UI, prefer render_auth_setup_status.' This tells the agent when to use this data tool versus the UI-oriented sibling, avoiding misselection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_context_setup_statusARead-onlyInspect
Data tool for the current user's saved client context, including client setup status, advertiser profiles, synced account/campaign counts, and any open setup questions. For the user-facing setup UI, prefer render_context_onboarding.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. The description adds value by enumerating the data fields returned, reinforcing that it is a safe read operation without side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. First sentence describes purpose, second provides usage guidance. Very efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and an output schema, the description covers all necessary context: it specifies the data scope (current user's saved client context) and directs to the UI tool when appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema coverage, baseline is 4. The description does not need to add parameter info; it appropriately lists the data returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies it as a data tool for the user's saved client context, listing specific data elements. It distinguishes itself from render_context_onboarding by explicitly stating when to use the sibling for UI.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent to prefer render_context_onboarding for the user-facing setup UI, providing clear guidance on when to use this tool versus the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mcp_helpARead-onlyInspect
Explains how to use the Paid Ads MCP Server, including auth setup, LinkedIn Ads workflows, Google Ads workflows, MCP UI behavior, and recommended starting tools.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Optional help topic to focus on. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, so the tool is safe to use. The description adds context about the scope of help provided (auth, workflows, etc.), which goes beyond annotations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence covering the key points. It is adequately concise and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity, one optional parameter, and existence of an output schema, the description provides sufficient context for an agent to understand when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of the single optional parameter with an enum. The description adds meaning by listing the topics (auth, LinkedIn, Google Ads, etc.) which correspond to enum values, helping the agent understand what each topic covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool explains how to use the Paid Ads MCP Server, covering specific areas like auth, LinkedIn, Google Ads, UI, and starting tools. This distinguishes it from sibling tools which are action-oriented.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for getting help or guidance, but does not explicitly state when to use this tool versus alternatives like using specific tools directly. No when-not or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_unmapped_campaignsARead-onlyInspect
Lists synced campaigns that do not currently have an active reporting-group assignment for the requested platform or advertiser. Use this after syncs to find campaigns that need client confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| asOfDate | No | Optional YYYY-MM-DD date for effective-date aware filtering. | |
| platform | No | Optional platform filter. | |
| advertiserName | No | Optional advertiser name fallback. | |
| advertiserContextId | No | Optional saved advertiser ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool lists specific campaigns (unmapped) and suggests its purpose, which aligns with annotations and provides useful context beyond them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no fluff. The first sentence states the purpose, the second provides usage guidance. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is read-only with annotations covering safety, an output schema (not shown but present), and the description clarifies when to use it, the description is complete for an agent to understand the tool's role.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the input schema already describes all parameters. The description does not add any additional meaning about parameters, meeting the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists synced campaigns without an active reporting-group assignment, using specific verbs and a defined resource. It distinguishes from siblings like classify_campaign_reporting_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says 'Use this after syncs to find campaigns that need client confirmation,' providing clear when-to-use context. It does not explicitly mention alternatives, but the sibling names imply them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_analyze_accountARead-onlyInspect
Advanced app-only data workflow for focused Google Ads account analysis. Builds compact account metrics and a top-campaign leaderboard for follow-up analysis inside MCP Apps. Do not use this for broad user-facing prompts like 'generate a report', 'show a report', 'dashboard', or 'visual report'; use google_ads_render_weekly_group_report for Google-only visual reports and paid_ads_render_weekly_dashboard for cross-channel Google Ads plus LinkedIn Ads reports.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional Google Ads account name query, such as Thorogood. | |
| endDate | Yes | Inclusive analysis end date in YYYY-MM-DD format. | |
| windows | No | Trailing window sizes in days, such as [7, 30, 90]. Defaults to [7, 30, 90]. | |
| customerId | No | Optional 10-digit Google Ads customer ID to analyze. | |
| campaignCount | No | Maximum number of top campaigns to include from the longest window. Defaults to 5, max 20. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. | |
| includeRecommendations | No | Whether to include top Google Ads recommendations. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint. Description adds context that it's an 'app-only data workflow' for 'follow-up analysis', but does not elaborate on other behavioral aspects like auth requirements or data scope beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then usage guidelines. Every sentence adds value with no redundancy or wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters (all well-documented in schema) and existence of output schema, the description provides enough context about the tool's workflow and output. It also covers when not to use it, making it self-contained for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description does not add new meaning beyond the schema; it mentions the output (metrics and leaderboard) but not parameter-specific details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool performs account analysis and builds compact metrics and a top-campaign leaderboard. It distinguishes from siblings by specifying 'app-only' and 'for follow-up analysis inside MCP Apps', and further clarifies by listing what not to use it for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises against using for broad visual reports and directs to alternative tools (google_ads_render_weekly_group_report and paid_ads_render_weekly_dashboard), providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_analyze_campaignARead-onlyInspect
Data workflow for Google Ads campaign analysis. Resolves a campaign by name, compares campaign performance across trailing windows, and returns a compact analysis artifact with top ad, keyword, and search-term rows. For the user-facing visual dashboard, prefer google_ads_render_campaign_analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Campaign name query to resolve, such as US prospects. | |
| endDate | Yes | Inclusive analysis end date in YYYY-MM-DD format. | |
| windows | No | Trailing window sizes in days, such as [7, 30, 90]. Defaults to [7, 30, 90]. | |
| customerId | No | Optional 10-digit Google Ads customer ID to narrow the search to one customer. | |
| detailRowCount | No | Maximum number of ad, keyword, and search-term rows to include in the compact analysis. Defaults to 5, max 20. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. | |
| includeAdComparison | No | Whether to include top ad-level comparison rows. Defaults to true. | |
| includeKeywordComparison | No | Whether to include top keyword-level comparison rows. Defaults to true. | |
| includeSearchTermComparison | No | Whether to include top search-term comparison rows. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool resolves a campaign by name, compares performance across trailing windows, and returns a compact analysis artifact with top rows. This provides useful behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first sentence explains core functionality, and the second provides an important usage alternative. No fluff or redundancy; every sentence is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, schema coverage 100%, annotations, and an output schema, the description is mostly complete. It covers the workflow and return artifact. It does not mention prerequisites like needing to locate the campaign first, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 summarizes parameters (resolves by name, compares across windows, includes ad/keyword/search-term rows) but does not add detailed semantics beyond what the schema already provides for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a data workflow for Google Ads campaign analysis, resolving a campaign by name and comparing performance across trailing windows. It distinguishes itself from the sibling tool google_ads_render_campaign_analysis by saying to prefer that for user-facing dashboards, providing a specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to use google_ads_render_campaign_analysis for user-facing visual dashboards, indicating when not to use this tool. It also explains it returns a compact analysis artifact, implying programmatic use. However, it does not list other alternatives from the large sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_analyze_search_termsARead-onlyInspect
Data workflow for judging search-term quality inside a Google Ads campaign. Resolves a campaign by name and returns a compact search-term analysis artifact across trailing windows. For the user-facing visual dashboard, prefer google_ads_render_search_terms_analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Campaign name query to resolve, such as US prospects. | |
| endDate | Yes | Inclusive analysis end date in YYYY-MM-DD format. | |
| windows | No | Trailing window sizes in days, such as [7, 30]. Defaults to [7, 30]. | |
| customerId | No | Optional 10-digit Google Ads customer ID to narrow the search to one customer. | |
| detailRowCount | No | Maximum number of search-term rows to include in the compact analysis. Defaults to 10, max 20. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint: true, destructiveHint: false, indicating safe read behavior. The description adds that it resolves by name and returns an artifact, but does not elaborate on error handling or output specifics. With annotations covering the safety profile, the description is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two front-loaded sentences: first defines the tool's action, second provides usage guidance with an explicit alternative. No extraneous words—every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 6 parameters and an output schema, the description sets proper expectations (data workflow, compact analysis, trailing windows). It does not detail return values, but the output schema covers that. A minor gap is not mentioning the window parameter explicitly, but it's referenced indirectly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for all 6 parameters. The description adds no new meaning beyond stating it resolves a campaign by name and uses trailing windows, which is already implied by the windows parameter. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states this is a data workflow for judging search-term quality, resolves a campaign by name, and returns a compact analysis artifact. It explicitly distinguishes from the user-facing visual dashboard sibling tool google_ads_render_search_terms_analysis, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'For the user-facing visual dashboard, prefer google_ads_render_search_terms_analysis', providing a clear when-not-to-use and an alternative. This directly guides the agent on appropriate usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_compare_campaign_performanceARead-onlyInspect
Compares one Google Ads campaign across trailing windows ending on a specific date and returns one compact campaign-level comparison result.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | Inclusive comparison end date in YYYY-MM-DD format. | |
| windows | No | Trailing window sizes in days, such as [7, 30, 90]. Defaults to [7, 30, 90]. | |
| campaignId | No | Optional Google Ads campaign ID to compare. If omitted, the most recent Google Ads campaign from session memory is used when available. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer or campaign selection from session memory is used when available. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false, so description doesn't need to repeat safety. It adds context about trailing windows and compact result. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with no redundant words. It is front-loaded and every part is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (5 params, output schema exists) and annotations, the description provides sufficient context for correct use. However, it does not elaborate on return structure or error cases, though output schema likely covers that.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear parameter descriptions. The tool description adds no additional parameter meaning beyond what's already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool compares a Google Ads campaign across trailing windows ending on a specific date, returning a compact campaign-level result. This distinguishes it from siblings that compare ads, keywords, or search terms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for campaign-level comparison but does not explicitly state when to use this tool versus other compare tools. No alternatives or when-not-to-use guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_compare_entity_performanceARead-onlyInspect
Compares Google Ads ads, keywords, or search terms inside one campaign across trailing windows ending on a specific date. Set entityType to ad, keyword, or search_term. Returns paginated rows with a stable entityType field and type-specific entity details.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum entity rows to fetch from Google per window before MCP pagination. Defaults to 200, maximum 500. | |
| endDate | Yes | Inclusive comparison end date in YYYY-MM-DD format. | |
| windows | No | Trailing window sizes in days, such as [7, 30]. Defaults to [7, 30]. | |
| pageSize | No | MCP delivery page size for comparison rows. Defaults to 50, max 200. | |
| pageToken | No | Opaque cursor returned by a previous google_ads_compare_entity_performance call to continue reading rows. | |
| campaignId | No | Optional Google Ads campaign ID whose entity rows should be compared. If omitted, the most recent Google Ads campaign from session memory is used when available. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer or campaign selection from session memory is used when available. | |
| entityType | Yes | Entity rows to compare: ad, keyword, or search_term. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true and destructiveHint=false. The description adds that results are paginated with a stable entityType field and type-specific details, providing useful output behavior beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with front-loaded purpose, no redundant words. Each sentence conveys essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 9 parameters, 100% schema coverage, and an output schema, the description covers the core purpose and key behavioral traits. It omits session memory defaults but schema fills this gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description only repeats the entityType enum values and implies endDate and windows usage, but adds no new semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely states the tool compares Google Ads ads, keywords, or search terms inside one campaign, using trailing windows. It clearly distinguishes from sibling tool google_ads_compare_campaign_performance which compares campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description specifies the scope (inside one campaign) and required entityType, providing clear context. However, it does not explicitly state when not to use or name alternatives, though the sibling tools imply the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_find_accountsARead-onlyInspect
Finds Google Ads customer accounts by name or ID across directly accessible customers and returns ranked account matches for disambiguation. Prefer this when the user names an account but does not know the customer ID. In ChatGPT, call render_shared_picker after this if you want the MCP UI picker.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ranked matches to return before MCP pagination. Defaults to 10, maximum 50. | |
| query | Yes | Account name or customer ID query, such as Thorogood or 1234567890. | |
| pageSize | No | MCP delivery page size for ranked account matches. Defaults to 50, max 200. | |
| pageToken | No | Opaque cursor returned by a previous google_ads_find_accounts call to continue reading matches. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds behavioral context: searches across directly accessible customers and returns ranked matches for disambiguation. Adds value but does not detail pagination or ranking criteria.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences covering purpose, usage guidance, and a chaining note. No redundancy, front-loaded with main function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Accounts for output schema, so return values not needed. Describes scope (directly accessible customers) and ranking. Lacks mention of what happens with no matches or how to handle multiple matches, but overall sufficient given sibling context and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so schema fully describes parameters. Description reaffirms query parameter purpose ('by name or ID') but adds no new semantic detail beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb 'Finds' with specific resource 'Google Ads customer accounts' and method 'by name or ID across directly accessible customers returning ranked matches'. Distinguishes from sibling 'google_ads_list_accessible_customers' which lists all accounts without query.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to prefer: 'when the user names an account but does not know the customer ID'. Also suggests chaining with 'render_shared_picker' for UI. Does not name alternatives but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_find_campaignsARead-onlyInspect
Finds Google Ads campaigns by name across one customer or all directly accessible customers, ranks likely matches, and returns customer context for each match. Prefer this or google_ads_analyze_campaign when the user gives only a campaign name. In ChatGPT, call render_shared_picker after this if you want the MCP UI picker.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum ranked matches to return before MCP pagination. Defaults to 10, maximum 50. | |
| query | Yes | Campaign name query to match, such as Brand or US prospects. | |
| pageSize | No | MCP delivery page size for ranked campaign matches. Defaults to 50, max 200. | |
| statuses | No | Optional campaign statuses to include, such as ENABLED, PAUSED, or REMOVED. | |
| pageToken | No | Opaque cursor returned by a previous google_ads_find_campaigns call to continue reading matches. | |
| customerId | No | Optional 10-digit Google Ads customer ID to narrow the search to one customer. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds behavioral details: ranks matches, returns customer context, and references MCP pagination via pageSize and pageToken parameters. No contradiction; description enriches understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, followed by usage guidance and a specific action. Every sentence earns its place with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters with 100% schema coverage and an output schema, the description covers the tool's function, mentions ranking and picker integration, and hints at pagination. Could briefly note what each match includes (e.g., campaign metadata), but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 parameters. The description does not add per-parameter details beyond the schema. Baseline score of 3 is appropriate as the description provides overall context but not incremental parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource: 'Finds Google Ads campaigns by name', and distinguishes from siblings by mentioning 'prefer this or google_ads_analyze_campaign when the user gives only a campaign name'. The description also specifies the action of ranking matches and returning customer context, which differentiates it from other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Prefer this or google_ads_analyze_campaign when the user gives only a campaign name.' Also instructs to call render_shared_picker for UI picker. Lacks explicit when-not-to-use or alternatives for other scenarios, but the 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.
google_ads_generate_keyword_forecastARead-onlyInspect
Generates bounded Google Ads forecast metrics for a keyword set over a future date range using a constrained manual-CPC forecast campaign. If customerId is omitted, the most recent Google Ads customer from session memory is used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | Forecast end date in YYYY-MM-DD format. Must be after startDate and within one year. | |
| keywords | Yes | Forecast keywords. Maximum 20. | |
| language | Yes | Google Ads language constant resource name, for example languageConstants/1000. | |
| startDate | Yes | Forecast start date in YYYY-MM-DD format. Must be in the future. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer from session memory is used when available. | |
| currencyCode | No | Optional 3-letter ISO currency code if different from the account currency. | |
| conversionRate | No | Optional expected conversion rate as a decimal between 0 and 1. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. | |
| targetCpcMicros | Yes | Required manual CPC bid in micros used for the forecast campaign. | |
| keywordMatchType | No | Optional match type applied to forecast and negative keywords. Defaults to BROAD. | |
| negativeKeywords | No | Optional negative keywords excluded from the forecast campaign. | |
| geoTargetConstants | No | Optional geo target constant resource names, for example geoTargetConstants/2840. | |
| keywordPlanNetwork | No | Optional forecast network. Defaults to GOOGLE_SEARCH. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and destructiveHint=false. The description adds context: 'bounded', 'constrained manual-CPC forecast campaign', and notes the session memory fallback for customerId. This enriches behavioral understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The core purpose is stated first, followed by a note on customerId behavior. Efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers the tool's purpose, key behavioral aspects (customerId fallback, constrained campaign), and uses annotations effectively. Could mention return metrics or error conditions, but output schema exists and annotations cover safety.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds only the customerId fallback note beyond schema descriptions. No additional parameter semantics provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates bounded Google Ads forecast metrics for a keyword set over a future date range using a constrained manual-CPC forecast campaign. This distinguishes it from sibling tools like google_ads_generate_keyword_ideas (generates ideas) and performance report tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal usage guidance. It mentions the customerId fallback but lacks explicit when-to-use or when-not-to-use information compared to alternatives. No clear exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_generate_keyword_ideasARead-onlyInspect
Generates bounded Google Ads keyword ideas from exactly one seed mode: keywords, URL, or keyword-and-URL. Returns keyword ideas plus historical planning metrics and supports Google-native paging. If customerId is omitted, the most recent Google Ads customer from session memory is used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Seed landing page URL. Use this by itself as the URL seed mode. | |
| keywords | No | Seed keywords. Use this by itself as the keyword seed mode. | |
| language | No | Optional Google Ads language constant resource name, for example languageConstants/1000. | |
| pageSize | No | Optional Google Ads page size. Max 1000. | |
| pageToken | No | Opaque Google Ads page token returned by a previous keyword ideas response. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer from session memory is used when available. | |
| keywordAndUrl | No | Combined seed mode with both keywords and a URL. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. | |
| geoTargetConstants | No | Optional Google Ads geo target constant resource names, for example geoTargetConstants/2840. | |
| includeAdultKeywords | No | Whether adult keyword ideas may be returned. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as readOnlyHint=true and destructiveHint=false. The description adds value by stating it returns keyword ideas plus historical planning metrics, supports Google-native paging, and the customerId fallback. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core functionality. Every sentence adds value without redundancy or unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 10 parameters, nested objects, and an output schema, the description covers essential usage constraints, output type, paging, and customerId fallback. The remaining details are in the schema and output schema, so the description is complete enough for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds minimal meaning beyond the schema, only emphasizing the 'exactly one seed mode' constraint. The schema itself describes parameters adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Generates bounded Google Ads keyword ideas') and explicitly names the three seed modes. It distinguishes this tool from siblings like google_ads_generate_keyword_forecast by focusing on ideas vs. forecasts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the constraint of exactly one seed mode and explains customerId fallback behavior. However, it does not compare to alternative tools or give explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_account_hierarchyARead-onlyInspect
Retrieves the Google Ads customer hierarchy visible from a specific customer account using bounded customer_client traversal. If customerId is omitted, the most recent Google Ads customer from session memory is used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| maxDepth | No | Maximum hierarchy depth to return. Defaults to 1. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer from session memory is used when available. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true. The description adds the bounded traversal method and session memory fallback, but does not disclose other behaviors like depth limits or error cases. This is acceptable but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, immediately stating the core action and then a conditional fallback. No redundant phrases, well-structured for quick parsing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the annotations, the description adequately covers key behavioral aspects like traversal and fallback. Absence of mention of depth limits or pagination is minor; overall sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 each parameter. The description adds minimal extra meaning, such as the session memory fallback for customerId and the default for maxDepth. This meets the baseline for a fully documented schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the Google Ads customer hierarchy using bounded customer_client traversal, and distinguishes itself by specifying the visibility from a specific customer account. Among sibling tools, none duplicate this purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives like google_ads_find_accounts or google_ads_list_accessible_customers. It only implies usage for hierarchy retrieval without contextual comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_performance_reportARead-onlyInspect
Raw data tool for bounded Google Ads reporting rows over a date range. Use this when you need structured report data for chaining or custom analysis. For user-facing visual reports in ChatGPT or Claude, prefer google_ads_render_weekly_group_report.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional server-side row limit passed to Google Ads. | |
| endDate | Yes | Inclusive end date in YYYY-MM-DD format. | |
| filters | No | Optional bounded GAQL WHERE fragments, such as campaign.status = 'ENABLED'. | |
| segments | No | Optional GAQL segment fields to include, such as segments.device or segments.date. | |
| startDate | Yes | Inclusive start date in YYYY-MM-DD format. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer from session memory is used when available. | |
| reportType | Yes | Bounded Google Ads report shape to run. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false. Description adds that it's a 'raw data tool' and 'bounded', implying data scope but no pagination details. Contradicts no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. First sets purpose, second provides usage alternative. No wasted words, front-loaded with key verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and annotations are rich, description covers purpose and usage adequately. Misses behavioral details like default limit or pagination, but these are secondary given schema and annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so description doesn't need to add much. It mentions 'bounded' and 'date range' but does not elaborate on parameters beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's a 'raw data tool for bounded Google Ads reporting rows over a date range' and specifies use cases: structured report data for chaining or custom analysis. It distinguishes from the sibling tool google_ads_render_weekly_group_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly guides when to use this tool (for chaining/custom analysis) and when to use an alternative (for visual reports, prefer google_ads_render_weekly_group_report). Provides clear context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_recommendationsARead-onlyInspect
Data tool for bounded Google Ads recommendations for a customer account, including recommendation type, targeted entities, impact metrics, and compact recommendation-specific details. For the user-facing recommendations UI, prefer google_ads_render_recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional server-side row limit passed to Google Ads. | |
| types | No | Optional Google Ads recommendation types such as KEYWORD or CAMPAIGN_BUDGET. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer from session memory is used when available. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the tool is clearly a safe read operation. The description adds that it returns 'compact recommendation-specific details,' but does not reveal further behavioral traits (e.g., pagination, rate limits) beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the tool's purpose and output content, the second advises on when to use a sibling tool. No wasted words, information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description does not need to explain return values. It sufficiently describes the tool's role as a data retrieval tool for recommendations, covering the key fields users need to understand its output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage with clear explanations for all four parameters (limit, types, customerId, loginCustomerId). The description adds no additional meaning beyond what the schema already provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves bounded Google Ads recommendations for a customer account, listing specific content (type, entities, impact metrics, details). It also distinguishes from a sibling tool (google_ads_render_recommendations) used for the UI, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to prefer google_ads_render_recommendations for user-facing UI, implying this tool is for programmatic or data-focused use. While it gives clear context, it does not explicitly state when not to use this tool or list all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_get_weekly_campaign_adsARead-onlyInspect
Returns weekly ad-level drilldown rows for one Google Ads campaign, including channel-aware metrics, prior-window deltas, and ad metadata for the weekly grouped report.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | MCP delivery page size for ad rows. Defaults to 10, max 25. | |
| pageToken | No | Opaque cursor returned by a previous google_ads_get_weekly_campaign_ads call. | |
| campaignId | Yes | Google Ads campaign ID to drill into. | |
| customerId | Yes | 10-digit Google Ads customer ID for the campaign. | |
| campaignName | No | Optional campaign name for display context. | |
| currentEndDate | Yes | Inclusive current-window end date in YYYY-MM-DD format. | |
| currentStartDate | Yes | Inclusive current-window start date in YYYY-MM-DD format. | |
| comparisonEndDate | Yes | Inclusive comparison-window end date in YYYY-MM-DD format. | |
| comparisonStartDate | Yes | Inclusive comparison-window start date in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false. Description adds that output includes deltas and metadata, but does not disclose pagination behavior, error handling, or authorization needs beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with verb and resource, no redundant phrasing. While concise, it could optionally list key output elements more prominently for quicker scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description fails to explain the purpose of comparison dates (prior-window deltas) and pagination (pageSize, pageToken). With 6 required parameters and complexity, the description is too shallow for an agent to confidently invoke the tool without schema inspection.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all 9 parameters well-described in the schema itself. The description adds no extra semantic context beyond what the schema provides (e.g., explaining the concept of current vs comparison windows).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it returns weekly ad-level drilldown rows for one campaign, with specific data types (channel-aware metrics, prior-window deltas, ad metadata). This distinguishes it from sibling tools like google_ads_get_weekly_group_report (aggregated) and google_ads_compare_ad_performance (comparison).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies usage for ad-level drilldown within a campaign for weekly reporting but does not explicitly state when to use or not use this tool over alternatives. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_list_accessible_customersARead-onlyInspect
Lists directly accessible Google Ads customers for the configured Google Ads credentials, including descriptive names when Google returns them. Use this to discover customer IDs before running Google Ads hierarchy or reporting tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds behavioral detail about including descriptive names when Google returns them, and implies authentication context ('for the configured Google Ads credentials'). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences. First sentence defines the action and outcome; second provides usage guidance. No filler, all sentences add value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with an output schema, the description covers the essential purpose, usage context, and a behavioral detail. It is complete and well-aligned with the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, so baseline 4 applies. The description does not need to add parameter information, and it correctly focuses on the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Lists' and the resource 'directly accessible Google Ads customers', and distinguishes it from sibling tools by specifying its use for discovering customer IDs before hierarchy or reporting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs when to use the tool: 'Use this to discover customer IDs before running Google Ads hierarchy or reporting tools.' This provides clear guidance on prerequisite context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_render_campaign_analysisARead-onlyInspect
Preferred user-facing Google Ads campaign analysis tool. Renders the campaign analysis dashboard and can either take analysisPayload from google_ads_analyze_campaign or fetch the analysis directly when called with campaign-analysis arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Campaign name query to resolve when analysisPayload is not supplied. | |
| endDate | No | Inclusive analysis end date in YYYY-MM-DD format when analysisPayload is not supplied. | |
| windows | No | Trailing window sizes in days when analysisPayload is not supplied. | |
| customerId | No | Optional 10-digit Google Ads customer ID to narrow the search when analysisPayload is not supplied. | |
| detailRowCount | No | Maximum number of ad, keyword, and search-term rows to include when analysisPayload is not supplied. | |
| analysisPayload | No | The structuredContent object returned by google_ads_analyze_campaign. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access when analysisPayload is not supplied. | |
| includeAdComparison | No | Whether to include top ad-level comparison rows when analysisPayload is not supplied. | |
| includeKeywordComparison | No | Whether to include top keyword-level comparison rows when analysisPayload is not supplied. | |
| includeSearchTermComparison | No | Whether to include top search-term comparison rows when analysisPayload is not supplied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, so the safety profile is clear. The description adds information about rendering and dual-mode operation but no additional behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two well-structured sentences that front-load the key purpose and modes, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, output schema, annotations), the description adequately explains the two modes and primary use. However, it does not mention prerequisites or expected return format (though output schema covers that), so slightly incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters. The description does not add extra meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as the 'preferred user-facing Google Ads campaign analysis tool' that 'renders the campaign analysis dashboard', using a specific verb and resource, and it distinguishes itself from sibling tools like google_ads_analyze_campaign and other render tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains two usage modes (with or without analysisPayload) and implies it is the primary tool for this task, but it lacks explicit guidance on when not to use it or comparison with alternatives like linkedin_render_campaign_analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_render_recommendationsARead-onlyInspect
Preferred user-facing Google Ads recommendations tool. Renders the recommendations table and can either take recommendationsPayload from google_ads_get_recommendations or fetch recommendations directly when called with account arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional server-side row limit passed to Google Ads when recommendationsPayload is not supplied. | |
| types | No | Optional Google Ads recommendation types when recommendationsPayload is not supplied. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query when recommendationsPayload is not supplied. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access when recommendationsPayload is not supplied. | |
| recommendationsPayload | No | The structuredContent object returned by google_ads_get_recommendations. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds limited behavioral detail. It mentions fetching and rendering but no additional safety or side-effect information beyond what annotations provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no redundancy. Front-loaded with the primary purpose and immediately clarifies the two usage modes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 5 parameters and an output schema, the description adequately covers the two entry points. However, it does not mention return format, error handling, or dependencies on other tools beyond the sibling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all parameters with descriptions (100% coverage). Description adds value by explaining the dual-mode usage pattern (payload vs direct fetch) and which parameters apply in each scenario.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it 'renders the recommendations table' and distinguishes itself by being the 'preferred user-facing' tool. It also explains two modes of operation (using payload or fetching directly), differentiating it from sibling google_ads_get_recommendations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance on when to use recommendationsPayload vs direct fetching with account arguments. However, it does not explicitly state when not to use this tool or mention specific alternatives beyond the sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_render_search_terms_analysisARead-onlyInspect
Preferred user-facing Google Ads search-terms analysis tool. Renders the search-terms analysis dashboard and can either take analysisPayload from google_ads_analyze_search_terms or fetch the analysis directly when called with search-term-analysis arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Campaign name query to resolve when analysisPayload is not supplied. | |
| endDate | No | Inclusive analysis end date in YYYY-MM-DD format when analysisPayload is not supplied. | |
| windows | No | Trailing window sizes in days when analysisPayload is not supplied. | |
| customerId | No | Optional 10-digit Google Ads customer ID to narrow the search when analysisPayload is not supplied. | |
| detailRowCount | No | Maximum number of search-term rows to include when analysisPayload is not supplied. | |
| analysisPayload | No | The structuredContent object returned by google_ads_analyze_search_terms. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access when analysisPayload is not supplied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds that it renders a dashboard and can fetch data, but no further behavioral traits like auth or error handling are disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first establishes purpose, second explains the dual mode. No fluff, front-loaded with essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters with 100% schema coverage, an output schema, and the dual-mode complexity, the description covers the key usage patterns and connections to sibling tools. It doesn't need to explain output format due to output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value by grouping parameters into 'search-term-analysis arguments' and connecting analysisPayload to the sibling tool, clarifying the dual-mode usage beyond what the schema alone conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's a user-facing tool that renders the search-terms analysis dashboard, distinguishing it from the analysis tool and other render tools. The verb 'renders' and resource 'search-terms analysis dashboard' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes two usage modes: taking analysisPayload from google_ads_analyze_search_terms or fetching directly with arguments. This guides the agent on when to supply which parameters, and the reference to the sibling tool for analysis clarifies the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_render_weekly_group_reportARead-onlyInspect
User-facing render tool for Google Ads visual weekly reports. Use this directly for prompts like 'show me a Google Ads report', 'generate a Google Ads dashboard', or 'show 7/30/90-day Google Ads performance'. Do not first call google_ads_get_weekly_group_report unless you already need raw data for a non-visual answer; when this visual report renders, keep any assistant text to a brief confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Inclusive report end date in YYYY-MM-DD format when reportPayload is not supplied. Defaults to today. | |
| pageSize | No | MCP delivery page size for reporting groups when reportPayload is not supplied. Defaults to 5, max 10. | |
| pageToken | No | Opaque cursor returned by a previous google_ads_get_weekly_group_report call to continue reading groups. | |
| customerId | No | Optional 10-digit Google Ads customer ID to analyze when reportPayload is not supplied. | |
| lookbackDays | No | Size of the current and prior comparison windows in days. Defaults to 7, maximum 90. | |
| reportPayload | No | The structuredContent object returned by google_ads_get_weekly_group_report, or a wrapper object containing that payload such as a prior render result or channel payload. | |
| advertiserName | No | Optional advertiser name when reportPayload is not supplied. | |
| advertiserContextId | No | Optional saved advertiser context ID when reportPayload is not supplied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context that this is a visual render tool and advises to keep text brief, which is consistent and adds value beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and every sentence provides essential guidance with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, nested objects, many siblings), the description is complete enough for an agent to understand when and how to use it. It covers purpose, usage guidelines, and parameter linkage, though it could briefly mention the output format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds value by specifying that reportPayload is the structuredContent object from google_ads_get_weekly_group_report, linking the parameters to the data flow.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'User-facing render tool for Google Ads visual weekly reports' and provides example prompts like 'show me a Google Ads report'. It distinguishes itself from the sibling tool google_ads_get_weekly_group_report by stating when not to call the other tool first.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to use this tool for visual reports and not to call google_ads_get_weekly_group_report unless raw data is needed. It also advises to keep assistant text brief, providing clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
google_ads_searchARead-onlyInspect
Advanced expert tool that runs a bounded, validated Google Ads search over an approved resource using an allowlisted field set instead of raw GAQL. Supports criteria/settings exports for campaign bidding, targeting vs observation settings, audience bid modifiers, device/daypart/location bid adjustments, and RSA asset pinning/performance. Prefer higher-level workflow tools for reporting, diagnostics, and user-facing analysis prompts.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional row limit. Defaults to 50, maximum 200. | |
| where | No | Optional bounded GAQL filter fragments using only allowed fields for the selected resource. Maximum 10. | |
| fields | Yes | Allowlisted Google Ads field names for the selected resource. Maximum 20. | |
| orderBy | No | Optional bounded GAQL order clauses like metrics.clicks DESC. Maximum 3. | |
| resource | Yes | Approved Google Ads resource to search. | |
| customerId | No | Optional 10-digit Google Ads customer ID to query. If omitted, the most recent Google Ads customer from session memory is used when available. | |
| loginCustomerId | No | Optional 10-digit manager account customer ID for manager-scoped access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, openWorldHint. The description adds behavioral details like bounded search, validated, allowlisted fields, and parameter limits (max 200 rows, max 10 filters, etc.), enhancing transparency beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, fitting key information in limited space. It front-loads the purpose. Could be slightly more concise, but overall it is well-structured and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and thorough annotations, the description covers all necessary facets: purpose, constraints, when to use, and behavioral traits. No gaps are apparent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description does not add new semantic meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is an advanced tool for bounded, validated Google Ads searches using allowlisted fields, and distinguishes itself from higher-level workflow tools for reporting and diagnostics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (criteria/settings exports, bidding, targeting) and advises against using it for reporting, directing to other tools, providing clear alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_analyze_campaignARead-onlyInspect
Data workflow for LinkedIn campaign analysis. Resolves a campaign by name, compares campaign performance across trailing windows, and returns a compact analysis artifact with top creative rows. Video campaigns include video-view, completion-rate, and cost-per-view guidance alongside core spend and click metrics. For the user-facing visual dashboard, prefer linkedin_render_campaign_analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Campaign name query to resolve, such as US prospects. | |
| endDate | Yes | Inclusive analysis end date in YYYY-MM-DD format. | |
| windows | No | Trailing window sizes in days, such as [7, 30, 90]. Defaults to [7, 30, 90]. | |
| accountId | No | Optional LinkedIn ad account ID to narrow the search. If omitted, the recent session account is used when available. | |
| detailRowCount | No | Maximum number of creative rows to include in the compact analysis. Defaults to 5, max 20. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so no addition needed for safety. The description adds transparency about output specifics, such as video metrics included, but does not discuss potential side effects like rate limits or data staleness. It is consistent with annotations, no contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is comprised of two focused sentences. The first covers the core workflow, the second adds video-specific details and usage guidance. Every sentence provides essential information without redundancy or fluff. Front-loaded with primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The presence of an output schema covers return value documentation. The description outlines the artifact's content (top creative rows, video metrics) sufficiently. It could mention edge cases (e.g., unresolved campaign, no data), but given the complexity and sibling differentiation, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already described. The description adds value by contextualizing parameters within the workflow (e.g., 'compares performance across trailing windows' explains the windows parameter, 'returns top creative rows' explains detailRowCount). This integration provides meaning beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it resolves a LinkedIn campaign by name, compares performance across trailing windows, and returns a compact analysis with top creative rows. It also explicitly distinguishes itself from the sibling tool linkedin_render_campaign_analysis by noting the latter is for the user-facing dashboard. The verb and resource are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to prefer an alternative (linkedin_render_campaign_analysis for the visual dashboard). However, it does not mention when NOT to use this tool, such as prerequisites (e.g., requiring an ad account) or scenarios where the compact analysis is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_audit_campaign_targetingARead-onlyInspect
Audits one LinkedIn campaign's targeting setup, summarizing included and excluded facets, audience expansion, objective alignment, and practical marketer recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Optional LinkedIn ad account ID. If omitted, recent session memory is used when available. | |
| campaignId | No | Optional LinkedIn campaign ID. If omitted, the most recent LinkedIn campaign from session memory is used when available. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by detailing the comprehensive output (included/excluded facets, audience expansion, alignment, recommendations). No contradictions. It does not disclose additional behavioral traits like rate limits, but the annotations cover the most critical aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the purpose and lists key components. Every element earns its place; no wasted words. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and the presence of an output schema, the description sufficiently covers what the tool does. It could benefit from mentioning that it uses session memory for defaults, but this is already in the schema. Overall, it is complete enough for an agent to understand.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the two optional parameters (accountId, campaignId). The description does not add any extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'audits' and the resource 'a LinkedIn campaign's targeting setup', specifying the output includes included/excluded facets, audience expansion, objective alignment, and recommendations. It distinguishes this tool from siblings like 'linkedin_get_targeting_insights' and 'linkedin_analyze_campaign' by focusing on auditing targeting setup specifically.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for auditing campaign targeting but does not provide explicit guidance on when to use this tool versus alternatives like 'linkedin_get_targeting_insights' or 'linkedin_analyze_campaign'. No exclusions or prerequisites are mentioned. The optional parameters and session memory hint is present in schema, not in description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_compare_creative_performanceARead-onlyInspect
Schema revision: creative-comparison-account-tabs-v1. Preferred structured LinkedIn creative-metrics tool for one or more campaigns. Compares LinkedIn creative-level performance across trailing windows ending on a specific date. Video campaigns surface video views, view rate, completion rate, and cost per view alongside spend and click metrics. Use this for creative follow-up instead of falling back to linkedin_get_creatives inventory plus generic CREATIVE analytics. Pass accountId for broad multi-campaign creative analysis. Pass campaignIds, or campaignId without accountId, only when the user explicitly wants a campaign-specific scope. If all scope inputs are omitted, the most recent LinkedIn campaign from session memory is used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | Yes | Inclusive comparison end date in YYYY-MM-DD format. | |
| windows | No | Trailing window sizes in days, such as [7, 30]. Defaults to [7, 30]. | |
| pageSize | No | MCP delivery page size for creative comparison rows. Defaults to 50, max 200. | |
| accountId | No | Optional numeric LinkedIn Ad Account ID. Pass this for a bounded multi-campaign creative comparison; accountId takes precedence over a lone campaignId. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_compare_creative_performance call to continue reading rows. | |
| campaignId | No | Optional numeric LinkedIn campaign ID to analyze. If omitted, the most recent LinkedIn campaign from session memory is used when available. When accountId is also supplied, accountId takes precedence over a lone campaignId; use campaignIds for explicit campaign scope. | |
| campaignIds | No | Optional numeric LinkedIn campaign IDs to analyze together as one campaign set. Use this for cross-campaign creative comparison within the same account. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: it compares trailing windows, surfaces video-specific metrics, and describes default windows/page sizes. No contradictions. Annotations already cover readOnly and openWorld, so description supplements well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Relatively concise at 7 sentences, front-loaded with purpose. The 'Schema revision' opening sentence is awkward and adds little value, but overall structure is good and each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 params, output schema exists), the description covers scope, fallback behavior, metric highlights, and alternatives. Lacks detail on output format, but output schema compensates. Good completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions, but description adds strategic value by explaining the when/why of accountId vs campaignId vs campaignIds, and defaults for omitted parameters. Provides meaning beyond raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it compares LinkedIn creative-level performance across trailing windows, and distinguishes from sibling tool linkedin_get_creatives by positioning itself as the preferred creative follow-up tool. Specific verb and resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool vs alternatives ('instead of falling back to linkedin_get_creatives...'), explains parameter scoping rules for accountId vs campaignId(s), and describes default behavior when inputs are omitted. Very clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_compare_performance_windowsARead-onlyInspect
Raw data tool for comparing LinkedIn performance across two explicit date windows. Returns validated absolute and percentage deltas for core metrics. Do not call this directly for user-facing prompts like 'generate a report' or 'show a report'; prefer linkedin_render_weekly_group_report for broad account/ad-account reports. Defaults to account scope; pass campaignId to narrow to one campaign. If accountId is omitted, the most recent LinkedIn account from session memory is used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Optional LinkedIn ad account ID to compare. If omitted, the most recent LinkedIn account from session memory is used when available. | |
| campaignId | No | Optional LinkedIn campaign ID to narrow the comparison to a single campaign. | |
| currentEndDate | Yes | End date for the current window in YYYY-MM-DD format. | |
| currentStartDate | Yes | Start date for the current window in YYYY-MM-DD format. | |
| comparisonEndDate | Yes | End date for the comparison window in YYYY-MM-DD format. | |
| comparisonStartDate | Yes | Start date for the comparison window in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly=true and destructive=false. Description adds that it returns validated deltas, defaults to account scope, and uses session memory for accountId. No contradictions, but could mention data freshness 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding distinct value: purpose+output, usage guidance, and default behavior. No filler, well front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, usage boundaries, default behavior, and parameter behavior. With output schema existing, description is sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description adds context for accountId (session memory fallback) but other parameters are straightforward from schema. Minimal value added beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it's a 'raw data tool for comparing LinkedIn performance across two explicit date windows' and specifies it returns 'validated absolute and percentage deltas'. Distinguishes from report rendering tool, making purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when not to use ('Do not call this directly for user-facing prompts') and suggests alternative ('prefer linkedin_render_weekly_group_report'). Also explains default scope and how to narrow by campaignId.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_find_campaignsARead-onlyInspect
Data tool that finds LinkedIn campaigns by name across one account or all accessible accounts, ranks likely matches, and returns compact campaign identity data for disambiguation. For the user-facing picker UI, prefer render_shared_picker.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of matches to return. Defaults to 10, max 50. | |
| query | Yes | Campaign name query, such as 'US prospects'. | |
| pageSize | No | MCP delivery page size for returned matches. Defaults to 50, max 200. | |
| statuses | No | Optional list of campaign statuses to keep, such as ACTIVE, PAUSED, or DRAFT. | |
| accountId | No | Optional ad account ID to restrict the search to a single account. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_find_campaigns call to continue reading matches. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and destructiveHint. The description adds context about ranking matches and returning compact data, which goes beyond annotations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with core purpose, no extraneous information. Every sentence contributes value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, the description doesn't need to detail returns. It covers purpose, usage alternative, and behavioral context. Annotations and sibling tools complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by mentioning 'by name' and 'across one account or all', relating to query and accountId parameters, and implies ranking and disambiguation purpose beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool finds LinkedIn campaigns by name, ranks matches, and returns compact identity data for disambiguation. It also differentiates from the UI picker (render_shared_picker).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly notes when to prefer render_shared_picker for the user-facing UI, providing clear context. It lacks explicit 'when not to use' details but the alternative is sufficient for differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_account_healthARead-onlyInspect
Marketer-friendly LinkedIn account health check covering API version posture, OAuth scopes, selected account access, campaign-group availability, targeting discovery access, and readiness recommendations.
| Name | Required | Description | Default |
|---|---|---|---|
| accountId | No | Optional LinkedIn ad account ID. If omitted, the most recent LinkedIn account from session memory is used when available. | |
| includeJwtClaims | No | When true and the bearer token is a JWT, include a safe JWT claims summary. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, and the description adds value by specifying what aspects are checked (posture, scopes, access, etc.), reinforcing the non-destructive, read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, reasonably concise sentence that lists key areas. It could be slightly more structured (e.g., bullet points) but is not overly verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and the description covering the tool's purpose and scope comprehensively, the description is complete for a health check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters well-documented. The description does not add additional parameter information, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it's a 'LinkedIn account health check' and enumerates specific areas (API version, OAuth, account access, etc.), distinguishing it from other LinkedIn tools like linkedin_get_ad_accounts or linkedin_get_campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While 'Marketer-friendly' hints at target users and the health check implies a preliminary step, there is no explicit guidance on when to use this tool over alternatives or when not to use it. Siblings exist but no direct comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_ad_accountsARead-onlyInspect
Fetches all LinkedIn Ad Accounts the authenticated user has access to. Returns their URN ID, name, currency, and status. Use this to find the target Account ID.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of accounts to return. Defaults to 20. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description matches annotations: readOnlyHint=true (reading accounts), destructiveHint=false. Adds value by stating it requires authentication and returns specific fields. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-loaded with the action and purpose. Every word is meaningful with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter, good annotations, and an output schema, the description is fully adequate. It tells what the tool returns and why to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'count', and the schema already describes its default. Description adds no additional semantic detail beyond what schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Fetches' and resource 'LinkedIn Ad Accounts'. It specifies what is returned (URN ID, name, currency, status) and the purpose (find target Account ID). Distinct from siblings which are mostly analysis or reporting tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use this to find the target Account ID', indicating the primary use case. Though it does not mention when not to use it, the context is clear and the sibling list contains no similar listing tools for LinkedIn.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_ad_analyticsARead-onlyInspect
Raw LinkedIn ad analytics data tool for focused follow-up metric pulls at account, campaign, or creative level. Do not use this as the primary response for broad user-facing prompts like 'generate a report', 'show my LinkedIn report', or 'dashboard'; prefer linkedin_render_weekly_group_report for account/ad-account reports, linkedin_render_campaign_analysis for campaign analysis, or linkedin_render_creative_comparison for creative-performance reports. When accountId or campaignId is omitted, recent LinkedIn session selections are used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Optional LinkedIn analytics fields to request, such as reach, approximateUniqueImpressions, costInLocalCurrency, dateRange, likes, shares, landingPageClicks, externalWebsiteConversions, or pivotValues. Up to 20. The reach alias maps to LinkedIn's approximateUniqueImpressions metric. | |
| endDate | No | End Date (YYYY-MM-DD) for historical analytics. If empty, defaults to today. | |
| pageSize | No | MCP delivery page size for analytics rows. Defaults to 50, max 200. | |
| accountId | No | Ad Account ID. Required for ACCOUNT analytics, and optional for CAMPAIGN analytics if you want grouped campaign rows for an account. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_get_ad_analytics call to continue reading analytics rows. | |
| startDate | No | Start Date (YYYY-MM-DD) for historical analytics. If empty, defaults to 30 days ago. | |
| campaignId | No | Campaign ID. Required for CREATIVE analytics, and supported for CAMPAIGN analytics to fetch one campaign directly. | |
| creativeId | No | Optional Creative ID to scope creative analytics to one creative. | |
| entityLevel | No | The reporting pivot to query. | CAMPAIGN |
| timeGranularity | No | ALL, DAILY, MONTHLY, or YEARLY | DAILY |
| campaignNameLimit | No | For CAMPAIGN entityLevel only: max number of unique campaign IDs to name-resolve. Defaults to 30, max 100. | |
| resolveCampaignNames | No | For CAMPAIGN entityLevel only: when true, attempts to resolve campaign names from campaign IDs. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, establishing the tool as safe and read-only. The description adds context about the tool's nature ('raw data for focused follow-up'), default date behavior (startDate defaults to 30 days ago, endDate to today), and session context fallback. This goes beyond annotations without contradicting them, though it omits details like pagination or rate limits. A 4 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, followed by a caution and fallback rule. Every sentence is necessary and no wording is wasted. It is concise and structured effectively.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 parameters, 3 entity levels, output schema present), the description adequately covers the main use case (raw data pulls), exclusions (broad reports), fallback (session selections), and default date behavior. It does not need to explain return values since an output schema exists. The description is complete enough for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (12 parameters all have descriptions). The description adds no new parameter-level info beyond the schema, but it provides helpful context such as 'The reach alias maps to LinkedIn's approximateUniqueImpressions metric' and explains the interplay between entityLevel, accountId, and campaignId. While useful, this is moderate added value over the schema, so a 3 (baseline) is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is 'Raw LinkedIn ad analytics data tool for focused follow-up metric pulls at account, campaign, or creative level,' providing a specific verb, resource, and granularity. It distinguishes from siblings by explicitly naming linkedin_render_weekly_group_report, linkedin_render_campaign_analysis, and linkedin_render_creative_comparison as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Do not use this as the primary response for broad user-facing prompts like "generate a report"...' and lists three alternative tools. It also clarifies fallback behavior: 'When accountId or campaignId is omitted, recent LinkedIn session selections are used when available.' This provides clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_ad_demographicsARead-onlyInspect
Fetches LinkedIn professional demographic reporting, grouped by a demographic pivot such as industry, seniority, job title, region, or company size. Results always include pivotValues, and default to impressions plus clicks unless custom fields are supplied. For MEMBER_COMPANY pivots, organization URNs/IDs are returned as stable keys and may not resolve to public names. When accountId or campaignId is omitted, recent LinkedIn session selections are used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Optional LinkedIn analytics fields. pivotValues is always included automatically. If omitted, the tool returns pivotValues, impressions, and clicks. Up to 20 total fields. | |
| endDate | No | End Date (YYYY-MM-DD) for historical analytics. If empty, defaults to today. | |
| pageSize | No | MCP delivery page size for demographic rows. Defaults to 50, max 200. | |
| accountId | No | Optional Ad Account ID to scope the demographic report. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_get_ad_demographics call to continue reading demographic rows. | |
| startDate | No | Start Date (YYYY-MM-DD) for historical analytics. If empty, defaults to 30 days ago. | |
| campaignId | No | Optional Campaign ID to scope the demographic report. | |
| creativeId | No | Optional Creative ID to scope the demographic report. | |
| timeGranularity | No | ALL, DAILY, MONTHLY, or YEARLY | DAILY |
| companyNameLimit | No | Legacy alias for companyNamePageSize. Max 200. Default 100. | |
| demographicPivot | No | The demographic dimension to group by. | MEMBER_INDUSTRY |
| companyNameCursor | No | For MEMBER_COMPANY only: opaque cursor for organization-name resolution paging, returned by a previous call. Use this to fetch additional resolution pages. | |
| companyNamePageSize | No | For MEMBER_COMPANY only: organization IDs to resolve per call in paged mode. Max 200. Setting this enables paged resolution mode. | |
| resolveCompanyNames | No | For MEMBER_COMPANY only: when true, attempts to resolve organization names via LinkedIn Organizations API. Defaults to true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds value beyond annotations by disclosing that pivotValues are always included, default fields are impressions and clicks, and that for MEMBER_COMPANY pivots, organization URNs may not resolve to public names. It also mentions session-based fallback for account/campaign IDs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, front-loaded with the core purpose, and each sentence adds necessary detail without redundancy. It efficiently covers the main behavior, defaults, and special cases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 14 parameters and the presence of an output schema, the description effectively covers the tool's purpose, default fields, special MEMBER_COMPANY behavior, and session fallback. It is complete enough for an agent to understand when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds meaning by explaining the default behavior when fields are omitted and the special handling for MEMBER_COMPANY parameters, providing context that the schema alone does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies it fetches LinkedIn demographic reporting grouped by a demographic pivot, listing specific examples like industry, seniority, etc. It distinguishes from sibling tools by focusing on demographic breakdowns and mentioning default fields like impressions and clicks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides context such as default fields and special behavior for MEMBER_COMPANY pivots, but does not explicitly state when to use this tool versus alternatives like linkedin_get_ad_analytics or other demographic-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_campaign_groupsARead-onlyInspect
Builds a LinkedIn campaign-group report with current-window performance, linked campaigns, and pacing analysis against daily or total budgets when the API exposes that data.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Inclusive report end date in YYYY-MM-DD format. Defaults to today. | |
| pageSize | No | MCP delivery page size for campaign groups. Defaults to 50, max 200. | |
| accountId | No | Optional LinkedIn ad account ID. If omitted, the most recent LinkedIn account from session memory is used when available. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_get_campaign_groups call. | |
| startDate | No | Inclusive report start date in YYYY-MM-DD format. Defaults to 30 days before endDate. | |
| includeCampaigns | No | When true, include compact campaign rows under each LinkedIn campaign group. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true and destructiveHint=false, so the description does not need to repeat safety. It adds a behavioral caveat about API data availability. However, it does not disclose pagination behavior or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with 25 words. It front-loads the purpose and adds a caveat. Could be considered efficiently concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and full parameter descriptions, the tool is well-documented. The description adds context about API-dependent behavior. However, it lacks mention of authentication requirements or prerequisite account setup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with individual parameter descriptions. The description does not add significant meaning beyond the schema, so baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it builds a campaign-group report with performance, linked campaigns, and pacing analysis. It specifies a specific resource (campaign group) and action (builds report). However, it does not explicitly differentiate from similar tools like linkedin_get_weekly_group_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for performance analysis of campaign groups, but it does not provide explicit guidance on when to use this tool versus alternatives. The phrase 'when the API exposes that data' hints at limitations but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_campaignsARead-onlyInspect
Fetches LinkedIn campaigns within a specific Ad Account. Supports MCP-friendly cursor pagination to preserve context window. If accountId is omitted, the most recent LinkedIn account from session memory is used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Legacy page size. Max 50. Default 25. Prefer pageSize/cursor instead. | |
| start | No | Legacy offset pagination. Start at 0 and increment by count. Prefer cursor instead. | |
| cursor | No | Opaque cursor returned by a previous linkedin_get_campaigns call. Preferred over start/count. | |
| pageSize | No | Campaigns per page when cursor is absent. Max 50. Default 25. | |
| accountId | No | Optional numeric ID of the Ad Account (without the urn prefix). If omitted, the most recent LinkedIn account from session memory is used when available. | |
| includeRaw | No | When true, include raw LinkedIn campaign objects for the returned page. Defaults to false. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, destructiveHint), the description adds that it uses MFP-friendly cursor pagination to preserve context window and defaults to session memory for accountId. This enriches behavioral understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The purpose is front-loaded, and pagination and accountId behavior follow succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (6 optional params, output schema exists, annotations cover safety), the description is adequate. It covers purpose, pagination, and account fallback. Minor gaps like error handling or permissions are acceptable with annotations and output schema present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage, baseline is 3. The description adds value by explaining the accountId fallback and the benefit of cursor pagination, which is not in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches LinkedIn campaigns within a specific Ad Account. The purpose is specific and actionable, but it does not explicitly differentiate from sibling tools like linkedin_find_campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on how to use the cursor pagination and the accountId fallback, but lacks explicit when-to-use versus alternatives. Usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_connector_diagnosticsARead-onlyInspect
Returns connector diagnostic details for auth posture and optional live LinkedIn probes. Use this when debugging missing tools, OAuth scope issues, or unresolved company names.
| Name | Required | Description | Default |
|---|---|---|---|
| includeJwtClaims | No | When true and the bearer token is a JWT, includes a safe JWT claim summary (iss/sub/aud/scope/scp/exp/iat). | |
| runLinkedInProbe | No | When true, performs lightweight LinkedIn API probe calls using the current token. | |
| sampleOrganizationId | No | Optional organization ID to test /organizations/{id} access. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint, and the description adds valuable behavioral context: it returns diagnostic details and performs optional live LinkedIn probes. No contradiction; fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, followed by usage context. Every word serves a purpose; no redundancy or wasted text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With three optional parameters, no required params, an output schema, and annotations, the description is nearly complete. It could briefly note the need for a valid LinkedIn auth token, but this is implied and not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema provides 100% description coverage for all three parameters, so the description adds no additional meaning beyond what is already in the schema. Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns diagnostic details for auth posture and optional live LinkedIn probes, and lists specific debugging scenarios (missing tools, OAuth scope issues, unresolved company names), distinguishing it from sibling diagnostic tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use the tool ('Use this when debugging...'), providing clear context and three specific use cases. Does not exclude alternatives but sufficiently guides selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_creativesARead-onlyInspect
Searches creatives within a specific LinkedIn Ad Account. This is an inventory/discovery tool for creative IDs, names, statuses, and campaign associations. Do not use it as the primary creative performance tool when a user asks for impressions, clicks, spend, or creative winners/losers; prefer linkedin_compare_creative_performance or linkedin_render_creative_comparison for that. If accountId is omitted, the most recent LinkedIn account from session memory is used when available.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | Cursor page size. LinkedIn caps this at 100. Defaults to 25. | |
| accountId | No | Optional numeric ID of the Ad Account that owns the creatives. If omitted, the most recent LinkedIn account from session memory is used when available. | |
| pageToken | No | Cursor token returned by a previous linkedin_get_creatives call. | |
| sortOrder | No | Sort order for creative ID results. | ASCENDING |
| campaignIds | No | Optional list of Campaign IDs to filter creatives by campaign. If omitted, the most recent LinkedIn campaign from session memory is used when available. | |
| creativeIds | No | Optional list of Creative IDs to fetch directly. | |
| isTestAccount | No | Optional filter for test-account creatives. | |
| intendedStatuses | No | Optional list of creative statuses such as ACTIVE, DRAFT, PAUSED, ARCHIVED, or CANCELED. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about its inventory/discovery nature and default account/campaign memory behavior, which is useful beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no wasted words. The first states purpose, the second clarifies boundaries and alternatives, and the third provides fallback guidance. Well structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high schema coverage and presence of an output schema, the description covers purpose, usage boundaries, and default behaviors adequately for an 8-parameter tool with no required parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter well-documented. The description reinforces the default behavior for accountId and campaignIds but does not add significant new semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches creatives within a LinkedIn Ad Account and specifies it is an inventory/discovery tool for creative IDs, names, statuses, and campaign associations. This distinguishes it from performance-related sibling tools like linkedin_compare_creative_performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs not to use this tool for performance queries and directs to linkedin_compare_creative_performance or linkedin_render_creative_comparison instead. Also explains fallback behavior when accountId is omitted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_targeting_insightsARead-onlyInspect
Targeting explorer for LinkedIn Ads. Returns a facet catalog and can run live adTargetingEntities discovery for one facet or a supplied set of entity URNs.
| Name | Required | Description | Default |
|---|---|---|---|
| facet | No | Optional targeting facet short name or URN, such as seniorities, job_functions, industries, companies, or urn:li:adTargetingFacet:buyerGroups. | |
| query | No | Optional typeahead query to narrow live targeting entities within the selected facet. | |
| pageSize | No | MCP delivery page size for returned targeting entities. Defaults to 25, max 100. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_get_targeting_insights call. | |
| entityUrns | No | Optional list of targeting entity URNs to resolve directly. | |
| localeCountry | No | Optional two-letter country code for targeting discovery. | |
| localeLanguage | No | Optional two-letter language code for targeting discovery. Defaults to en. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. Description adds context about returning a facet catalog and performing live discovery, which clarifies the tool's dual mode behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Efficient and clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With good annotations, full schema coverage, and an output schema present, the description is adequate. It could benefit from a note on when to use facet vs entityUrns, but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with good descriptions. The description adds overall context but does not enhance understanding of individual parameters beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it's a targeting explorer that returns a facet catalog and can run live adTargetingEntities discovery for one facet or entity URNs. This is specific and distinguishes it from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance. The description implies a use case but does not contrast with alternative tools like linkedin_audit_campaign_targeting.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_weekly_campaign_creativesARead-onlyInspect
Fetches creative rows for one campaign inside a LinkedIn weekly report using the exact current and comparison windows, so the MCP app can nest creatives under each campaign without overloading the main report payload.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | MCP delivery page size for creative rows. Defaults to 10, max 25. | |
| accountId | No | Optional LinkedIn ad account ID for the campaign. Used for the newer account-scoped creatives endpoint. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_get_weekly_campaign_creatives call. | |
| campaignId | Yes | LinkedIn campaign ID whose creatives should be returned. | |
| campaignName | No | Optional campaign name for display continuity. | |
| campaignFormat | No | Optional campaign format for format-aware creative rendering. | |
| currentEndDate | Yes | Current reporting window end date in YYYY-MM-DD format. | |
| currentStartDate | Yes | Current reporting window start date in YYYY-MM-DD format. | |
| comparisonEndDate | Yes | Comparison reporting window end date in YYYY-MM-DD format. | |
| comparisonStartDate | Yes | Comparison reporting window start date in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is clear. The description adds value by explaining the use of exact date windows and the purpose of avoiding overload, providing behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the action, context, and purpose. It is front-loaded with the verb and contains no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 10 parameters and the availability of an output schema, the description adequately explains the tool's role within the app (nesting creatives under campaigns). It could be more explicit about pagination behavior, but overall provides good context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 10 parameters have descriptions in the input schema (100% coverage), so the tool description does not add additional meaning. The description itself is generic regarding parameters, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool fetches creative rows for one campaign within a LinkedIn weekly report using specific date windows. It differentiates from sibling tools like linkedin_get_creatives by specifying the context of a weekly report with comparison windows.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (fetching creatives for nesting under campaigns in a weekly report) but does not explicitly state when not to use it or mention alternatives like linkedin_get_creatives for simpler queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_get_weekly_group_report_group_campaignsARead-onlyInspect
Fetches the full paginated campaign rows for one reporting group within a LinkedIn weekly grouped report, while keeping the main report summary compact.
| Name | Required | Description | Default |
|---|---|---|---|
| pageSize | No | MCP delivery page size for campaign rows. Defaults to 25, max 50. | |
| accountId | Yes | LinkedIn ad account ID. | |
| groupName | Yes | Reporting group name whose campaign rows should be returned. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_get_weekly_group_report_group_campaigns call. | |
| advertiserName | No | Optional advertiser name fallback. | |
| currentEndDate | Yes | Current reporting window end date in YYYY-MM-DD format. | |
| currentStartDate | Yes | Current reporting window start date in YYYY-MM-DD format. | |
| comparisonEndDate | No | Optional comparison window end date in YYYY-MM-DD format. | |
| advertiserContextId | No | Optional saved advertiser ID. | |
| comparisonStartDate | No | Optional comparison window start date in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true; the description adds pagination behavior ('full paginated campaign rows'), which goes beyond the annotations and clarifies the tool's read-only and iterative nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that captures purpose, pagination, and effect. No unnecessary words; front-loaded with verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and full parameter descriptions, the description sufficiently explains the tool's role as a detail fetcher. It could benefit from mentioning relationship to the main report more explicitly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (all parameters described in schema). The description adds no additional meaning beyond 'paginated', which is already implied by pageSize/pageToken parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description indicates specific verb 'Fetches' and resource 'campaign rows for one reporting group', clearly distinguishing from sibling tools like 'linkedin_get_weekly_group_report' which returns the main report summary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'while keeping the main report summary compact' implies when to use this tool (to avoid overloading the main report). However, no explicit when-not-to-use or alternative comparisons are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_render_campaign_analysisARead-onlyInspect
Preferred user-facing LinkedIn campaign analysis tool. Renders the LinkedIn campaign analysis dashboard and can either take analysisPayload from linkedin_analyze_campaign or fetch the analysis directly when called with query/endDate arguments.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Campaign name query to resolve when analysisPayload is not supplied. | |
| endDate | No | Inclusive analysis end date in YYYY-MM-DD format when analysisPayload is not supplied. | |
| windows | No | Trailing window sizes in days, such as [7, 30, 90], when analysisPayload is not supplied. | |
| accountId | No | Optional LinkedIn ad account ID to narrow the search when analysisPayload is not supplied. | |
| detailRowCount | No | Maximum number of creative rows to include when analysisPayload is not supplied. | |
| analysisPayload | No | The structuredContent object returned by linkedin_analyze_campaign. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already convey readOnlyHint=true and destructiveHint=false. The description adds that it 'renders the dashboard,' implying a read operation, and the two modes. Beyond that, no additional behavioral traits (e.g., rate limits, side effects) are disclosed. Given annotation coverage, a score of 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with purpose, and every sentence serves a clear role. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, annotations, and an output schema (though not shown here), the description adequately covers the two modes. It could elaborate on what 'render' entails (e.g., UI output), but the openWorldHint suggests external effects. Overall, sufficient for an agent's decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover all parameters (100% coverage), but the description adds critical context: parameters query, endDate, etc. are used only when analysisPayload is not supplied. This clarifies mutual exclusivity and the tool's dual-mode behavior, adding value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it renders the LinkedIn campaign analysis dashboard, distinguishing it from sibling tools like linkedin_analyze_campaign (which produces the payload) and other render tools. The phrase 'preferred user-facing tool' adds clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains two usage modes: taking analysisPayload from linkedin_analyze_campaign or fetching directly with query/endDate arguments. This provides clear context, though it does not explicitly list scenarios when to use this tool over others, which is acceptable given sibling tools are for different platforms.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_render_creative_comparisonARead-onlyInspect
Schema revision: creative-comparison-account-tabs-v1. Preferred user-facing LinkedIn creative performance tool. Use this when a user asks for LinkedIn creative performance, creative winners/losers, or a visual creative report. Renders the LinkedIn creative comparison dashboard and can either take comparisonPayload from linkedin_compare_creative_performance or fetch the comparison directly. Pass accountId for broad multi-campaign creative analysis. Pass campaignIds, or campaignId without accountId, only when the user explicitly asks for a campaign-specific scope.
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | Inclusive comparison end date in YYYY-MM-DD format when comparisonPayload is not supplied. | |
| windows | No | Trailing window sizes in days, such as [7, 30], when comparisonPayload is not supplied. | |
| pageSize | No | MCP delivery page size for creative comparison rows when comparisonPayload is not supplied. Defaults to 50, max 200. | |
| accountId | No | Optional numeric LinkedIn Ad Account ID. Pass this for a bounded multi-campaign creative report; accountId takes precedence over a lone campaignId on the visual renderer. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_compare_creative_performance call to continue reading rows. | |
| campaignId | No | Optional campaign ID to compare when comparisonPayload is not supplied. For this visual renderer, accountId takes precedence over a lone campaignId so broad account-level prompts are not narrowed by stale session memory; use campaignIds for explicit campaign scope. | |
| campaignIds | No | Optional numeric LinkedIn campaign IDs to compare as one campaign set when comparisonPayload is not supplied. | |
| comparisonPayload | No | The structuredContent object returned by linkedin_compare_creative_performance. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds behavioral context: it can either accept a pre-fetched payload or fetch data directly, explains precedence of accountId over campaignId, and details pagination with pageSize and pageToken. No contradictions 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (3 sentences) but dense with actionable information. It is front-loaded with purpose and usage, and every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, 100% schema coverage, output schema presence, and annotations, the description covers all necessary aspects: purpose, modes of operation, parameter selection criteria, and relationship with linkedin_compare_creative_performance. It is fully complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for each parameter. The description adds interpretative guidance, such as accountId taking precedence over campaignId, and pageSize max 200, which is not in schema. It provides strategic context for parameter selection beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it renders the LinkedIn creative comparison dashboard and is the preferred user-facing tool for creative performance, winners/losers, or visual reports. It clearly distinguishes from siblings like linkedin_compare_creative_performance by specifying it is the visual renderer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use this when a user asks for LinkedIn creative performance...' and gives conditional parameter guidance: pass accountId for broad analysis, campaignIds or campaignId only for explicit campaign scope. It also mentions it can take comparisonPayload from linkedin_compare_creative_performance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
linkedin_render_weekly_group_reportARead-onlyInspect
Preferred user-facing LinkedIn Ads report tool. Use this first for broad report requests such as 'generate a report for my Thorogood LinkedIn ads for the past 7 and 30 days', 'show my LinkedIn report', 'weekly report', 'dashboard', or 'visual report'. It renders the grouped report MCP app and can either take reportPayload from linkedin_get_weekly_group_report or fetch fresh grouped data directly. For multi-window requests like 7 and 30 days, treat each requested window as its own report view and compare it only with the immediately preceding same-length period unless the user explicitly asks for a non-like-for-like comparison.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional natural-language advertiser or account query when reportPayload is not supplied. | |
| pageSize | No | MCP delivery page size for reporting groups when reportPayload is not supplied. Defaults to 5, max 10. | |
| accountId | No | LinkedIn ad account ID when reportPayload is not supplied. | |
| pageToken | No | Opaque cursor returned by a previous linkedin_get_weekly_group_report call to continue reading groups. | |
| reportPayload | No | The structuredContent object returned by linkedin_get_weekly_group_report, or a wrapper object containing that payload such as a prior render result or channel payload. | |
| advertiserName | No | Optional advertiser name fallback when reportPayload is not supplied. | |
| currentEndDate | No | Current reporting window end date in YYYY-MM-DD format when reportPayload is not supplied. | |
| currentStartDate | No | Current reporting window start date in YYYY-MM-DD format when reportPayload is not supplied. | |
| comparisonEndDate | No | Optional comparison window end date in YYYY-MM-DD format. | |
| advertiserContextId | No | Optional saved advertiser ID when reportPayload is not supplied. | |
| comparisonStartDate | No | Optional comparison window start date in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context: it can either accept a pre-fetched reportPayload or fetch fresh data, and it specifies the like-for-like comparison rule for multi-window requests. The description enhances transparency without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a medium-length paragraph that front-loads the main purpose. However, it includes verbose example queries and slightly repetitious context about parameter usage. It could be more concise while preserving key guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, nested objects, output schema present), the description explains the overall workflow and comparison logic but does not cover error handling or parameter conflicts. It is fairly complete but leaves some gaps for a tool with this many parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 provides high-level context for parameter groups (e.g., 'when reportPayload is not supplied') but does not add significant detail beyond what the schema already provides for individual parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is the 'preferred user-facing LinkedIn Ads report tool' and provides specific example queries like 'generate a report...for the past 7 and 30 days'. It distinguishes from sibling tools by noting it is preferred for broad report requests and explains how it relates to linkedin_get_weekly_group_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'Use this first for broad report requests' and provides example use cases. It mentions when to use it vs. alternatives (e.g., can take reportPayload from linkedin_get_weekly_group_report) and gives specific comparison logic for multi-window requests. However, it does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
paid_ads_render_weekly_dashboardARead-onlyInspect
Preferred user-facing cross-channel report tool. Use this directly when the user asks for one report, dashboard, or visual report covering both Google Ads and LinkedIn Ads, including prompts like 'generate a report for my Thorogood Google and LinkedIn ads for the past 7 days up to 25 May' or 'past 7 and 30 days up to 25 May'. It renders the combined weekly dashboard MCP app and accepts exact historical date ranges through endDate plus lookbackDays or windows, so do not fetch raw data first just to satisfy a historical week ending date. It can fetch fresh grouped data for the requested platforms and supports selectable report windows such as [7, 30]. Each selected window compares with its immediately preceding same-length period; do not compare 7 days against 30 days unless the user explicitly asks for that non-like-for-like analysis. When this widget renders, keep assistant text to a brief confirmation.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional advertiser or account search text used to resolve each platform account when a recent selection is not available. | |
| endDate | No | Exact inclusive end date for the visual dashboard in YYYY-MM-DD format, including historical report prompts such as 'up to 25 May'. Defaults to today. | |
| windows | No | Optional selectable trailing report windows in days, such as [7, 30]. For prompts like 'past 7 and 30 days up to 25 May', use the shortest window for the initial view and compare that view with the immediately preceding same-length period; keep the remaining windows available for refresh/range selection. For a single-window prompt like 'past 7 days up to 25 May', omit this or pass [7]. | |
| pageSize | No | MCP delivery page size for reporting groups when fetching fresh data. Defaults to 5, max 10. | |
| pageToken | No | Opaque cursor returned by a previous weekly grouped report call to continue reading groups. | |
| platforms | No | Ad platforms to include when fetching fresh data. Defaults to both LinkedIn Ads and Google Ads when no prebuilt payloads are supplied. | |
| lookbackDays | No | Size of the current and prior comparison windows in days when fetching fresh data. Use 7 for prompts like 'past 7 days up to 25 May'. Defaults to 7, maximum 90. | |
| advertiserName | No | Optional saved advertiser name used to resolve platform accounts. | |
| linkedInAccountId | No | LinkedIn Ads account ID to use when fetching fresh LinkedIn data. | |
| advertiserContextId | No | Optional saved advertiser context ID used to resolve platform accounts. | |
| googleAdsCustomerId | No | Google Ads customer ID to use when fetching fresh Google Ads data. | |
| linkedInReportPayload | No | The structuredContent object returned by linkedin_get_weekly_group_report, or a wrapper object containing that payload such as a prior render result or channel payload. | |
| googleAdsReportPayload | No | The structuredContent object returned by google_ads_get_weekly_group_report, or a wrapper object containing that payload such as a prior render result or channel payload. | |
| linkedInCurrentEndDate | No | Optional LinkedIn-specific current window end date in YYYY-MM-DD format. If omitted, endDate is used. | |
| googleAdsLoginCustomerId | No | Optional Google Ads manager login customer ID. | |
| linkedInCurrentStartDate | No | Optional LinkedIn-specific current window start date in YYYY-MM-DD format. If omitted, endDate and lookbackDays are used. | |
| linkedInComparisonEndDate | No | Optional LinkedIn-specific comparison window end date in YYYY-MM-DD format. | |
| linkedInComparisonStartDate | No | Optional LinkedIn-specific comparison window start date in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds context about fetching fresh grouped data, comparison logic (each window compares with preceding same-length period), and that it renders a combined dashboard. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single well-structured paragraph. It is fairly long but necessary to convey the detailed usage rules. Could be slightly more concise, but overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (18 parameters, no required params, nested objects), the description covers main usage scenarios, comparison logic, and how to handle prebuilt payloads. Output schema exists, so return values are covered. Provides enough completeness for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds additional semantics by explaining usage patterns for endDate, lookbackDays, windows, and how to handle multi-window prompts, providing value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Preferred user-facing cross-channel report tool' for combining Google Ads and LinkedIn Ads, distinguishing it from platform-specific siblings like linkedin_render_weekly_group_report and google_ads_render_weekly_group_report.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when the user asks for one report covering both Google Ads and LinkedIn Ads'), provides example prompts, and includes guidance like 'do not fetch raw data first' and comparison behavior rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_auth_setup_statusARead-onlyInspect
Preferred user-facing auth setup tool. Renders the auth setup MCP UI and can either take statusPayload from get_auth_setup_status or fetch fresh status directly when called without it.
| Name | Required | Description | Default |
|---|---|---|---|
| statusPayload | No | The structuredContent object returned by get_auth_setup_status. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations (readOnlyHint, openWorldHint) are consistent; description adds context about fetching fresh status if called without payload, which aligns with read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous information, and the purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and output schema, the description adequately covers both modes and key behavioral traits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single optional param; description clarifies that statusPayload comes from get_auth_setup_status and that omitting it triggers a fresh fetch, adding value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it renders the auth setup UI and can take a payload or fetch fresh status, distinguishing it from sibling get_auth_setup_status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says it's the preferred user-facing tool and explains the two invocation modes (with or without payload), but does not explicitly state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render_context_onboardingAInspect
Preferred user-facing client setup tool. Renders the saved client context MCP UI and can either take contextPayload from get_context_setup_status or fetch fresh status directly when called without it.
| Name | Required | Description | Default |
|---|---|---|---|
| contextPayload | No | The structuredContent object returned by get_context_setup_status. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false and destructiveHint=false, leaving ambiguity. The description says 'renders' and 'fetch fresh status', suggesting it may cause state changes (e.g., fetching updates context). However, it does not disclose whether it modifies any state or has side effects beyond rendering. More explicit behavioral details would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the primary purpose, followed by a clear explanation of the two invocation modes. No redundant words. Perfectly concise for the information conveyed.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple interface (1 optional param, output schema present), the description covers the core behavior. It references the related tool get_context_setup_status. However, it could mention complementing save_context_onboarding or specify that it's for rendering only. Still, it is sufficiently complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single parameter contextPayload with a description pointing to get_context_setup_status. The description adds value by explaining the parameter is optional and that omitting it triggers a fresh status fetch. This enriches the agent's understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'Preferred user-facing client setup tool' that 'Renders the saved client context MCP UI'. It distinguishes from siblings by detailing two modes of operation: with contextPayload or fetching fresh status. The verb 'renders' and the resource 'client context MCP UI' are specific and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool with contextPayload (from get_context_setup_status) and when to call it without (to fetch fresh status). It implies it is the preferred tool for client setup, but does not explicitly state when not to use it or describe alternatives like save_context_onboarding. Strong guidance but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_context_follow_upAInspect
Marks one client setup question as answered or reviewed so future syncs do not keep surfacing the same unresolved context issue.
| Name | Required | Description | Default |
|---|---|---|---|
| followUpId | Yes | The setup-question ID returned by get_context_setup_status or sync_context_workspace. | |
| resolution | Yes | Structured notes or final answer for the setup question. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations correctly indicate a write operation (readOnlyHint=false) and non-destructive nature (destructiveHint=false). The description adds that the tool marks questions as answered or reviewed, which aligns with annotations. It also explains the consequence for future syncs, adding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the action and purpose. Every word contributes meaning, with no redundancy or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple mutation tool with an existing output schema, the description sufficiently explains the tool's effect and purpose. It covers the input, action, and outcome, leaving no critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description essentially repeats the parameter descriptions from the schema without adding new meaning. Baseline score of 3 is appropriate since no additional semantic detail is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'marks' and the resource 'client setup question', and specifies the effect 'so future syncs do not keep surfacing the same unresolved context issue'. It distinguishes from siblings like get_context_setup_status and sync_context_workspace by focusing on resolving a single question.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used after reviewing or answering a setup question to prevent repeated surfacing. However, it does not explicitly state when not to use it or mention alternatives, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_context_onboardingAInspect
Saves the client setup questionnaire for the current user so future ad analysis can use saved advertiser business goals, markets, brands, account roles, and reporting preferences.
| Name | Required | Description | Default |
|---|---|---|---|
| brands | No | Optional brands, products, or business units covered by this workspace. | |
| advertisers | No | Optional advertiser-specific context profiles and account mappings. Use this when one user manages multiple advertisers or brands. | |
| constraints | No | Optional constraints such as compliance rules, excluded markets, or budget guardrails. | |
| targetMetrics | No | Optional metric targets such as CPL, CAC, ROAS, or pipeline value. | |
| primaryMarkets | No | Optional core markets or regions. | |
| accountMappings | No | Optional per-account role mappings applied to synced ad accounts. | |
| primaryObjective | Yes | Primary business objective, for example lead generation, ecommerce revenue, or pipeline creation. | |
| reportingPreferences | No | Optional reporting preferences such as default windows, currencies, or KPI emphasis. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false (mutation) and destructiveHint=false (safe). The description adds that data is saved for 'future ad analysis' but does not disclose if existing data is overwritten, merged, or requires a certain state. With annotations covering safety, a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action ('saves') and the what ('client setup questionnaire'). No redundant information; every word contributes to clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects) and the presence of an output schema, the description adequately covers the core purpose. It specifies the user scope ('current user') and the purpose ('future ad analysis'). However, it does not mention error scenarios or the overwrite/merge behavior, though these are not critical for a save operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description summarizes the high-level categories (e.g., 'business goals, markets, brands') but does not add detailed semantics beyond what the parameter descriptions already provide in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool saves a client setup questionnaire and lists the specific data types (goals, markets, brands, roles, preferences). It distinguishes itself from sibling read/crud tools like get_context_setup_status by specifying 'saves' and describing the data scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage during client onboarding to persist data for future analysis, but it lacks explicit guidance on when to use this tool versus alternatives (e.g., resolve_context_follow_up, render_context_onboarding). No when-not or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_reporting_groupsAInspect
Saves durable client-specific reporting groups for LinkedIn Ads or Google Ads. Use this to define business groupings like Partner, US, Prospect, or Nurture that reports should aggregate against.
| Name | Required | Description | Default |
|---|---|---|---|
| groups | Yes | Reporting groups to add or update for this advertiser and platform. | |
| platform | Yes | Ad platform the reporting groups apply to. | |
| advertiserName | No | Optional advertiser name fallback when advertiserContextId is not supplied. | |
| advertiserContextId | No | Optional saved advertiser ID. Use this when one user manages multiple advertisers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate non-read-only and non-destructive. Description adds 'durable' implying persistence but does not disclose exact behavior like merge vs replace. Adequate given annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with action, efficient with no redundancy. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given output schema exists and full parameter documentation, description is nearly complete. Lacks explicit mention of update behavior (overwrite vs append), but minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. Description adds examples (Partner, US) but no additional semantic detail beyond schema. Acceptable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool saves durable reporting groups for LinkedIn Ads or Google Ads, with a specific verb and resource. It distinguishes from sibling 'classify_campaign_reporting_group' by focusing on bulk definition rather than classification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context with examples like 'Partner, US, Prospect' for aggregation. However, it does not explicitly tell when not to use or mention alternatives, such as using 'classify_campaign_reporting_group' for single campaign classification.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_mcp_feedbackAInspect
Sends structured product feedback about the MCP server, auth flow, tool behavior, or MCP UI. Feedback is always logged and can optionally be forwarded to a configured webhook.
| Name | Required | Description | Default |
|---|---|---|---|
| host | No | Optional client host, such as claude, chatgpt, vscode, or other. | |
| No | Optional contact email for follow-up. | ||
| rating | No | Optional 1-5 rating for the experience. | |
| details | No | Optional additional structured context for debugging. | |
| message | Yes | Clear description of the issue, idea, or feedback. | |
| pageUrl | No | Optional browser page or host context URL related to the feedback. | |
| category | Yes | Feedback category. | |
| provider | No | Optional provider area affected by the feedback. | |
| toolName | No | Optional MCP tool name involved in the feedback. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate openWorldHint=true (potential external side effects). The description adds that feedback is always logged and can be forwarded to a webhook, providing behavioral insight beyond annotations. It does not contradict any annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a compound predicate that conveys the main action and key details. It is front-loaded, concise, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema (not shown but indicated), the description covers the essential behavior: logging and optional webhook forwarding. It does not address error handling or response format, but the output schema likely handles return values, making the description sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 parameters. The description does not add extra meaning or context beyond the schema, meeting the baseline for high coverage but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: sending structured product feedback about the MCP server, auth flow, tool behavior, or MCP UI. It specifies that feedback is logged and optionally forwarded to a webhook, which distinguishes it from siblings that are focused on Google Ads and LinkedIn operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates when to use the tool (for MCP-related feedback) but does not explicitly state when not to use it or suggest alternative tools. Given the sibling context, it is clear this is the only feedback tool, so usage guidance is adequate but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_context_workspaceAInspect
Syncs accessible LinkedIn Ads and Google Ads accounts and campaigns into saved account data, creating setup questions when new campaigns appear or known campaigns materially change.
| Name | Required | Description | Default |
|---|---|---|---|
| platforms | No | Optional subset of platforms to sync. Defaults to both connected providers. | |
| linkedInAccountIds | No | Optional LinkedIn account IDs to limit sync to specific LinkedIn ad accounts. |
Output Schema
| Name | Required | Description |
|---|---|---|
| tool | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true), the description adds that it creates setup questions when new campaigns appear or known campaigns materially change, which is a valuable behavioral trait not captured in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: the first states the primary action, the second adds a key behavioral detail. No wasted words, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers what is synced, from which platforms, and the side effect of creating setup questions. Given the complexity and presence of an output schema, this is largely complete, though it could mention prerequisites like auth status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description does not add extra meaning beyond the schema; it aligns with the parameter names and descriptions but provides no additional context like format or restrictions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool syncs accessible LinkedIn Ads and Google Ads accounts and campaigns into saved account data, distinguishing it from the many read-only analysis tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. However, the description implies it is for setting up or refreshing context data, and the sibling tools are mostly read-only, so the usage is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!