Skip to main content
Glama

Import Google costs

import_google_costs
Destructive

Book Google Ads daily spend into click costs — the rows the Torvex Google Ads Script reads inside the advertiser's own account (one row per day × Google campaign × ad group). Google campaigns are matched to tracker campaigns by the {campaignid} ValueTrack parameter carried on the clicks themselves (a Google campaign feeding several tracker campaigns is split by click share), with the '(TID: N)' campaign-name marker as fallback; unmatched ones are reported back. Non-USD accounts are converted at the current rate; a request must carry every row of a Google campaign for the days it covers (a day is set, not incremented).

Input Schema

NameRequiredDescriptionDefault
rowsYes
currencyNoAccount billing currency; converted to USD at the current rate (code bad_currency when the rate is unknown)
timezoneNoIANA timezone of the Google Ads account (its report days are in it); missing → workspace timezone
customer_idNoGoogle Ads customer id (dashes optional) — for the audit log only

Schema Changelog

Changes observed during successful MCP inspections.

No schema history has been recorded yet.

TDQS

A3.8/5.0
Behavior4/5

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

Goes well beyond the annotations: it discloses the overwrite semantics ('a day is set, not incremented'), the all-or-nothing requirement to include every row of a campaign for the covered days, rate-based currency conversion with the bad_currency code, and that unmatched campaigns are reported back. That is exactly the extra context destructiveHint=true does not convey. Minor tension: a set-not-increment operation reads as repeat-safe, which sits awkwardly with idempotentHint=false, though this is not a clear contradiction.

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

Conciseness4/5

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

One front-loaded paragraph that leads with the action, then the payload shape, then matching, then currency and overwrite rules. Dense but every clause carries operational meaning; only the parenthetical clarifications could be trimmed slightly.

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

Completeness4/5

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

For a destructive importer with no output schema, it covers input preparation, matching rules, currency handling, overwrite semantics and error reporting sufficiently to call it correctly. The remaining gap is return-shape detail — 'unmatched ones are reported back' is not specified in structure, and the row-limit failure mode is unaddressed.

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

Parameters4/5

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

Schema coverage is 75%, so the baseline is 3; the description earns above that by explaining what the key identifiers actually do at match time — campaign_id is resolved via the {campaignid} ValueTrack parameter carried on clicks, campaign_name enables the '(TID: N)' fallback, and a campaign feeding multiple tracker campaigns is split by click share. It does not mention the 5000-row maxItems cap or what a partial/oversized payload does.

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

Purpose4/5

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

Opens with a specific verb and resource: 'Book Google Ads daily spend into click costs', and immediately scopes the payload to one row per day × Google campaign × ad group. An agent can distinguish it from import_meta_costs and set_campaign_costs, though the text never names those siblings explicitly.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: it is the tool to call when you have Google Ads Script spend rows, and the '(TID: N)' fallback plus the {campaignid} matching explain how to prepare them. There is no explicit when-to-use-this-instead-of-new() guidance against the competing cost tools (import_meta_costs, set_campaign_costs, preview_segment_costs), and no stated prerequisites such as account connectivity.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources