OrbiAds
OfficialOrbiAds is a hosted MCP server that connects AI assistants and CLI tools to Google Ad Manager (GAM), enabling full campaign lifecycle management, reporting, inventory control, and network administration through natural language or structured commands.
Campaign Management
Deploy complete campaigns (Orders + Line Items + Creatives + LICAs) with a plan → confirm → execute safety gate
Create, update, pause, archive, and rollback campaigns; manage order and line item lifecycle transitions
Creative & Asset Management
Upload image, HTML5, video, audio, and third-party creative assets
Create and manage native ad styles, creative templates, and LICAs
Run creative QA: SSL validation, compliance scanning, tracking pixel audits, tag snippet validation
Manage creative wrappers for site-wide script injection
Inventory & Targeting
Browse and manage ad unit hierarchies; batch-create and archive ad units
Create and manage placements and custom targeting keys/values
Get inventory forecasts, generate ads.txt/app-ads.json manifests, and push inventory blueprints to GAM
Reporting & Forecasting
Run delivery, inventory, and custom ad-hoc reports; export as CSV
Get impression forecasts, check underdelivery/budget pacing alerts, generate billing summaries
GA4 integrated reports, raw PQL queries, and natural-language reporting goals
Programmatic Deals
Create and manage PMP, PG/PD proposals, ADCP deals, auction packages, and makegoods
Negotiate proposals with buyer notification workflows; manage GAM product catalogue
Network Administration
Manage teams, users, roles, sites, mobile apps, custom fields, labels, and Publisher Provided Signals (PPS)
Update network-level settings and inspect active GAM beta features
Auditing & Compliance
Run network-wide hygiene checks, operational diagnostics, and compliance audits (ISO 27001, IAB, NIST CSF)
Audit creative wrapper coverage; query GAM change history (who changed what and when)
Configuration & Settings
Manage tenant-level naming conventions, delivery defaults, and configuration presets
Register and manage custom creative format recipes and inventory blueprints
Authentication & Session Management
Initiate and manage GAM OAuth 2.0 flows; verify credentials; switch between multiple linked GAM networks
Billing & Credits
Check OrbiAds credit balance, view transaction history, and estimate operation costs before executing (reads are always free)
Provides direct access to Google Ad Manager (GAM), enabling users to manage ad units, perform inventory forecasting, and traffic advertiser orders or line items via the GAM API.
Supports specialized workflows for trafficking HTML5 display creatives, including automated deployment and formatting guardrails within Google Ad Manager.
OrbiAds — Google Ad Manager MCP Server
OrbiAds is a hosted Google Ad Manager MCP server that gives AI assistants — Claude, ChatGPT, Gemini, Cursor, and OpenAI Codex — direct, natural-language access to Google Ad Manager. It covers 270+ operations across campaigns, orders, line items, creatives, inventory, targeting, and reporting, on the current GAM API (v202605), with OAuth and confirm-before-write guardrails.
→ Get started free at orbiads.com · ★ Star this repo
Try in 3 Minutes
Hosted MCP, no local install
Create a free OrbiAds account at orbiads.com and connect Google Ad Manager.
Add this MCP endpoint to Claude, ChatGPT, Gemini, Cursor, Codex, or Warp:
https://orbiads.com/mcpAsk your agent:
Connect to my GAM account and show me my active networks.
CLI smoke test
pip install orbiads-cli
orbiads auth login
orbiads network infoWant a deeper setup path? Start with the CLI guide or the agent install guides.
Related MCP server: Google Ad Manager MCP Server
Trust Signals
Signal | Status | Link |
Public repo | MIT licensed mirror of the OrbiAds MCP distribution | |
PyPI CLI | Published as | |
Hosted MCP | Remote Streamable HTTP endpoint with OAuth |
|
Glama | Indexed MCP registry page | |
MCP.so | Indexed MCP directory page | |
Official MCP registry |
| |
Smithery | Submission target prepared for hosted/external MCP listing | |
Safety model | Plan → confirm → execute on write actions |
Two Ways to Connect
OrbiAds offers two integration methods — choose the one that fits your workflow.
Option A: MCP Server (AI agents)
Connect your AI assistant (Claude, ChatGPT, Gemini) to GAM via the hosted MCP endpoint. Conversational, guided, zero-install.
MCP endpoint: https://orbiads.com/mcpOption B: CLI (terminal & scripts)
A lightweight Python CLI for developers, CI/CD pipelines, and headless automation. Same API, same credits, same guardrails.
pip install orbiads-cli
orbiads auth login
orbiads network infoWindows/macOS/Linux PATH Warning: If you install the CLI via pip (especially with --user), ensure the Python scripts directory is added to your user PATH. Without this, your terminal and local AI agents (like Claude Code, Cursor, or Gemini) will fail to find or execute the orbiads command. See the Troubleshooting section in the CLI Guide for quick setup commands.
Comparison
Criteria | MCP Server | CLI |
Interface | AI agent (Claude, ChatGPT, Gemini) | Terminal / command line |
Installation | URL to paste into agent settings |
|
Authentication | OAuth via browser (automatic) | OAuth Device Flow (code displayed) |
Best for | Exploration, conversations, guided workflows | Scripts, CI/CD, headless automation |
Output format | Natural language via the agent | JSON or structured table |
Credits | Same consumption grid | Same consumption grid |
Offline | No — requires internet | No — requires internet |
Python required | No | Yes (3.10+) |
Both methods share the same backend, credits, and safety guardrails.
CLI Quick Reference
Command | Description |
| Authenticate via Google OAuth Device Flow |
| Check authentication status |
| Show current GAM network details |
| List accessible GAM networks |
| List orders in the network |
| List line items for an order |
| List creatives |
| List ad units |
| Check inventory availability |
| Run a delivery report |
Full command reference: orbiads.com/docs/cli/commands
Installation Guide
OrbiAds offers three integration pathways depending on your environment.
1. Zero-Install MCP Server (ChatGPT, Gemini, Claude Desktop)
Connect your AI assistant to our hosted server using the Model Context Protocol:
Claude Desktop: Add this to your
claude_desktop_config.json:{ "mcpServers": { "orbiads": { "type": "http", "url": "https://orbiads.com/mcp" } } }Gemini / AI Studio: Go to Tools → MCP configuration → Add
https://orbiads.com/mcpChatGPT: Go to Settings → Connectors → Add connector → MCP URL:
https://orbiads.com/mcpGLAMA / MCP Registry: Access, test, and connect the server directly in your browser via glama.ai/mcp/servers/OrbiAds/Orbiads-GAM-MCP
Other environments (Cursor, Codex, Warp): Add the
https://orbiads.com/mcpendpoint to your configuration and copyAGENTS.mdto your project root.
2. Claude Code Plugin (Slash Commands)
Add the /adops command set directly into your Claude Code CLI terminal:
claude plugin install orbiads3. Agent Skills (Structured Workflows)
Install our markdown-based guidelines permanently into Claude Code's memory:
Clone this repository locally.
Run the skill installer:
./install.sh skills --copy
This copies our 6 consolidated skill files to your ~/.claude/skills/ directory. Claude Code will automatically leverage them to prevent hallucinations and strictly apply the plan-before-mutate workflow.
→ Installation guides: Claude · ChatGPT · Gemini · OpenAI Codex
What is OrbiAds?
OrbiAds is a hosted MCP server that connects your AI assistant directly to Google Ad Manager (GAM). Instead of clicking through the GAM interface or writing API scripts, you describe what you want in plain language — OrbiAds handles the API calls, guardrails, and audit trail.
You: "Check inventory availability on the homepage banner for a 300x250 in France next week"
OrbiAds: [runs forecast] → Available: 1.2M impressions. Pressure: low. Safe to traffic.
You: "Create the line item for Renault, €15 CPM, Monday to Friday"
OrbiAds: [applies guardrails] → Preview ready. Confirm to push?No scripts. No API tokens to manage. No switching tabs.
Who is this for?
AdOps managers who traffic campaigns daily and want to move faster without making mistakes
Publishers who manage their own GAM network and want AI-assisted workflows
Media agencies running multiple GAM accounts who want a consistent, auditable process
Developers building AdOps automation on top of Claude, ChatGPT, or Gemini
Supported AI Platforms
Platform | Setup guide | Mode |
Claude (Desktop / claude.ai / Claude Code) | Plugin + MCP remote | |
ChatGPT (Pro connector) | MCP remote (HTTP) | |
Gemini | MCP remote | |
GLAMA (MCP registry) | MCP registry | |
Cursor / Codex / Warp / other | AGENTS.md + MCP wiring |
All platforms connect to the same hosted MCP endpoint at https://orbiads.com/mcp.
7 Slash Commands
After installing the plugin, these /adops commands are available directly in Claude Code.
Command | What it does |
| Read live state, plan deployment, dry-run ( |
| Multi-dimensional account audit: delivery, inventory, security, creatives, billing |
| Custom reports, delivery queries, CSV export, billing summaries, forecasts |
| PMP deals, private auctions, Marketplace PG/PD proposals |
| Upload creatives, QA compliance, SSL validation, preview URLs, line item association |
| Browse ad units, manage placements and targeting taxonomy, run blueprints |
| Teams, sites, labels, custom fields, network settings (MCP surface only) |
What's Inside (MCP Tools & Skills)
The OrbiAds surface maps the Google Ad Manager API into parent tools and hundreds of actions, organized into 6 core domain Agent Skills plus an orchestrator, to keep context usage clean. See docs/tool-matrix/README.md for the live generated tool and action counts.
Click on any domain below to see which tools and capabilities are included:
campaign— Read live campaign state, plan deployment, dry-run, deploy, pause, and rollback campaigns.orders— Create and list orders, contacts, and roles.line_items— Define line item delivery rules, CPMs, and targeting logic.creatives— Upload creatives (images, HTML5, video/audio) and configure native styles.creative_assets— Manage associated image and file assets.creative_qa— Audit click-trackers, perform compliance scans, and validate SSL certificates.creative_wrapper_skill— Manage third-party wrappers and delivery presets.formats— Discover and configure ad creative formats.jobs&gam_jobs— Monitor async campaign compilation and deployment workflows.
inventory— Retrieve ad unit trees, sizes, and generate ads.json manifests.placements— Create, update, and list ad placement groups.targeting— Manage custom targeting keys/values, countries, and categories.audiences— Retrieve and modify first-party audience segments.blueprint— Generate and push structured network inventory blueprints.
reporting— Run custom reports from templates, check line item delivery, and integrate GA4.preview— Verify inventory coverage and export preview URLs.pql— Run raw PQL database queries.
deals— Manage PMP deals, private auctions, and marketplace buyers.companies— Manage agency and advertiser company profiles.
gam_admin— Access advanced fields, network labels, teams, and site records.gam_features— Query active Google Ad Manager beta and system features.network— List accessible networks and switch active network context.settings— Configure default CPMs, pacing, and brand naming templates.tenant_catalog— Access tenant-specific catalogs.
audit_skill— Run automated security, hygiene, and wrapper coverage audits.billing— Fetch credit balances and transaction histories.audit— Search network audit logs.
See
docs/tool-matrix/README.mdfor the complete parity matrix detailing exact costs, writes, and parameters for all 270+ actions.
Safety by Design
Every write action requires an explicit ExecutionPlan preview and confirmation token. No campaign goes live by accident.
Plan-before-mutate on campaign, deal, and product writes — preview the signed
ExecutionPlanbefore you pushDry-run mode on all deployment actions —
confirmationTokenTTL 300 secondsForecast gate before inventory commits — availability verified upfront
Audit trail on every action — who did what, when, with what result
Credit guard — read operations are always free, writes deduct credits transparently
Quick Start (3 steps)
1. Create your free account
Go to orbiads.com and sign up. You get 5 free credits — no credit card required.
2. Connect Google Ad Manager
From the OrbiAds dashboard, click Connect GAM and authorize with your Google account. OrbiAds uses OAuth — your GAM credentials never leave Google's infrastructure.
3. Configure your AI assistant
Pick your platform and follow the guide:
Then start with:
"Connect to my GAM account and show me my active networks"
MCP Server Details
Property | Value |
Endpoint |
|
Transport |
|
Auth | OAuth 2.0 — Google account via OrbiAds |
GAM API version |
|
MCP Protocol |
|
Repository Structure
skills/ ← orchestrator skill + 6 consolidated dual-surface domain skills (generated)
Each domain skill has SKILL.md (thin) + references/actions.md (full catalogue)
commands/ ← 7 /adops slash commands for Claude Code
agents/ ← Parallel audit subagents (audit-delivery, audit-inventory, …)
hooks/ ← Claude Code hooks (hooks.json)
cli/ ← OrbiAds CLI package (pip install orbiads-cli)
docs/ ← Installation guides, tool matrix, custom-skill authoring guide
_docs/ ← Internal: legacy tool mapping, anti-collision rules
.claude-plugin/ ← Claude plugin manifest (plugin.json, marketplace.json)
AGENTS.md ← Cross-LLM contract for Cursor, Codex, Gemini, Warp, etc.
CLAUDE.md ← Claude Code project guidanceSkills and the tool matrix are generated from the backend catalogue — do not hand-edit them. See
CLAUDE.mdfor the generated vs. hand-authored breakdown.
Pricing
Plan | Price | Credits |
Trial | Free | 5 credits (no card) |
Starter | €39/month | 50 credits/month |
Early Access | €29/month ← locked for life | 50 credits/month |
Pack S | €29 one-time | +50 credits |
Pack L | €45 one-time | +100 credits |
Reads are always free. Credits are only consumed on write and deploy operations.
License
The contents of this repository — distribution scaffold, skills, agents, workflows, JSON schemas, CLI client, platform integration manifests, documentation, and examples — are released under the MIT License.
The OrbiAds MCP server backend and Cloud Run services that the hosted endpoint at https://orbiads.com/mcp connects to are NOT in this repository and are governed by separate proprietary terms — see terms at orbiads.com.
Available Tools
47 toolsad_review_centerAInspect
Search and moderate Ad Exchange creatives in GAM Ad Review Center.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: search = 0 credits. allow_batch/block_batch are write operations. OUTPUT: search returns Ad Review creative results. Batch actions return moderation summaries. WHEN TO USE: Use ad_review_center to find, allow, or block marketplace creatives before they serve on publisher inventory.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • search: Search Ad Review Center creatives by web property, status, advertiser, or review filters. • allow_batch: Allow multiple reviewed ads in one write operation. Requires ad IDs. • block_batch: Block multiple reviewed ads in one write operation. Requires ad IDs and a block reason. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that operations are mixed (read/write), requires OAuth 2.0, and notes credit costs for read vs write. It describes what each action does but lacks details on side effects, idempotency, rate limits, or error handling.
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, using short sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). Every sentence adds value; no filler. Front-loaded with 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?
For a tool with 2 parameters and no output schema, the description covers key aspects: purpose, sub-actions, auth, credit costs, and output type. It lacks details on pagination, error handling, and search filters, but is fairly complete given 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?
Schema coverage is 100%, with detailed enum descriptions for 'action' and clear type for 'network_code'. The description adds overall context but does not enhance parameter meaning beyond the schema. 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 explicitly states it is for searching and moderating Ad Exchange creatives in GAM Ad Review Center. The verb-resource pair is specific ('search and moderate' + 'Ad Exchange creatives'), and the context ('GAM Ad Review Center') clearly distinguishes it from sibling tools like 'creatives' which handle different ad 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 includes a 'WHEN TO USE' section that specifies the scenario: finding, allowing, or blocking marketplace creatives before they serve. It also notes the mode (mixed), auth requirement, and credit costs. However, it does not explicitly state when not to use this tool or mention alternative tools for other ad operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audiencesAInspect
Manage GAM first-party audience segments.
MODE: mixed (read + write) AUTH: OAuth 2.0 required — call initiate_gam_auth first CREDITS: list/get = 0 credits (free). create_audience_segment = 0.5 credits and requires a confirmation_token. OUTPUT: Returns audience segment objects with id, name, status, membershipExpirationDays, and eligibilityCriteria. SIDE EFFECTS: create/update modify GAM network data. perform_audience_segment_action can activate or deactivate segments. WHEN TO USE: Use this tool for managing first-party data segments (CRM lists, pixel-based audiences). For targeting existing segments on line items, use the targeting tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_audience_segments: List all audience segments on the network. Read-only, free. Returns paginated list with id, name, type, and status. • get_audience_segment: Get a specific audience segment by ID. Read-only, free. Requires segment_id parameter. • create_audience_segment: Create a new first-party audience segment. Write operation, costs 0.5 credits, requires confirmation_token. Returns the created segment with its new ID. • update_audience_segment: Update an existing audience segment's name, description, or membership rules. Write, free. Requires segment_id. • perform_audience_segment_action: Activate or deactivate a segment. Write, free. Requires segment_id and action type (ACTIVATE or DEACTIVATE). | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: declares MODE (mixed read+write), AUTH (OAuth 2.0), CREDITS (free list/get; create costs 0.5 credits and needs confirmation_token), OUTPUT (returns segments with specific fields), and SIDE EFFECTS (modifies data, can activate/deactivate). 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 well-structured with clear sections (MODE, AUTH, CREDITS, OUTPUT, SIDE EFFECTS, WHEN TO USE) and each sentence provides relevant information. It is comprehensive but not overly verbose, earning high marks with a slight deduction for its length.
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 (multiple actions, two parameters, no output schema), the description is remarkably complete. It covers usage context, authentication, credits, side effects, and output format. The only minor omission is a concrete example of confirmation_token handling, but overall it meets the needs 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 covers 100% of parameters. The description adds significant value: for the action parameter, it details each enum value's behavior (read/write, cost, required sub-params). For network_code, it explains its purpose and how to obtain it. This goes well beyond the schema's minimal description.
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 'Manage GAM first-party audience segments' which is a specific verb+resource. It distinguishes from sibling tools by explicitly noting that for targeting segments on line items, one should use the targeting tool instead.
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 a dedicated 'WHEN TO USE' section explaining when to use this tool (managing first-party data segments) and when not (use targeting tool). Also mentions AUTH requirements (initiate_gam_auth first) and CREDIT costs, giving clear context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auditAInspect
Query the GAM audit log for change history.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns a list of AuditEvent objects with entityId, entityType, changeType, userId, timestamp, and a diff of changed fields. WHEN TO USE: Use audit when you need to trace who changed what and when on a specific GAM entity (order, line item, creative, ad unit). NOT the same as audit_skill: audit queries the GAM change log; audit_skill runs proactive quality/compliance checks. NOT the same as gam_audit: gam_audit runs a full network-wide compliance report; audit queries history for a specific entity.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • query_audit_log: Execute a filtered query against the GAM audit log. Filterable by entityId, entityType, userId, and date range. Returns a paginated list of audit events. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It discloses read-only mode, OAuth requirement, zero cost, and output format with fields. However, pagination is only mentioned in the input schema's action description, not in the main description.
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?
Well-structured with sections for mode, auth, credits, output, and usage guidance. Some redundancy in the 'NOT' comparisons, but overall efficient and front-loaded with 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?
Covers essential aspects: purpose, when to use, authentication, cost, output fields, and distinctions from similar tools. Lacks explicit pagination behavior and rate limits, but schema hints at pagination.
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%, baseline 3. Description adds value by listing filterable fields (entityId, entityType, userId, date range) that are only partially described in the schema's action parameter description.
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 tool queries GAM audit log for change history, with explicit verb 'Query' and resource 'GAM audit log'. Differentiates from siblings audit_skill and gam_audit with specific contrasts.
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 when-to-use: 'when you need to trace who changed what and when on a specific GAM entity'. Also specifies what it is not, naming alternative tools (audit_skill, gam_audit) and their purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_skillAInspect
OrbiAds proactive audit suite — six sub-actions for quality and compliance analysis.
MODE: read-only (all actions are non-destructive analysis) AUTH: OAuth 2.0 required CREDITS: 0 (all actions free) OUTPUT: Returns a structured markdown report with findings, severity levels (CRITICAL/WARNING/INFO), and recommended remediations. WHEN TO USE: Use audit_skill to proactively detect problems before they impact delivery. • Use hygiene_check for routine health checks (orphaned creatives, stalled orders, mismatched budgets). • Use standards_baseline to verify compliance against a named framework (ISO 27001 ad-ops, IAB, NIST). • Use wrapper_coverage to audit creative wrapper deployment across ad units. • Use estimate_cost to preview credit costs before running expensive operations. NOT the same as audit: audit queries GAM change history; audit_skill analyzes current state. NOT the same as gam_audit: gam_audit is a convenience wrapper combining hygiene_check + ops_diagnostic + standards_baseline in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • hygiene_check: Scan the network for hygiene issues: orphaned creatives, line items past end date still active, orders with no live line items, creative-line item association gaps. Returns severity-tagged findings. • ops_diagnostic: Diagnose operational delivery problems: underdelivery, pacing issues, targeting conflicts, creative disapprovals. Correlates data across orders/line items/creatives. • standards_baseline: Evaluate the network against a named compliance framework. Requires framework parameter: orbiads_baseline | iso27001_adops | iab_anti_tampering | nist_csf. Returns a pass/fail checklist per control. • wrapper_coverage: Audit CreativeWrapper coverage across ad units and placements. Detects missing wrappers, double-wrapping, and wrapper misconfiguration. • estimate_cost: Preview the credit cost of an operation before executing it. Requires operation_name and parameters. Returns cost in credits and explanation. • export_authoring: Export an authoring-audit CSV of GAM entities (teams, users, custom fields, labels) for governance and compliance reporting. Returns a download URL or inline CSV. | |
| framework | No | Compliance framework for standards_baseline action. Required when action=standards_baseline. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and excels: it declares read-only mode, OAuth 2.0 auth, zero credit cost, and structured markdown output with severity levels. This far exceeds typical 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?
The description is well-structured with clear sections, but somewhat verbose with bullet points that partially duplicate schema information. Still efficient and front-loaded with key facts.
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?
Without an output schema, the description fully explains the output format. It also covers authentication, cost, per-action details, prerequisites, and sibling comparisons, leaving no major 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?
Although schema coverage is 100% with detailed parameter descriptions, the tool description adds valuable usage context and when-to-use guidance for each action, going beyond mere schema repetition.
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 proactive audit suite with six sub-actions for quality and compliance analysis. It explicitly distinguishes from sibling tools 'audit' and 'gam_audit', making its unique purpose unmistakable.
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 'WHEN TO USE' section provides specific guidance for each sub-action, and the description contrasts audit_skill with similar tools, giving clear criteria for when to choose it over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
billingAInspect
Inspect OrbiAds account billing — credit balance and transaction history.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: get_credit_balance returns {balance: float, plan: string, monthly_allowance: int}. list_transactions returns paginated list of {date, type, amount, description, balance_after}. WHEN TO USE: Call get_credit_balance before write operations to confirm sufficient credits. Use list_transactions for usage auditing.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get_credit_balance: Return the current credit balance, plan type, and monthly allowance for the authenticated tenant. • list_transactions: List credit transaction history (debits for write operations, credits for plan renewal/top-ups). Filterable by date range. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite lacking annotations, the description discloses critical behavioral traits: MODE: read-only (safe), AUTH: OAuth 2.0 required, CREDITS: 0 (free), and OUTPUT structure for both actions. This fully informs the agent of what to expect.
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 well-structured with clear sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE) and is concise. Every sentence provides valuable information without 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 the tool's complexity (two sub-operations, no output schema), the description is complete. It covers both actions, describes return structures, states authentication requirements, and provides usage context. No gaps remain 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?
The input schema already provides 100% coverage with detailed descriptions for both parameters (action with enum, network_code). The description does not add additional semantic meaning beyond what the schema offers, so 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 the tool's purpose: inspecting OrbiAds account billing, specifically credit balance and transaction history. It uses a specific verb ('Inspect') and identifies the resource, effectively distinguishing it from sibling tools like 'audit' or 'campaign' which have different domains.
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 use each sub-operation: 'Call get_credit_balance before write operations to confirm sufficient credits. Use list_transactions for usage auditing.' This clearly states the context and purpose, helping the agent choose correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
blueprintAInspect
Manage the tenant inventory blueprint — the canonical definition of ad formats, positions, key-values, and brand settings used to generate GAM campaigns.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes (save_blueprint, save_preferences, add/remove operations) = 0 credits but modify persistent tenant configuration. OUTPUT: get_active_blueprint returns the full blueprint JSON with formats, positions, keyValues, brand. list_templates returns available campaign templates. SIDE EFFECTS: Changes to the blueprint affect all future campaign deployments that reference it. Removing a format or position does not remove existing GAM line items. WHEN TO USE: Use blueprint to define or update the standard inventory structure before running campaign. Use formats tool for the Custom Format Registry (creative format recipes, not inventory positions).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get_active_preferences: Read the current tenant preferences (naming conventions, default targeting, delivery settings). • get_active_blueprint: Read the full active inventory blueprint JSON. • save_blueprint: Replace the full blueprint with a new version. Write. Validate with a dry-run before saving to production. • save_preferences: Update tenant preferences. Write. • add_format: Add a creative format to the blueprint. Write. Requires format_code and size parameters. • remove_format: Remove a creative format from the blueprint. Write. Does not remove existing GAM creatives. • add_position: Add an inventory position (ad unit + targeting combination) to the blueprint. Write. • remove_position: Remove an inventory position from the blueprint. Write. Does not archive existing ad units. • add_key_value: Add a custom targeting key-value definition to the blueprint. Write. • remove_key_value: Remove a key-value definition from the blueprint. Write. • update_brand: Update brand metadata (name, logo, primary color) attached to the blueprint. Write. • update_platforms: Update the list of target platforms (desktop, mobile_web, app_ios, app_android) in the blueprint. Write. • list_templates: List all available campaign templates (display, native, video presets). Read-only. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers mode (mixed read/write), auth requirements, credits (0 for writes but modifies config), and side effects (changes affect future campaigns). Could be slightly more explicit about write reversibility, but overall strong.
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 well-structured with sections like MODE, AUTH, OUTPUT, SIDE EFFECTS, and WHEN TO USE. While slightly lengthy, every sentence adds value, and the main 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?
Given the two parameters and 100% schema coverage, the description provides complete context for all actions, including output descriptions for key sub-operations. No output schema is needed as the tool returns blueprint JSON.
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 enum descriptions. The description adds extra context beyond the schema (e.g., 'Validate with a dry-run before saving to production'), raising the baseline from 3 to 4.
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 manages the tenant inventory blueprint, specifying it covers ad formats, positions, key-values, and brand settings. It also distinguishes from the 'formats' sibling tool.
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 'WHEN TO USE' section explicitly states when to use this tool vs. alternatives (formats tool), providing clear guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
campaignAInspect
Orchestrate GAM campaign lifecycle — the primary write surface for creating and managing campaigns.
MODE: write-heavy (most actions modify GAM data) AUTH: OAuth 2.0 required CREDITS: deploy = 2–5 credits depending on line item count. Other write operations = 0.5–1 credit. Reads = 0. CONFIRMATION TOKEN: create_draft, deploy and rollback require a confirmation_token obtained from a prior dry-run preview. This prevents accidental deployment. DEPLOY WORKFLOW: create_draft creates a Firestore campaigns/{campaignId} document from MCP. deploy accepts either campaignId (modern campaigns/{id}) or jobId (legacy jobs/{id}). For direct GAM-only display trafficking, use create_display. OUTPUT: deploy returns {campaign_id, order_id, line_item_ids[], creative_ids[], status}. rollback returns {reverted_to_version, entities_affected}. SIDE EFFECTS: deploy creates Order + LineItems + Creatives + LICAs in GAM — irreversible without rollback. rollback archives the current version and restores the previous one. WHEN TO USE: Use campaign for end-to-end campaign creation from a blueprint. Use line_items or orders for surgical updates to existing campaigns. DESTRUCTIVE: rollback and archive are non-trivial — they modify live GAM entities.
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | No | Legacy Firestore jobs/{jobId} document. deploy also accepts modern campaignId. | |
| action | Yes | Sub-operation to perform: • deploy: Deploy a complete campaign to GAM: accepts campaignId from create_draft/REST or legacy jobId, plus confirmation_token. Creates Order, LineItems, Creatives, and LICAs. • create_draft: Create an OrbiAds campaigns/{campaignId} draft from MCP without using the web UI. Write, requires confirmation_token. • update: Update an existing campaign's metadata, budget, or targeting without full redeployment. Write. • ensure_template: Ensure a native ad template exists in GAM, creating it if absent. Idempotent write. • create_native_style: Create a GAM native ad style for use in native campaigns. Write. • create_line_items_batch: Create multiple line items under an existing order in one call. Write. Faster than individual line item creation. • create_licas: Create LineItem-Creative Associations (LICAs) to link creatives to line items. Write. • create_display: Create a standard display ad campaign (order + line items + creatives) from a template. Write, requires confirmation_token. • rollback: Revert a campaign to its previous deployed version. Destructive write — archives current version. Requires confirmation_token. • pause: Pause all active line items in a campaign. Write. • archive: Archive a campaign (order + line items). Destructive — removes from active serving. Requires confirmation_token. | |
| campaign_id | No | OrbiAds campaigns/{campaignId} identifier, accepted by deploy and campaign lifecycle actions. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. | |
| confirmation_token | No | Write-confirmation token from a prior estimate/preview call. Required for deploy, rollback, archive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses write-heavy nature, OAuth requirement, credit costs, confirmation token necessity, side effects (irreversible deployment), and destructive actions (rollback, archive). This goes well beyond minimal disclosure and fully informs the agent of behavioral traits.
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 well-structured with labeled sections (MODE, AUTH, etc.) and front-loaded with the key purpose. It is fairly long but every sentence adds value. Minor redundancy in repeating confirmation token info across sections.
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 no output schema, the description explicitly states the output format for deploy and rollback. It also covers side effects, destructive actions, and prerequisites. For a complex tool with many sub-operations, this is comprehensive and 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 baseline is 3. The description adds workflow context (e.g., why confirmation_token is needed, how deploy works) that complements the schema's parameter descriptions. While the schema already details each parameter, the description's additional context justifies a slightly higher score.
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: 'Orchestrate GAM campaign lifecycle — the primary write surface for creating and managing campaigns.' It uses a specific verb ('orchestrate') and resource ('GAM campaign lifecycle'), and distinguishes itself from sibling tools like line_items and orders by specifying when to use each.
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?
Explicit guidance is provided: 'Use campaign for end-to-end campaign creation from a blueprint. Use line_items or orders for surgical updates to existing campaigns.' This tells the agent when to use this tool versus alternatives, which is exactly what this dimension requires.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_credentialsAInspect
Verify that the GAM OAuth credentials for a network are still valid and have required scopes.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns {valid: boolean, scopes: string[], expires_at: datetime, error?: string} WHEN TO USE: Call at the start of a session to verify credentials before running operations. If valid=false, call initiate_gam_auth to re-authorize.
| Name | Required | Description | Default |
|---|---|---|---|
| network_code | Yes | GAM network code to check. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: 'MODE: read-only', 'AUTH: OAuth 2.0 required', 'CREDITS: 0 (free)', and details the output format. This provides complete transparency for a read-only credential check.
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 and well-structured with clear sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). Every sentence adds value without redundancy. It is front-loaded with the 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?
Although there is no output schema, the description specifies the exact output structure. Combined with auth, mode, and usage guidance, the description is complete for this simple credential-checking 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% (one parameter fully described). The description does not add extra meaning beyond the schema; it simply mentions 'network' in the purpose. Baseline 3 is appropriate as the schema already documents the parameter 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 clearly states the tool's purpose: 'Verify that the GAM OAuth credentials for a network are still valid and have required scopes.' It uses a specific verb (verify) and resource (credentials), and distinguishes itself from the sibling tool 'initiate_gam_auth' which handles re-authorization.
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 provides a 'WHEN TO USE' section: 'Call at the start of a session to verify credentials before running operations. If valid=false, call initiate_gam_auth to re-authorize.' This gives clear context and directs to an alternative tool when needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
companiesAInspect
Manage GAM companies — advertisers, agencies, and contacts.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes (create, update, archive) = 0.5 credits. OUTPUT: Returns Company objects with id, name, type (ADVERTISER/AGENCY/HOUSE_ADVERTISER), creditStatus, address, and associated contacts. SIDE EFFECTS: archive_advertiser deactivates the company and prevents new orders from being created under it. Does not delete historical data. WHEN TO USE: Use companies to manage the advertiser/agency entities required before creating orders. An order must be linked to an advertiser.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_advertisers: List all advertiser companies on the network. Read-only, paginated. • get_advertiser: Get a specific advertiser by ID. Read-only. Requires company_id. • create_advertiser: Create a new advertiser company. Write, 0.5 credits. Requires name and optionally creditStatus, address. • update_advertiser: Update an existing advertiser's name, credit status, or address. Write. • archive_advertiser: Archive (deactivate) an advertiser. Destructive write — prevents new orders. Requires company_id. • list_agencies: List all agency companies on the network. Read-only. • get_agency: Get a specific agency by ID. Read-only. • create_agency: Create a new agency company. Write, 0.5 credits. • update_agency: Update an existing agency. Write. • list_contacts: List contacts associated with a company. Read-only. Requires company_id. • get_contact: Get a specific contact by ID. Read-only. • update_contact: Update a contact's details. Write. | |
| company_id | No | GAM Company ID (required for get/update/archive operations). | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral transparency. It discloses authentication (OAuth 2.0 required), credit costs (reads=0, writes=0.5 credits), and a key side effect (archive_advertiser deactivates the company). It also describes the output format. This covers critical behavioral traits, though side effects for other actions are not detailed.
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 and well-structured, with clear sections (MODE, AUTH, CREDITS, OUTPUT, SIDE EFFECTS, WHEN TO USE). Every sentence adds value, and there is no redundancy. It is appropriately sized for the tool's complexity.
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 sub-actions, 3 parameters, no output schema), the description provides key context: output summary, side effects, authentication, and credits. The action schema descriptions cover sub-action details. The description is largely complete, though more explicit error handling or per-action specifics could be beneficial.
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 and their descriptions thoroughly (including enum options for 'action'). The description adds no new parameter-level information beyond what's in the schema, 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's purpose: 'Manage GAM companies — advertisers, agencies, and contacts.' It provides a specific verb ('Manage') and resource ('GAM companies'), and sets context by noting that companies are required before creating orders, distinguishing it from order-related 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?
The description includes a 'WHEN TO USE' section that explains the tool is for managing advertiser/agency entities before creating orders. It gives clear context but does not explicitly state when not to use the tool or provide alternative tools. The guidance is clear and helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creative_assetsAInspect
Upload and create GAM creative asset files — images, HTML5, video, audio, and companion ads.
MODE: write (all actions upload or create assets) AUTH: OAuth 2.0 required CREDITS: 0.5 credits per upload/create action. OUTPUT: Returns CreativeAsset objects with assetId, fileName, fileSize, mimeType, and a preview URL. SIDE EFFECTS: Assets are stored in GAM and consume storage quota. compress_image modifies the asset file in-place. WHEN TO USE: Use creative_assets for asset file management (uploading raw files). Use creatives for full Creative entity management (associate assets with creative templates). Use creative_qa to validate assets after upload.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • bulk_upload: Upload multiple asset files in one call. Returns list of assetId per file. Preferred over individual uploads for batch workflows. • upload_from_url: Download a file from a URL and upload it to GAM as an asset. Write. Requires source_url and file_name. • upload_and_associate: Upload an asset and immediately associate it with an existing creative. Write. • upload_html5_zip: Upload an HTML5 ZIP package and validate its structure before storage. Returns assetId and a list of validation warnings. • create_image: Create an image asset from raw bytes or a local file path. Write. • create_html5: Create an HTML5 asset from inline HTML/CSS/JS content. Write. • create_html5_from_files: Create an HTML5 asset by bundling multiple local files. Write. • create_video: Create a video creative asset (VAST URL or inline video). Write. • create_audio: Create an audio creative asset. Write. • create_vast_redirect: Create a VAST redirect creative that points to an external VAST URL. Write. • create_companion: Create a companion ad asset associated with a video creative. Write. • create_third_party: Create a third-party tag creative asset (JavaScript or iframe snippet). Write. • create_classic_native: Create a classic native ad asset with headline, body, image, and CTA fields. Write. • compress_image: Compress an existing image asset to reduce file size. Modifies asset in-place. Write. • get_video_transcode_status: Check the status of a video transcode job. Read-only. Returns status: PENDING | PROCESSING | COMPLETE | FAILED. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses MODE (write, though one read-only sub-action exists), AUTH (OAuth 2.0), CREDITS (0.5 per action), OUTPUT (CreativeAsset objects with fields), and SIDE EFFECTS (storage quota, in-place compression). It does not cover rate limits or error handling, but overall is 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?
The description is well-structured with clear sections and detailed action lists. While somewhat lengthy, the complexity of 15 sub-actions justifies the length. It is front-loaded with the main purpose and structured for easy 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?
No output schema exists, so the description compensates by specifying return fields (assetId, fileName, etc.). It also covers auth, credits, and side effects. For a tool with many sub-actions and no output schema, it is reasonably 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 baseline is 3. The description adds value by detailing each action sub-operation with syntax and behavior beyond the schema's enum definition. The network_code parameter also has a clear description. This exceeds the baseline.
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: 'Upload and create GAM creative asset files — images, HTML5, video, audio, and companion ads.' It also differentiates from sibling tools (creative_assets vs. creatives vs. creative_qa) in the WHEN TO USE section.
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 provides WHEN TO USE guidance, distinguishing between creative_assets for file management, creatives for creative entity management, and creative_qa for validation. It also includes MODE, AUTH, CREDITS, OUTPUT, and SIDE EFFECTS sections, offering comprehensive context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creative_qaAInspect
Creative quality assurance — validate, scan, and pre-check creatives before and after trafficking.
MODE: read-only (all actions are non-destructive analysis) AUTH: OAuth 2.0 required CREDITS: 0 (all free) OUTPUT: Returns a QA report with pass/fail status per check, severity (CRITICAL/WARNING/INFO), and specific issue descriptions with remediation guidance. WHEN TO USE: Run creative_qa after uploading creative assets and before activating line items. Use pre_archive_check before archiving a creative to detect active associations. NOT the same as audit_skill: audit_skill checks network-wide operational health; creative_qa focuses specifically on individual creative compliance.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • scan_creative_compliance: Scan a creative for policy violations, prohibited content, missing click-through URLs, and size non-compliance. Returns a compliance report per check. • validate_creative_ssl: Verify that all URLs in a creative (click-throughs, image src, tracking pixels) are HTTPS. Critical for modern GAM requirements. • validate_creative_ssl_batch: Run SSL validation on multiple creatives in one call. Returns a per-creative summary. • audit_creative_tracking: Verify all impression and click tracking pixels are reachable and return 200. Detects broken trackers. • audit_order_tracking: Audit tracking pixels across all creatives associated with an order. Returns a per-creative, per-tracker report. • validate_tag_snippet: Validate a third-party ad tag snippet for syntax errors, unsafe JS, and missing required macros (%%CLICK_URL%%, etc.). • pre_archive_check: Check whether a creative has active LICA associations before archiving. Returns list of active line items that would be affected. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: 'MODE: read-only (all actions are non-destructive analysis)', 'AUTH: OAuth 2.0 required', 'CREDITS: 0 (all free)', and output format explained. Each sub-action's behavior is detailed in enum descriptions.
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 well-structured with a brief intro, metadata in key-value pairs, usage guidelines, and differentiation. It is slightly lengthy but each sentence adds value; the structure aids readability.
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 no output schema, the description explains the output. It covers purpose, usage, auth, credits, output, and sub-actions thoroughly. All necessary context for an agent to select and invoke the tool correctly is 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?
Schema coverage is 100%, and description adds value: action enum values have detailed descriptions, and network_code includes example and source instructions. The overall description also provides context that enhances parameter understanding.
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 'Creative quality assurance — validate, scan, and pre-check creatives before and after trafficking' and lists specific actions via enum. It distinguishes from sibling 'audit_skill' by specifying that audit_skill checks network-wide health while creative_qa focuses on individual creative compliance.
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?
Explicit usage guidance: 'Run creative_qa after uploading creative assets and before activating line items. Use pre_archive_check before archiving a creative to detect active associations.' Also notes that it is not the same as audit_skill, providing clear when-to-use and when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creativesAInspect
Manage GAM Creative entities and native styles — full lifecycle from list to archive, plus LICA management.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5 credits. Bulk operations = 0.5 credits flat. OUTPUT: Returns Creative objects with id, name, type, size, previewUrl, and associated assetIds. Preview URLs expire after 24h. WHEN TO USE: Use creatives for Creative entity management (metadata, associations, lifecycle). Use creative_assets for raw asset file uploads. Use creative_qa for compliance validation. NOTE: A Creative entity in GAM wraps one or more creative_assets. A LICA (LineItem-Creative Association) links a Creative to a LineItem for serving.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_creatives_by_advertiser: List all creatives for a given advertiser ID. Read-only. • list_creatives_by_line_item: List all creatives associated with a line item. Read-only. • list_creatives_by_network: List all creatives on the network with optional filters. Read-only. • get_creative: Get a single creative by ID. Read-only. • update_creative: Update a creative's name, size, or snippet. Write. • archive_creative: Archive a creative. Destructive write — removes from active serving. Run pre_archive_check first. • duplicate_creative: Duplicate an existing creative to use as a starting point. Write. • get_creative_preview_url: Generate a preview URL for a creative. Read-only. URL expires after 24h. • get_native_style_preview_urls: Generate preview URLs for a native style across all sizes. Read-only. • get_campaign_preview_links: Get all preview links for a campaign (all creatives + all placements). Read-only. • get_video_transcode_status: Check transcode status for a video creative. Read-only. • list_native_styles: List all native ad styles. Read-only. • get_native_style: Get a specific native style by ID. Read-only. • update_native_style: Update a native style's template or CSS. Write. • archive_native_style: Archive a native style. Destructive write. • duplicate_native_style: Duplicate a native style. Write. • ensure_classic_native_template: Ensure a classic native template exists, creating it if absent. Idempotent write. • list_creative_templates: List all creative templates available on the network. Read-only. • get_creative_template: Get a specific creative template by ID. Read-only. • discover_native_formats: Discover available native ad formats and their required fields. Read-only. • associate_creative: Create a LICA between one creative and one line item. Write. • bulk_associate_creatives: Create multiple LICAs in one call. Write. • get_licas_by_line_item: List all LICAs for a line item. Read-only. • get_licas_batch: Retrieve multiple LICAs by ID. Read-only. • deactivate_lica: Deactivate a LICA without deleting it. Write. • update_lica: Update a LICA's weight or start/end date. Write. • delete_licas: Delete LICAs permanently. Destructive write. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the mode (mixed read+write), auth requirement (OAuth 2.0), credit costs (reads=0, writes=0.5), output structure (Creative objects with specific fields), and preview URL expiry. Destructive actions like archive include a warning to run pre_archive_check first.
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 well-structured with labeled sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE, NOTE) and front-loads the main purpose. However, it is slightly verbose in listing action enum options, which are already detailed in the schema, making it somewhat redundant.
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 (multiple actions, LICA management, native styles), the description covers all essential aspects: purpose, usage guidelines, behavioral traits, parameter meanings, and output format. No output schema exists, but the description explains return fields, making it complete for appropriate tool 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 value beyond the schema by including contextual notes (e.g., 'Run pre_archive_check first' for archive actions) and explaining the relationship between Creative entities and LICAs. While the schema's enum descriptions are comprehensive, the description provides additional context for parameter usage.
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 manages GAM Creative entities and native styles, covering full lifecycle and LICA management. It uses a specific verb+resource ('Manage GAM Creative entities and native styles') and distinguishes from siblings like creative_assets and creative_qa in the 'WHEN TO USE' section.
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 provides when-to-use guidance in the 'WHEN TO USE' section, directing users to creative_assets for raw file uploads and creative_qa for compliance validation. It also explains the relationship between Creative entities, creative_assets, and LICAs, aiding correct tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creative_wrapper_skillAInspect
Manage GAM CreativeWrapper entities — wrappers that inject scripts around all creatives served on an ad unit or placement.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5 credits. OUTPUT: Returns CreativeWrapper objects with id, name, adUnitId or placementId, headerHtmlSnippet, footerHtmlSnippet, and ordering. SIDE EFFECTS: Active CreativeWrappers apply globally to every creative served on the targeted ad unit/placement. Misconfigured wrappers can break ad serving. Test in a staging network first. WHEN TO USE: Use for injecting site-wide measurement scripts, viewability tags, or brand safety layers. Use presets for reusable wrapper templates.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list: List all CreativeWrappers on the network. Read-only. • get: Get a specific CreativeWrapper by ID. Read-only. • create: Create a new CreativeWrapper. Write. Requires adUnitId or placementId, and headerHtmlSnippet or footerHtmlSnippet. • update: Update an existing wrapper's snippet or targeting. Write. • activate: Activate a paused wrapper. Write. • deactivate: Deactivate an active wrapper without deleting it. Write. Preferred over archive for temporary suspension. • archive: Archive a wrapper permanently. Destructive write. • set_data_declaration: Set the data usage declaration for a wrapper (required for GDPR/CCPA compliance). Write. • list_rich_media_ads_companies: List GAM-certified rich media companies available for wrapper configuration. Read-only. • find_third_party_company: Search for a third-party company by name to use in a wrapper. Read-only. • create_preset: Save a wrapper configuration as a reusable preset. Write. • list_wrapper_presets: List all saved wrapper presets. Read-only. • provision: Apply a preset to a set of ad units or placements. Bulk write. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description fully covers behavioral aspects: MODE (mixed read/write), AUTH (OAuth 2.0), CREDITS (0 for reads, 0.5 for writes), SIDE EFFECTS (global impact, risk of breaking ad serving), and a caution to test in staging. This exceeds typical disclosure.
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 well-structured with labeled sections (MODE, AUTH, etc.) and a usage recommendation. It front-loads the purpose. However, some phrases (e.g., 'CreativeWrapper' repetition) could be tightened without loss of 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?
The description covers return values (though no output schema), side effects, authentication, and credits. It is comprehensive given the tool's complexity. Minor gaps: lacks pagination details for list operations and error handling, but overall sufficient 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% and the schema descriptions for both parameters (action and network_code) are already detailed. The main description does not add extra meaning beyond what the schema provides, so it meets the baseline without improvement.
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 manages CreativeWrapper entities and explains they inject scripts around creatives. It distinguishes from siblings by specifying its GAM entity focus. However, the verb 'manage' is somewhat generic, though the sub-actions in the schema narrow it down.
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 includes a 'WHEN TO USE' section specifying appropriate scenarios (e.g., injecting measurement scripts) and advises testing in staging due to side effects. It implicitly suggests using presets for templates, but does not explicitly contrast with sibling tools like creatives or inventory.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dai_skillAInspect
DAI (Dynamic Ad Insertion) and broadcasting operations.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: read = 0 credits. OUTPUT: Results for DAI entities. WHEN TO USE: Use for managing Dynamic Ad Insertion auth keys and encoding profiles.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • create_cdn_configuration: Create a CDN configuration. • create_dai_auth_key: Create a DAI authentication key. • create_dai_encoding_profile: Create a DAI encoding profile. • delete_cdn_configuration: Delete a CDN configuration. • delete_dai_encoding_profile: Delete a DAI encoding profile. • perform_dai_auth_key_action: Perform an action on a DAI authentication key. • register_sessions: Register sessions. • update_cdn_configuration: Update a CDN configuration. • update_dai_auth_key: Update a DAI authentication key. • update_dai_encoding_profile: Update a DAI encoding profile. • get_stream_activity: Get stream activity. • list_cdn_configurations: List CDN configurations. • list_dai_auth_keys: List DAI authentication keys. • list_dai_encoding_profiles: List DAI encoding profiles. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load. It discloses MODE (mixed read+write), AUTH (OAuth 2.0 required), CREDITS (read = 0 credits), and OUTPUT (Results for DAI entities). This gives agents essential behavioral info, though it could mention that some actions (e.g., delete) are destructive.
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 very concise and structured with clear MODE, AUTH, CREDITS, OUTPUT, and WHEN TO USE sections. Every sentence provides value with no redundancy. It is front-loaded with the key 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 complexity (14 actions) and the absence of an output schema, the description covers purpose, behavior, auth, credits, and output type. However, it does not mention that additionalProperties: true allows dynamic parameters for specific actions, which could be important for agents to know.
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% (both parameters have descriptions in the schema). The description itself adds no further parameter details beyond what is already in the schema. Baseline 3 is appropriate as the schema already handles 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?
The description clearly states 'DAI (Dynamic Ad Insertion) and broadcasting operations' and specifies 'managing Dynamic Ad Insertion auth keys and encoding profiles'. The enum values in the action parameter further detail the specific operations. This distinguishes it from sibling tools like line_items or orders, which handle different GAM domains.
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 'WHEN TO USE' section explicitly says 'Use for managing Dynamic Ad Insertion auth keys and encoding profiles', providing clear context. However, it does not specify when not to use it or mention alternative tools for non-DAI operations, which would be helpful given the large set of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dealsAInspect
Author and manage programmatic deals — PMP, PG/PD proposals, ADCP deal flows, and auction packages.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Write operations = 0.5–2 credits. ADCP create = 2 credits. OUTPUT: Returns Deal or Proposal objects with id, status, buyerId, floorPrice, targeting, and negotiation state. SIDE EFFECTS: Proposals go through a negotiation workflow — state transitions (reserve, request_buyer_acceptance) trigger buyer notifications. terminate_proposal_negotiations is irreversible. WHEN TO USE: Use deals for programmatic direct (PG/PD), private marketplace (PMP), and ADCP deal creation. For standard direct-sold campaigns, use campaign tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_deals: List all programmatic deals on the network. Read-only. • get_deal: Get a specific deal by ID. Read-only. • create_deal: Create a new programmatic deal. Write. • update_deal: Update a deal's floor price or targeting. Write. • list_auctions: List auction packages. Read-only. • get_auction: Get a specific auction package. Read-only. • create_auction: Create an auction package. Write. • update_auction: Update an auction package. Write. • list_buyers: List all programmatic buyers on the network. Read-only. • get_buyer: Get a specific buyer by ID. Read-only. • get_proposal: Get a proposal by ID including its negotiation history. Read-only. • create_proposal: Create a new PG/PD proposal. Write. • update_proposal: Update a proposal's terms, targeting, or pricing. Write. • archive_proposal: Archive a proposal. Destructive write. • request_buyer_acceptance: Send a proposal to the buyer for acceptance. Write — triggers buyer notification. • reserve_proposal: Reserve inventory for a proposal (locks availability). Write. • edit_proposal_for_negotiation: Reopen an accepted proposal for renegotiation. Write. • terminate_proposal_negotiations: Permanently terminate negotiations. Irreversible destructive write. • get_marketplace_comments: Retrieve buyer/seller comments on a proposal. Read-only. • list_proposal_line_items: List line items within a proposal. Read-only. • create_proposal_line_items: Create line items within a proposal. Write. • update_proposal_line_items: Update proposal line items' targeting or pricing. Write. • archive_proposal_line_items: Archive proposal line items. Destructive write. • create_makegoods: Create makegood line items to compensate for underdelivered campaigns. Write. • estimate_deal_cost: Preview the credit cost of a deal operation. Read-only. • adcp_validate: Validate an ADCP deal configuration before creation. Read-only. • adcp_preview: Preview an ADCP deal's reach and estimated delivery. Read-only. • adcp_create: Create an ADCP deal. Write, 2 credits, requires confirmation_token. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description provides mode (mixed read+write), auth requirements (OAuth), credit costs per operation, side effects (state transitions, buyer notifications, irreversibility of termination). It lacks rate limit info but covers key behavioral traits 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?
The description is well-structured with labels (MODE, AUTH, CREDITS, etc.) and bullet-style action list. It is fairly long but most sentences add unique value. Could be more concise, but organization aids readability.
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 complex tool with 2 parameters and no output schema, the description covers output types, side effects, and credit costs. It lacks explicit mention of error handling or pagination but is otherwise 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%, so the baseline is 3. The description adds overall context like side effects and usage but does not provide additional detail on parameters beyond what the schema already includes. For high coverage, description adds marginal value.
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 authors and manages programmatic deals (PMP, PG/PD, ADCP, auction packages). It distinguishes from siblings by specifying to use the campaign tool for standard direct-sold campaigns. The summary verb 'Author and manage' plus the list of deal types provides precise 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?
Explicitly states when to use (programmatic direct, PMP, ADCP) and when not to (direct-sold campaigns, pointing to campaign tool). Also provides credit costs and side effects like negotiation workflows, giving clear context for agent decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_gamAInspect
Revoke and permanently remove the GAM OAuth credentials for a network from the tenant.
MODE: write (destructive) AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns {network_code, disconnected_at} SIDE EFFECTS: All OrbiAds operations requiring this network will fail after disconnection. The network must be re-authorized via initiate_gam_auth to restore access. WHEN TO USE: Use when intentionally removing a network from the tenant (e.g., end of contract). Confirmation token required — this action is irreversible via API.
| Name | Required | Description | Default |
|---|---|---|---|
| network_code | Yes | GAM network code to disconnect. | |
| confirmation_token | Yes | Write-confirmation token. Required — disconnection is irreversible. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description thoroughly discloses mode (destructive), auth requirements, side effects, and irreversibility, giving full behavioral 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?
Well-organized with labeled sections, no unnecessary words, and all essential 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?
Covers all relevant aspects: purpose, usage, behavior, output format, and side effects. No output schema needed given the explicit output description.
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 already describes both parameters; the description reinforces the critical role of confirmation_token, 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 the action ('Revoke and permanently remove') and the resource ('GAM OAuth credentials for a network from the tenant'), making it distinct from sibling tools like initiate_gam_auth.
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 provides a use case ('end of contract') and notes the requirement of a confirmation token. Could be improved by mentioning alternatives, but the sibling list provides context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
formatsAInspect
Manage the Custom Format Registry — reusable creative format recipes with multi-site scope.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0 credits (config changes only). OUTPUT: Returns Format recipe objects with id, name, dimensions, creative_type, and applicable_sites. WHEN TO USE: Use formats to define reusable creative format specifications (e.g., a 300x250 standard display recipe) that can be applied across multiple GAM networks. NOT the same as blueprint: blueprint defines inventory positions; formats defines creative format specifications. NOT the same as creative_assets: creative_assets manages uploaded files; formats manages format metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_recipes: List all registered creative format recipes. Read-only. • list_suggested_recipes: List AI-suggested format recipes based on the network's inventory. Read-only. • accept_suggested_recipe: Accept and register a suggested recipe. Write. • reject_suggested_recipe: Reject a suggested recipe so it is not shown again. Write. • register_recipe: Register a new custom format recipe. Write. • update_recipe: Update a recipe's dimensions, creative type, or scope. Write. • delete_recipe: Delete a format recipe. Destructive write — does not affect existing creatives. • resolve: Resolve conflicts between formats across sites. Write. • detect_conflicts: Detect format conflicts across registered sites without resolving them. Read-only. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses the MODE ('mixed (read + write)'), AUTH ('OAuth 2.0 required'), CREDITS ('Reads = 0. Writes = 0 credits (config changes only)'), and OUTPUT structure. It also details the behavioral traits of each sub-operation, including which are read-only, write, or destructive, and the implications of destructive actions (e.g., 'delete_recipe: Destructive write — does not affect existing creatives').
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 well-structured with clear sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). It is front-loaded with the purpose. While it is somewhat long, every sentence adds value, and the bullet points for action types improve readability. However, some repetition of schema content could be trimmed.
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 is complete given the tool's complexity and lack of output schema. It explains the output fields (id, name, dimensions, creative_type, applicable_sites), covers authentication, credits, and sub-operations. It provides enough context for an AI agent to understand when and how to use this tool. The differentiation from siblings adds to 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?
The input schema has 100% description coverage, so the baseline is 3. The description repeats some parameter details (e.g., action enum values) but does not add significant new meaning beyond the schema's descriptions. The schema already explains each action in detail. The description provides a high-level overview but does not significantly enhance parameter understanding.
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: 'Manage the Custom Format Registry — reusable creative format recipes with multi-site scope.' It uses a specific verb 'manage' and identifies the resource as creative format recipes. It also distinguishes itself from sibling tools like 'blueprint' and 'creative_assets', providing clear differentiation.
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 when to use the tool: 'Use formats to define reusable creative format specifications' that can be applied across multiple GAM networks. It also provides explicit scenarios to avoid by stating what it is NOT the same as (blueprint and creative_assets). The 'WHEN TO USE' section provides clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gam_adminAInspect
GAM admin orchestration — 48 operations across 7 administrative areas: Teams, Sites, Mobile Apps, Custom Fields, Labels, Publisher Provided Signals, and Users.
MODE: mixed (read + write) AUTH: OAuth 2.0 required — user must have Network Admin role for write operations CREDITS: Reads = 0. Writes = 0.5 credits. OUTPUT: Returns administrative entity objects specific to the sub-area (Team, Site, MobileApp, CustomField, Label, PublisherProvidedSignalsConfig, User objects). SIDE EFFECTS: User management operations (deactivate, remove) affect access control. Label and custom field changes propagate to existing entities. Team changes affect inventory access rights. WHEN TO USE: Use gam_admin for network configuration and governance tasks (team structure, user management, custom metadata). Use targeting for custom targeting key-values used in ad serving.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_teams: List all teams on the network. Read-only. • get_team: Get a team by ID. Read-only. • create_team: Create a new team. Write. • update_team: Update a team's name or description. Write. • delete_team: Delete a team. Destructive write — removes team membership associations. • add_team_members: Add users to a team. Write. • remove_team_members: Remove users from a team. Write. • list_sites: List all sites on the network. Read-only. • get_site: Get a site by ID. Read-only. • create_site: Create a new site. Write. • update_site: Update a site. Write. • delete_site: Delete a site. Destructive write. • list_mobile_apps: List mobile apps registered on the network. Read-only. • get_mobile_app: Get a mobile app by ID. Read-only. • create_mobile_app: Register a new mobile app. Write. • update_mobile_app: Update a mobile app's details. Write. • list_custom_fields: List all custom fields defined on the network. Read-only. • get_custom_field: Get a custom field by ID. Read-only. • create_custom_field: Create a custom field for orders, line items, or creatives. Write. • update_custom_field: Update a custom field's name or options. Write. • deactivate_custom_field: Deactivate a custom field. Soft delete — preserves existing values. • list_custom_field_options: List options for a custom field of type SELECT. Read-only. • create_custom_field_option: Add a new option to a SELECT custom field. Write. • update_custom_field_option: Update a custom field option. Write. • deactivate_custom_field_option: Deactivate a custom field option. Write. • list_labels: List all labels. Read-only. • get_label: Get a label by ID. Read-only. • create_label: Create a new label. Write. • update_label: Update a label. Write. • deactivate_label: Deactivate a label. Write. • list_pps_configs: List Publisher Provided Signals configurations. Read-only. • get_pps_config: Get a PPS config by ID. Read-only. • create_pps_config: Create a PPS configuration. Write. • update_pps_config: Update a PPS configuration. Write. • delete_pps_config: Delete a PPS configuration. Destructive write. • list_users: List all users on the network. Read-only. • get_user: Get a user by ID. Read-only. • get_current_user: Get the currently authenticated user's profile. Read-only. • create_user: Create a new user account. Write. • update_user: Update a user's role or email. Write. • deactivate_user: Deactivate a user account. Write — revokes network access. • perform_user_action: Perform a lifecycle action on a user (ACTIVATE, DEACTIVATE). Write. • list_roles: List all roles available on the network. Read-only. • list_team_memberships: List team memberships for a user. Read-only. • get_user_record: Get a user's full record including role and team assignments. Read-only. • get_salesperson_record: Get salesperson metadata for a user. Read-only. • get_trafficker_record: Get trafficker metadata for a user. Read-only. • audit_user_access: Audit user access rights: roles, teams, and accessible inventory. Read-only. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It covers side effects (user deactivation/removal affects access control, label changes propagate), auth needs, credit costs (reads=0, writes=0.5), and output types per sub-area. Does not mention rate limits or error conditions, but given complexity, it's thorough.
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?
Well-structured with headings (MODE, AUTH, CREDITS, OUTPUT, SIDE EFFECTS, WHEN TO USE). Front-loaded with summary. Could be slightly more concise, but organization aids readability.
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 many aspects (side effects, auth, credits, when to use). However, fails to mention that sub-operations may require additional parameters beyond action and network_code (schema has additionalProperties: true). Also lacks return value format details. Adequate but 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 coverage is 100% with detailed enum descriptions for action and network_code. The description adds overall context (auth, credits) but does not significantly enhance individual parameter meaning beyond the 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?
Description clearly states it's a GAM admin orchestration tool with 48 operations across 7 administrative areas. It provides a specific verb+resource summary and distinguishes from sibling 'targeting' tool in the WHEN TO USE section.
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?
WHEN TO USE section explicitly recommends using gam_admin for network configuration and governance tasks, and suggests targeting for custom targeting key-values. Auth requirements (OAuth 2.0, Network Admin role for writes) are stated. Lacks explicit exclusion of other sibling tools but provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gam_auditAInspect
Run a full GAM network compliance audit combining hygiene, diagnostics, and a standards baseline in one call.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns a comprehensive markdown report with: (1) hygiene findings, (2) operational diagnostics, (3) standards baseline results per framework control. Overall pass/fail verdict included. WHEN TO USE: Use gam_audit for a complete one-shot network audit. For individual audit components, use audit_skill with the specific action. NOT the same as audit: audit queries change history; gam_audit analyzes current state. NOT the same as audit_skill: gam_audit is a convenience wrapper that calls hygiene_check + ops_diagnostic + standards_baseline in sequence.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | Compliance framework for the standards baseline section. Defaults to orbiads_baseline if omitted. | |
| network_code | Yes | GAM network code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses the tool's read-only mode, required OAuth 2.0 authentication, zero credit cost, and the structure of the markdown output report including pass/fail verdict. It also explains it is a wrapper calling three sub-tools.
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 well-organized with labeled sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE) and clear differentiators. Every sentence serves a purpose without 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 no output schema, the description adequately describes the output (comprehensive markdown report with three sections and verdict). It also explains the tool's role as a convenience wrapper and differentiates it from related tools.
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 stating the default value for the framework parameter ('Defaults to orbiads_baseline if omitted'), which is not in the schema. However, it does not provide additional semantic context beyond what the schema already offers.
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 runs a full GAM network compliance audit combining hygiene, diagnostics, and standards baseline. It distinguishes itself from siblings audit and audit_skill with explicit 'NOT the same' statements.
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 includes a 'WHEN TO USE' section that advises using this tool for a complete one-shot audit and directs to audit_skill for individual components. It also clarifies the difference from audit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gam_featuresAInspect
Inspect GAM network features — discover which beta features and capabilities are enabled.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns a list of NetworkFeature objects with featureName, enabled (boolean), and description. WHEN TO USE: Call before using advanced GAM features to verify they are enabled on the network. Use probe_gam_features when you need to test a specific capability live.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get_gam_features: Return the cached list of features enabled on the network. • probe_gam_features: Live-probe the network for feature availability (slower but always current). • refresh_gam_features: Force-refresh the feature cache. Call after a GAM admin enables new features. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only mode, OAuth requirement, zero credits, and output format. Explains caching behavior (cached vs live-probe). No contradicting annotations. Lacks mention of rate limits or error handling, but adequate given annotations absence.
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?
Extremely concise with clear section headers (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). Every sentence serves a purpose, 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?
Covers purpose, usage, auth, output, and actions well. Explains caching behavior and sub-action selection. Lacks details on default network_code behavior and error cases, but sufficient for a simple read-only tool with full schema coverage.
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 minimal semantic value beyond what is already in the schema's parameter descriptions, merely rephrasing the action enum values.
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 'Inspect GAM network features' with specific verb and resource, and the first line explicitly defines the tool's purpose. It distinguishes from siblings like 'gam_admin' and 'gam_jobs' by focusing on feature inspection.
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: 'Call before using advanced GAM features' and 'Use probe_gam_features when you need to test a specific capability live.' Includes context for when to use each sub-action, though does not exhaustively list all alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gam_jobsAInspect
Poll and manage async GAM background jobs.
MODE: read-only (polling only — jobs are created by other tools) AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns Job objects with id, type, status (PENDING | RUNNING | COMPLETE | FAILED), progress (0–100), result_url or result_data, and error if failed. WHEN TO USE: Use after starting a long-running operation (e.g., large inventory scan, bulk line item creation) that returns a job_id. Poll until status = COMPLETE or FAILED.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • poll: Poll a job's current status and progress. Returns status and progress percentage. Recommended polling interval: 5 seconds. • get: Get a completed job's full result. Returns result_data or result_url for download. • list: List recent jobs for the current tenant. Read-only. • cancel: Cancel a running job. Write — interrupts the background operation. | |
| job_id | No | Async job identifier returned by a previous long-running operation. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: read-only mode, OAuth 2.0 requirement, free credits, output structure (Job objects with id, type, status, progress, result_url, error), and recommended poll interval of 5 seconds.
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 well-structured with labeled sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE), is front-loaded with the purpose, and every sentence adds value. Length is appropriate for the tool's complexity.
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 no output schema or annotations, the description is thorough: it covers all sub-operations, authentication, output format, usage context, and even credits. No critical information is missing for an agent to use the tool 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 coverage is 100% with parameter descriptions, but the description adds meaningful context beyond the schema, such as the recommended polling interval for 'poll' and how to obtain network_code. This enhances usability without being redundant.
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 managing async GAM background jobs, specifying 'Poll and manage async GAM background jobs.' It differentiates from the sibling 'jobs' tool by noting that jobs are created by other tools and this is read-only polling.
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 includes an explicit 'WHEN TO USE' section advising to use after starting a long-running operation and poll until completion. It also details the four sub-actions (poll, get, list, cancel) with their contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_my_tenant_idAInspect
Return the OrbiAds tenant ID for the authenticated session.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns {tenant_id: string} WHEN TO USE: Call this first in any workflow to resolve your tenant_id. The tenant_id is required by some internal operations and for multi-tenant debugging.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses read-only mode, OAuth requirement, free credits, and output format. No annotations to contradict.
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?
Well-structured with labeled sections, concise yet complete, no redundant 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?
Fully covers purpose, usage, and output for a zero-parameter tool. No 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?
No parameters; baseline 4 is appropriate since description doesn't need parameter info.
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 returns the tenant ID for the authenticated session. Distinct from sibling tools like tenant_catalog.
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 to call first in any workflow and explains why the tenant_id is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initiate_gam_authAInspect
Start the OAuth 2.0 authorization flow to link a GAM network to the OrbiAds tenant.
MODE: write (creates a pending auth session) AUTH: Partially authenticated (OrbiAds session required, GAM auth not yet established) CREDITS: 0 (free) OUTPUT: Returns {auth_url: string, session_id: string}. Open auth_url in a browser and authorize. Then poll poll_auth_status with the session_id. WHEN TO USE: Call when a GAM network has not yet been authorized (check_credentials returns false). Do not call if credentials are already valid.
| Name | Required | Description | Default |
|---|---|---|---|
| network_code | Yes | The GAM network code to authorize. Obtain from the GAM UI or list_accessible_networks after a Google sign-in. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses mode (write), auth requirements, credits (free), output format (auth_url, session_id), and the need to poll poll_auth_status. All behavioral aspects are communicated.
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 well-structured with headings (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE) and every sentence is informative. No waste.
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 no output schema, the description adequately explains the output and follow-up steps. It also references dependent tools and prerequisites, making the tool's role in the broader workflow clear.
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 single parameter network_code has a helpful description in both schema and tool description, including how to obtain it ('from the GAM UI or list_accessible_networks'). Schema coverage is 100%, and the description adds 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 the tool's purpose: 'Start the OAuth 2.0 authorization flow to link a GAM network to the OrbiAds tenant.' It uses a specific verb and resource, and distinguishes from sibling tools like check_credentials and poll_auth_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?
The description provides explicit guidance on when to use ('when a GAM network has not yet been authorized (check_credentials returns false)') and when not to ('Do not call if credentials are already valid').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
inventoryAInspect
Manage GAM ad unit inventory — tree traversal, audit, batch creation, ads.txt, and blueprint sync.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5–1 credit. OUTPUT: get_ad_unit_tree returns a hierarchical JSON of ad units. audit_inventory returns an analysis report. create_ad_units_batch returns a list of {requested_name, created_id, status}. SIDE EFFECTS: push_inventory_blueprint creates or updates ad units in GAM based on the stored blueprint. archive_inactive_ad_units is destructive and cannot be undone. WHEN TO USE: Use inventory for ad unit structure management. Use targeting for custom targeting keys. Use blueprint for the canonical format/position definition that drives inventory creation.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get_ad_unit_tree: Return the full ad unit hierarchy as a nested JSON tree. Read-only. • audit_inventory: Analyze the inventory for structural issues: orphaned ad units, duplicate sizes, missing placements. Read-only. • create_ad_units_batch: Create multiple ad units in one call from a specification list. Write. • generate_ads_json: Generate an ads.json / app-ads.json file from the current inventory. Read-only. • generate_inventory_blueprint: Generate a blueprint JSON from existing GAM inventory (reverse-engineering). Read-only. • push_inventory_blueprint: Push the stored blueprint to GAM, creating or updating ad units. Write, 1 credit. • get_ad_units_by_ids: Retrieve multiple ad units by ID in one call. Read-only. • find_inactive_ad_units: Find ad units with no recent impressions. Read-only. • archive_inactive_ad_units: Archive ad units flagged as inactive. Destructive write. Run find_inactive_ad_units first. • list_ad_unit_sizes: List all sizes used across ad units on the network. Read-only. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description fully discloses mode (mixed read+write), auth requirements (OAuth), credit costs, output formats for key actions, and side effects (e.g., destructive nature of archive_inactive_ad_units).
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?
Description is compact (~150 words) and well-structured with sections (MODE, AUTH, CREDITS, OUTPUT, SIDE EFFECTS, WHEN TO USE). Every sentence serves a 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 complexity of 10 sub-operations and no output schema, the description covers all necessary context: mode, auth, credits, side effects, usage guidance, and output format for key actions.
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 has 100% coverage with detailed enum descriptions for each action and network_code parameter. The description text does not add new information beyond summarizing the schema, meeting the baseline 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?
Description clearly states the tool manages GAM ad unit inventory with specific sub-operations like tree traversal, audit, batch creation. It also distinguishes from sibling tools like targeting and blueprint.
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?
Explicit WHEN TO USE section directs agents to use inventory for ad unit structure, targeting for custom targeting keys, and blueprint for canonical format. Additionally, within action descriptions, it provides chaining instructions (e.g., run find_inactive_ad_units first before archive).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
jobsAInspect
Manage OrbiAds campaign deployment jobs — distinct from GAM background jobs (use gam_jobs for those).
MODE: read + limited write AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns OrbiAds Job objects with id, campaign_id, status, created_at, and deployment log. WHEN TO USE: Use jobs to check the status of an OrbiAds campaign deployment job. Use gam_jobs to poll GAM-native background operations. NOT the same as gam_jobs: jobs tracks OrbiAds deployment pipelines; gam_jobs tracks GAM server-side async jobs.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get_job: Get an OrbiAds deployment job by ID. Returns status, progress, and deployment log. • list_jobs: List recent OrbiAds deployment jobs for the tenant. Read-only. • duplicate_job: Duplicate a completed job configuration to re-run a similar deployment. Write. | |
| job_id | No | OrbiAds deployment job identifier. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses MODE (read+limited write), AUTH (OAuth 2.0 required), CREDITS (0/free), and OUTPUT format (Job objects with specific fields). While it doesn't detail side effects of duplicate_job, it adequately covers the behavioral profile beyond the schema.
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?
Concise and well-structured: brief opening sentence, then sections for mode, auth, credits, output, usage. Front-loaded with primary purpose. Every sentence adds value without 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 the tool has 3 parameters (1 required) and no output schema, the description provides sufficient context: purpose, usage relative to siblings, behavioral traits, and parameter enumeration. Complete for its complexity.
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 reinforces the action parameter by mentioning sub-operations but does not add significant new meaning beyond what the schema already 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?
The description clearly states the tool manages OrbiAds campaign deployment jobs, distinct from GAM background jobs. It specifies the resource (jobs) and operation (manage, with sub-operations get, list, duplicate). This distinguishes it from siblings like gam_jobs.
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 (check OrbiAds job status) and when to use the sibling gam_jobs (GAM backend operations). Also explicitly says 'NOT the same as gam_jobs', providing clear guidance on alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
line_item_lifecycleAInspect
Perform lifecycle status transitions on a GAM Line Item (activate, pause, archive, resume).
MODE: write AUTH: OAuth 2.0 required CREDITS: 0.5 credits. Confirmation token required for archive. OUTPUT: Returns {line_item_id, previous_status, new_status} WHEN TO USE: Use this for status transitions only. For data updates (targeting, budget, dates), use the line_items update action. DESTRUCTIVE: archive cannot be undone from the API.
| Name | Required | Description | Default |
|---|---|---|---|
| line_item_id | Yes | GAM Line Item ID. | |
| network_code | Yes | GAM network code. | |
| lifecycle_action | Yes | activate: start delivery. pause: stop delivery temporarily. resume: restart a paused line item. archive: permanently remove from serving (destructive). | |
| confirmation_token | No | Required for lifecycle_action=archive. Obtain from a prior estimate_cost call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses destructive nature of archive, OAuth 2.0 requirement, 0.5 credits, output structure, and confirmation token necessity.
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?
Very concise, each sentence adds value. Front-loaded with key info, uses bullet points for clarity, and avoids 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?
No output schema, but description includes output structure. Covers auth, credits, destructive action, and prerequisite for archive. Complete for a lifecycle 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?
Input schema has 100% coverage with clear descriptions. Description adds context like confirmation token from estimate_cost call, but schema already provides good understanding.
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 performs lifecycle status transitions (activate, pause, archive, resume) on a GAM Line Item. Distinguishes from sibling tool 'line_items' which is for data updates.
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 when to use: only for status transitions. For data updates, use line_items update action. Also mentions confirmation token requirement for archive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
line_itemsAInspect
Non-lifecycle Line Item operations — get, list, update, duplicate, verify, and create programmatic types.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5 credits. OUTPUT: Returns LineItem objects with id, name, type, startDateTime, endDateTime, costType, unitsBought, targeting, and deliveryIndicator. WHEN TO USE: Use line_items for individual line item CRUD and programmatic line item creation. Use campaign for full campaign orchestration. Use line_item_lifecycle for status transitions (activate/pause/archive). NOT the same as line_item_lifecycle: line_items handles data updates; line_item_lifecycle handles status transitions.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get: Get a single line item by ID. Read-only. • list_by_order: List all line items under an order. Read-only. Requires order_id. • update: Update a line item's name, targeting, dates, or budget. Write. • update_targeting: Update only the targeting of a line item. Write. More efficient than full update for targeting-only changes. • duplicate: Duplicate a line item to create a copy. Write. • verify: Verify that a line item configuration is valid before activation. Read-only. • approve: Approve a line item for delivery. Write. • archive: Archive a line item. Destructive write. • create_batch: Create multiple standard line items under an order. Write. • activate_batch: Activate multiple line items in one call. Write. • pause_batch: Pause multiple line items in one call. Write. • create_adexchange: Create an Ad Exchange line item. Write. Requires adExchangeEnvironment and targeting. • create_open_bidding: Create an Open Bidding line item. Write. Requires yieldGroupIds. • create_preferred_deal: Create a Preferred Deal line item. Write. Requires fixedCpm and buyerId. • list_private_deals: List Private Marketplace deals associated with line items. Read-only. | |
| order_id | No | GAM Order ID (required for list_by_order and create_batch). | |
| line_item_id | No | GAM Line Item ID (required for single-entity operations). | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It conveys that the tool is mixed read+write, requires OAuth 2.0, consumes credits (reads = 0, writes = 0.5), and lists output fields. However, it could be more explicit about destructive operations beyond 'archive' and the consequences of batch operations.
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 well-structured with clear sections (summary, mode, auth, credits, output, when to use). It is concise, using bullet points and short paragraphs, with every sentence adding value. 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?
Despite having 4 parameters and no output schema, the description provides comprehensive context: authentication, credit costs, output field list, explicit usage guidance against siblings, and a detailed action enum summary. This fully compensates for the missing output schema and ensures the agent can correctly invoke 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?
The input schema has 100% description coverage, meaning all parameters already have clear descriptions. The tool description adds a summary of the action enum but does not provide additional semantic value beyond what the schema offers. Baseline is 3, which is appropriate here.
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 'Non-lifecycle Line Item operations — get, list, update, duplicate, verify, and create programmatic types,' clearly defining the tool's purpose as CRUD and programmatic creation for line items. It also distinguishes from siblings like 'line_item_lifecycle' and 'campaign', ensuring no ambiguity.
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 includes a 'WHEN TO USE' section that explicitly contrasts this tool with 'campaign' and 'line_item_lifecycle', stating that line_items handles individual CRUD and programmatic creation, while others handle orchestration or status transitions. This provides clear guidance on when to use each tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
live_streamAInspect
Manage live stream ad breaks for GAM video workflows.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: list/get = 0 credits. create/patch/delete are write operations. OUTPUT: Returns live stream ad break objects scoped by event, asset key, or custom asset key. WHEN TO USE: Use live_stream to inspect, create, update, or delete ad breaks for live video events.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list: List ad breaks for an event_id, asset_key, or custom_asset_key. • get: Get a specific ad break by identifier. • create: Create a new live stream ad break. • patch: Update an existing live stream ad break by asset key. • delete: Delete an existing live stream ad break by asset key. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explicitly states MODE (mixed read+write), AUTH (OAuth 2.0 required), CREDITS (list/get free, create/patch/delete are write operations), and OUTPUT (returns live stream ad break objects scoped by event/asset key). This disclosure is thorough, though it does not detail potential side effects or error conditions.
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 extremely concise at three sentences plus a structured block (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). Every element serves a purpose, and it is front-loaded with the core function. No redundant or 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 tool's mixed mode and multiple actions, the description covers all essential facets: purpose, auth, credits, output format, and usage guidance. The only gap is the lack of a detailed output schema, but the description compensates by stating the return type. The network_code source is noted. Complete for typical agent use.
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 already has 100% description coverage for its two parameters (action with enum descriptions, network_code with source guidance). The description adds context about scoping by event/asset key but does not significantly enhance understanding beyond the 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 'Manage live stream ad breaks for GAM video workflows', which is a specific verb+resource. It further breaks down into five sub-operations (list, get, create, patch, delete) via the action parameter, distinguishing it from sibling tools focused on other aspects of ad management.
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 includes a dedicated 'WHEN TO USE' section: 'Use live_stream to inspect, create, update, or delete ad breaks for live video events.' It also specifies the MODE (mixed), AUTH requirements, and CREDITS cost, providing context for appropriate use. However, it does not explicitly mention when not to use or list alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mcmAInspect
Read Multi-Customer Management earnings for parent publishers.
MODE: read-only AUTH: OAuth 2.0 required with MCM principal access CREDITS: 0 credits OUTPUT: Returns monthly MCM earnings for the requested month and year. WHEN TO USE: Use mcm for publisher revenue reporting across MCM child networks.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • earnings_fetch: Fetch monthly MCM earnings for a given month and year. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses read-only mode, OAuth requirements, zero credits, and output type. This provides good behavioral context beyond the schema.
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 very concise with clear sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE) and no redundant sentences. Front-loaded with 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 read-only nature and output, but lacks details on the additional properties (month/year) implied by the schema's additionalProperties:true. Missing details on parameter formats reduce completeness for a tool with unlisted required inputs.
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 has 100% coverage for defined parameters (action, network_code), but the description mentions month and year as implicit parameters not in the schema, adding context. However, it does not detail their formats or where to specify them, so value added is moderate.
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 reads MCM earnings for parent publishers, using specific verb and resource. It distinguishes from siblings as the only tool focused on Multi-Customer Management earnings.
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 a clear when-to-use statement for publisher revenue reporting. However, it does not explicitly exclude alternatives or mention when not to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
networkAInspect
GAM network management — get info, switch active network, list accessible networks, update settings.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. update_network = 0.5 credits. OUTPUT: get_network_info returns {networkCode, displayName, currencyCode, timeZone, effectiveRootAdUnit}. list_accessible_networks returns all networks the authenticated user can access. WHEN TO USE: Use network to discover and switch between multiple GAM networks. Call list_accessible_networks after authentication to find available networks, then switch_network to set the active one.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get_network_info: Return metadata about the current active GAM network. • switch_network: Set a different network as the active one for subsequent operations. Requires network_code of the target network. • list_accessible_networks: List all GAM networks accessible to the authenticated Google account. • update_network: Update network-level settings (display name, currency). Write, requires Network Admin role. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description compensates by stating MODE (mixed), AUTH (OAuth 2.0), and CREDITS per operation. It also details return values for get_network_info and list_accessible_networks. However, it does not explicitly mention that switching or updating may have side effects, though those are implied.
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 well-structured with clear sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). It is slightly verbose but each sentence adds value. Front-loaded with summary.
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 no output schema, the description thoroughly explains return values and behavior. The tool has only 2 parameters with simple enum, and the description covers all necessary context for an agent to use it 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%. The description adds value beyond schema by providing context for network_code ('Obtain via select_gam_network or list_accessible_networks') and detailing each action's purpose and requirements.
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 is for 'GAM network management' and lists specific sub-operations: get info, switch, list, update. This distinguishes it from sibling tools that handle different entities like audiences, orders, etc.
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 includes a 'WHEN TO USE' paragraph that explicitly explains usage: after authentication, call list_accessible_networks to find networks, then switch_network to set active. It also provides context for each sub-operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_lifecycleAInspect
Perform lifecycle status transitions on a GAM Order (approve, archive, disapprove).
MODE: write AUTH: OAuth 2.0 required CREDITS: 0.5 credits. Confirmation token required for archive. OUTPUT: Returns {order_id, previous_status, new_status} WHEN TO USE: Use this for order status transitions. For data updates, use the orders update action. DESTRUCTIVE: archive stops all line item delivery under the order.
| Name | Required | Description | Default |
|---|---|---|---|
| order_id | Yes | GAM Order ID. | |
| network_code | Yes | GAM network code. | |
| lifecycle_action | Yes | approve: allow delivery. disapprove: block delivery. archive: permanently deactivate (destructive). | |
| confirmation_token | No | Required for lifecycle_action=archive. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description fully shoulders the transparency burden. It declares MODE: write, AUTH: OAuth 2.0 required, CREDITS: 0.5 credits, and OUTPUT: returns {order_id, previous_status, new_status}. It also flags the destructive nature: 'DESTRUCTIVE: archive stops all line item delivery under the order.' This covers mutation, authentication, cost, return format, and side effects thoroughly.
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, using a structured format with labeled sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE, DESTRUCTIVE). Every sentence adds value—no fluff, and the most critical information is front-loaded in the first line.
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 tool involves mutation with 4 parameters and no output schema. The description covers all essential aspects: purpose, when to use, authentication requirements, credit cost, return format, and destructive consequences. It leaves no significant gaps for an agent to interpret.
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, providing detailed descriptions for each parameter, including enum options and required fields. The description adds context about confirmation_token being required for archive and the destructive nature of archive, which enhances understanding beyond the schema. With full schema coverage, the additional description justifies a score above baseline 3.
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 starts with 'Perform lifecycle status transitions on a GAM Order (approve, archive, disapprove).' It clearly states the specific actions and the resource (GAM Order), distinguishing it from sibling tools like line_item_lifecycle or orders.
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?
Includes a 'WHEN TO USE' section that explicitly states 'Use this for order status transitions. For data updates, use the orders update action.' This provides clear context and an alternative, helping the agent decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ordersAInspect
Non-lifecycle Order operations — list, get, create, update, and manage orders.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5 credits. OUTPUT: Returns Order objects with id, name, status, advertiserId, agencyId, salespersonId, secondarySalespersonIds, traffickerId, customFieldValues, totalBudget, and startDateTime/endDateTime. WHEN TO USE: Use orders for Order entity management. Use campaign for full campaign orchestration that includes Order + LineItems. Use order_lifecycle for status transitions. NOT the same as order_lifecycle: orders handles data; order_lifecycle handles approve/archive/disapprove transitions.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_delivering: List orders currently in delivery. Read-only. • get: Get a single order by ID. Read-only. • list: List orders with optional filters (advertiser, status, date range). Read-only. • create: Create a new order. Write. Requires advertiserId, name, and traffickerId. • archive: Archive an order. Destructive write — stops delivery. • approve: Approve an order for delivery. Write. • verify_setup: Verify an order's setup (targeting, creative associations) before activation. Read-only. • update: Update an order's name, salespersonId, secondarySalespersonIds, customFieldValues, or notes. Write. • find_or_create: Find an existing order matching the criteria or create a new one if not found. Idempotent write. • list_users: List users (salespeople, traffickers) associated with an order. Read-only. • list_roles: List available order roles. Read-only. | |
| order_id | No | GAM Order ID (required for single-entity operations). | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: MODE (mixed), AUTH (OAuth 2.0 required), CREDITS (reads 0, writes 0.5), and OUTPUT fields. It also flags destructive actions (archive) and idempotency (find_or_create), providing comprehensive behavioral context beyond what structured fields would offer.
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 well-structured with clear sections (purpose, mode/auth/credits/output, usage guidance, differentiation). It is informative without being overly verbose, though slightly long. Every sentence earns its place, and key info 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 the tool's complexity (11 sub-actions), absence of output schema, and no annotations, the description compensates well. It details each action, output fields, and usage context, making it complete for an agent to understand and 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 coverage is 100%, so baseline is 3. The description adds meaningful context for the 'action' parameter by detailing each enum value with read/write status and requirements (e.g., 'create: Write. Requires advertiserId, name, and traffickerId'). This enhances understanding beyond 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 the tool's purpose as 'Non-lifecycle Order operations — list, get, create, update, and manage orders.' It differentiates from sibling tools like campaign and order_lifecycle with explicit statements, making the purpose distinct and well-defined.
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 'WHEN TO USE' section explicitly states when to use this tool ('Use orders for Order entity management') and when not to, naming alternatives ('Use campaign for full campaign orchestration... Use order_lifecycle for status transitions'). This provides clear guidance for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
placementsAInspect
Manage GAM placements — named groups of ad units used for targeting.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5 credits. OUTPUT: Returns Placement objects with id, name, description, targetedAdUnitIds, and status. WHEN TO USE: Use placements to create named groupings of ad units for targeting in line items. Placements are referenced in line item targeting via the targeting tool. Use inventory for individual ad unit management.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_placements: List all placements on the network. Read-only. • create_placement: Create a new placement grouping ad units. Write. Requires name and targetedAdUnitIds. • update_placement: Update a placement's name or ad unit membership. Write. • archive_placement: Archive a placement. Destructive write — removes from targeting options. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, description fully discloses MODE (mixed), AUTH (OAuth 2.0), CREDITS (reads=0, writes=0.5), and output fields. For each action, it explains behavior, e.g., 'archive_placement' is 'Destructive write — removes from targeting options.'
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?
Description is well-structured with sections (purpose, MODE/AUTH/CREDITS/OUTPUT, WHEN TO USE). 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?
For a 2-parameter tool with enum actions, description covers all essential aspects: purpose, behavioral traits, when to use, output structure, and differentiation from siblings. No 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 description coverage is 100% with detailed enum explanations for action. Description adds no additional parameter semantics beyond what's in the schema, so 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 'Manage GAM placements — named groups of ad units for targeting.' It distinguishes from sibling tools by noting 'Use inventory for individual ad unit management' and references targeting tool for line item targeting.
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?
Explicit 'WHEN TO USE' section explains when to use placements (creating named groupings for targeting in line items) and when not (use inventory for individual ad unit management). Provides clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_auth_statusAInspect
Poll the OAuth authorization status after initiating a GAM auth flow.
MODE: read-only AUTH: OrbiAds session required CREDITS: 0 (free) OUTPUT: Returns {status: 'pending'|'authorized'|'failed', error?: string} WHEN TO USE: Call repeatedly (every 2–5 seconds) after initiate_gam_auth until status = 'authorized' or 'failed'.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes | Auth session ID returned by initiate_gam_auth. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully compensates by including MODE (read-only), AUTH requirements, CREDITS, and OUTPUT format. It clearly sets expectations about side effects and 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?
The description is well-structured with labeled sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). Every sentence serves a purpose, 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?
For a single-parameter polling tool with no output schema, the description covers purpose, usage context, behavior, auth, and expected output format completely.
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 adds no additional detail beyond the schema's parameter description. The context of use is implied, but no new semantic information is provided for the parameter itself.
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 'Poll the OAuth authorization status after initiating a GAM auth flow', specifying the verb (poll), resource (authorization status), and context (after initiate_gam_auth), distinguishing it from sibling tools like initiate_gam_auth.
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 provides 'WHEN TO USE' with specific instructions: 'Call repeatedly (every 2–5 seconds) after initiate_gam_auth until status = \'authorized\' or \'failed\''. This gives clear context and timing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pqlAInspect
Execute PQL (Publisher Query Language) queries against GAM reporting tables.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns a ResultSet with column definitions and rows. Each row is an array of values matching the column order. WHEN TO USE: Use pql for ad-hoc data extraction not covered by the reporting tool's structured reports. LIMITATIONS: Not all PQL tables are available on all networks (some require beta features). The Language and Device_Category tables have known limitations. For structured delivery/inventory reports, use reporting instead.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • run_query: Execute a PQL SELECT statement. Example: SELECT Id, Name FROM Order WHERE Status = 'DELIVERING'. Returns rows up to 1000 per call. | |
| pql_query | No | PQL SELECT statement. Supported tables: Order, LineItem, Creative, AdUnit, Placement, Company, User, and others. Max 1000 rows returned. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It declares read-only mode, OAuth 2.0 requirement, zero credits, and a clear output format (ResultSet with columns and rows). It also states a 1000-row limit. Minor omission: no mention of error handling or timeouts.
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 well-structured with labeled sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE, LIMITATIONS) and front-loaded with the main purpose. Every sentence adds information; 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?
The tool has 3 parameters and no output schema. The description covers return format, row limit, table references, and alternatives. It could mention pagination or that queries must be SELECT-type, but the read-only flag implies that. Sufficient for the given complexity.
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 beyond schema by listing supported tables (Order, LineItem, etc.), providing an example query, and explaining the network_code parameter's scope. This incrementally aids understanding.
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 'Execute PQL queries against GAM reporting tables' with a specific verb and resource. It differentiates from siblings like 'reporting' by stating it's for ad-hoc extraction not covered by structured reports, and explicitly directs users to 'reporting' for structured reports.
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 ('ad-hoc data extraction not covered by the reporting tool's structured reports') and when-not-to-use ('For structured delivery/inventory reports, use reporting instead'). It also lists limitations about table availability and known table issues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prebid_skillAInspect
Plan and operate Prebid.js / header bidding setup for GAM.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: preview and inspect reads are free. Generation/update actions may charge credits when they create or mutate GAM entities. OUTPUT: Returns targeting-key plans, line item generation summaries, cleanup previews, or update results. WHEN TO USE: Use prebid_skill to generate Prebid targeting keys, create or update Prebid line items, preview batches, inspect existing setup, or clean up generated artifacts.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • preview_batch: Preview a Prebid batch plan without mutating GAM. • generate_targeting_keys: Generate GAM custom targeting keys and values for Prebid. • generate_line_items: Generate Prebid line items from bucket and placement configuration. • update_line_items: Update existing Prebid line items. • inspect_existing_setup: Inspect existing GAM targeting keys, values, and line items for Prebid readiness. • cleanup: Preview or run cleanup for generated Prebid artifacts. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: mixed read/write mode, OAuth 2.0 requirement, credit costs (free reads, possible charges for mutations), and output types. It also implies mutation for cleanup/update actions.
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 efficiently structured with labeled sections (MODE, AUTH, etc.) and front-loaded with overall purpose. Every sentence adds value without 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 the tool's multiple sub-actions, the description covers high-level outputs and credit costs. The action enum in schema provides specifics. However, no output schema exists, and per-sub-action return details could be clearer, but overall it's 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 coverage is 100%, with detailed descriptions for action (enum with sub-action details) and network_code. The main description adds no extra parameter meaning beyond the schema, meeting the baseline.
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: 'Plan and operate Prebid.js / header bidding setup for GAM.' It lists specific actions (generate targeting keys, line items, preview, inspect, cleanup), making it distinct from sibling tools like creative_qa or dai_skill.
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 'WHEN TO USE' section provides explicit use cases, such as generating Prebid targeting keys or cleaning up artifacts. While it does not explicitly state when not to use or mention alternatives, the guidance is clear and contextual.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
previewAInspect
Generate creative and campaign preview URLs and validate creative coverage.
MODE: read-only AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns preview URLs (expire after 24h) and coverage reports listing which line items have zero or insufficient creative associations. WHEN TO USE: Use preview before launching a campaign to verify all creatives render correctly and coverage is complete.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • get_preview_urls: Generate preview URLs for a single creative across its associated ad sizes. • get_campaign_preview_urls: Generate preview URLs for all creatives in a campaign. Returns a per-line-item, per-creative list. • check_creative_coverage: Check that all line items in a campaign have at least one active creative. Returns a coverage report. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of behavioral disclosure. It states read-only mode, required OAuth 2.0 authentication, zero credits, and output specifics (URLs expire after 24h, coverage reports). 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 concise and well-structured: one clear introductory sentence followed by key-value lines for mode, auth, credits, output, and usage. Every sentence adds value with no waste.
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 (2 params, no output schema), the description adequately covers all necessary context: output format, expiration, and coverage report content. No missing information.
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 does not add parameter-specific information beyond what the schema already provides (enum values and network code description). It adds output context but not parameter detail.
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 the specific verb 'generate' and 'validate' with clear resources 'preview URLs' and 'creative coverage'. It uniquely identifies the tool's function among siblings like 'creatives' or 'campaign', making the purpose unmistakable.
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 when to use the tool ('before launching a campaign to verify all creatives render correctly and coverage is complete') but does not provide explicit when-not-to-use scenarios or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
productsAInspect
Manage GAM Products and Product Packages for programmatic direct deals.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5 credits. OUTPUT: Returns Product objects with id, name, type, rateType, rate, targeting, and status. WHEN TO USE: Use products to manage the GAM product catalogue for Programmatic Direct (PD) deals. Products define the inventory packages offered to buyers. For creating deals from products, use the deals tool.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • create: Create a new GAM product. Write. Requires name, productTemplateId, and rate. • list: List all products on the network with optional filters. Read-only. • get: Get a product by ID. Read-only. • update: Update a product's rate, targeting, or description. Write. • archive: Archive a product. Destructive write — removes from buyer-facing catalogue. • get_adcp: Get the ADCP (Automated Direct Campaign Pricing) configuration for a product. Read-only. • pricing_suggestion: Get a pricing suggestion for a product based on historical delivery data. Read-only. | |
| product_id | No | GAM Product ID (required for single-entity operations). | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses MODE (mixed), AUTH (OAuth 2.0 required), CREDITS (reads 0, writes 0.5 credits), OUTPUT (Product objects with fields), and details each sub-operation's nature (read/write/destructive). The archive action is explicitly described as destructive.
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 well-structured with headers (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE) and bullet points for actions. It is moderately sized and front-loaded with purpose. Every sentence adds value, though slightly verbose due to detailed action list.
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 no output schema, the description explains the return format (Product objects with id, name, etc.). It covers all actions, prerequisites for 'create', and references sibling tools. The tool is fairly complex, but the description fully addresses the gaps left by structured fields.
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 significant meaning by detailing each enum action with its requirements and the network_code parameter with an example and how to obtain it. However, the schema already documents thoroughly, so a slight bump to 4.
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 manages GAM Products and Product Packages for programmatic direct deals, specifying the verb 'Manage' and the resource. It distinguishes from sibling tools by mentioning the 'deals' tool for creating deals from products.
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 an explicit 'WHEN TO USE' section, stating this tool is for managing the product catalogue for Programmatic Direct deals, and refers to the 'deals' tool for creating deals from products, giving clear context and exclusion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reportingAInspect
Full GAM and GA4 reporting — delivery reports, custom reports, forecasting, traffic data, billing, and report management.
MODE: mixed (read + write) READ: all report-run, forecast, list, get, and discovery actions (majority of actions) WRITE: save_report_template (creates), update_report_template (mutates), duplicate_report_template (creates), delete_report_template (destructive), create_gam_report (creates in GAM), update_gam_report (mutates in GAM), delete_gam_report (destructive soft-delete — PATCH visibility=HIDDEN) AUTH: OAuth 2.0 required CREDITS: 0 (all actions free) OUTPUT: Delivery/custom reports return rows of dimension+metric values. Forecasts return estimated_impressions, estimated_clicks, and confidence intervals. Template/GAM report actions return the object after mutation. SIDE EFFECTS: • delete_report_template permanently removes the template from the tenant — irreversible. • delete_gam_report uses soft-delete (PATCH visibility=HIDDEN on the GAM REST API) — the report is hidden from the UI but not purged; there is no DELETE endpoint on GAM reports. • save_report_template and create_gam_report persist new entities that count against quotas. WHEN TO USE: Use reporting for all data extraction and analysis. Use reporting_skill for high-level multi-step reporting workflows described in natural language. • Delivery analysis: check_delivery_status or fetch_delivery_report. • Custom ad-hoc reports: run_custom_report. • Forecasting: get_standalone_forecast or get_delivery_forecast_by_line_item. For pre-flight feasibility, pass sizes/creativeSizes, geo/geoTargeting, priority, frequencyCaps, lineItemType and cpmMicroAmount so the estimate is constrained like the planned Line Item. • GA4 data: run_ga_report. • Reusable reports: save_report_template / run_report_from_template. LIMITATIONS: Some SOAP-era metrics (TOTAL_*, AD_SERVER_ALL_REVENUE) and dimensions (MONTH_AND_YEAR, CREATIVE_SIZE) are rejected by the REST API. Use get_report_dimensions/get_report_metrics to discover valid options.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • check_delivery_status: Check delivery status (actual vs booked) for an order or line item. Returns pacing indicator. • fetch_delivery_report: Fetch a delivery report for a date range. Returns impressions, clicks, CTR by line item. • run_custom_report: Run an ad-hoc report with specified dimensions and metrics. Returns result rows. • fetch_inventory_report: Fetch an inventory forecast report for ad units. Returns available impressions. • get_report_result: Retrieve the result of a previously run report by report_id. • export_report_csv: Export a report result as a CSV download URL. • get_report_dimensions: List valid dimension names for custom reports. Use to discover available breakdown options. • get_report_metrics: List valid metric names for custom reports. Use to discover available measurements. • get_report_date_ranges: List valid relative date range strings (LAST_7_DAYS, LAST_MONTH, etc.). • get_standalone_forecast: Get a constrained forecast for a prospective line item. Accepts adUnitIds, startDate, endDate, sizes/creativeSizes, geo/geoTargeting, priority, frequencyCaps, lineItemType and cpmMicroAmount. • get_delivery_forecast_by_line_item: Get a delivery forecast for one or more existing line items. • get_prospective_delivery_forecast: Get a prospective forecast for a hypothetical line item configuration. • get_traffic_data: Get historical traffic data (impressions available) for targeting criteria. • list_report_templates: List saved report templates. Read-only. • save_report_template: Save a report configuration as a reusable template. Write. • delete_report_template: Delete a report template. Destructive write. • duplicate_report_template: Duplicate a report template. Write. • update_report_template: Update a saved report template. Write. • run_report_from_template: Run a report using a saved template. Returns report_id for async result retrieval. • list_gam_reports: List reports saved in the GAM UI. Read-only. • get_gam_report: Get a specific GAM report by ID. Read-only. • create_gam_report: Create a new report in GAM. Write. • update_gam_report: Update a GAM report configuration. Write. • delete_gam_report: Delete a GAM report. Destructive write — uses soft-delete (PATCH visibility=HIDDEN). • run_gam_report: Run a GAM report and return result rows. • run_ga_report: Run a GA4 report for connected Google Analytics data. • get_ga_dimensions: List valid GA4 dimension names. • get_ga_metrics: List valid GA4 metric names. • check_underdelivery_alerts: Check for active underdelivery alerts across all line items. Returns affected line items with severity. • check_budget_alerts: Check for budget pacing alerts. Returns line items at risk of overspending. • generate_billing_report: Generate a billing summary report for a date range. Returns revenue by advertiser and line item. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description fully discloses behavioral traits: it states the mode (mixed read+write) and categorizes actions, details side effects (e.g., irreversible delete for templates, soft-delete for GAM reports, quota implications), lists authentication and credit requirements, describes output formats, and notes limitations (rejected SOAP-era metrics/dimensions). No contradictions with annotations (none provided).
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 well-structured with clear sections (intro, MODE, AUTH, CREDITS, OUTPUT, SIDE EFFECTS, WHEN TO USE, LIMITATIONS). It is front-loaded with the overall purpose, and every sentence adds necessary information without 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 the tool's complexity (30+ actions), the description comprehensively covers all aspects: purpose, read/write mode, authentication, credits, output formats, side effects, usage guidelines, and limitations. No output schema exists, but the OUTPUT section adequately explains return types. The description is complete for an AI agent to correctly select and invoke 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 100%, so baseline is 3. The description adds value beyond the schema by providing strategic guidance on parameter usage for forecasting (e.g., 'For pre-flight feasibility, pass sizes/creativeSizes...'). This extra context justifies a score of 4.
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 covers 'Full GAM and GA4 reporting' including delivery reports, custom reports, forecasting, traffic data, billing, and report management. It distinguishes from sibling 'reporting_skill' by specifying when to use each tool, making the purpose and scope unmistakable.
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 'WHEN TO USE' section explicitly states to use this tool for all data extraction and analysis, and 'reporting_skill' for high-level multi-step workflows. It also provides specific use cases for delivery analysis, custom reports, forecasting, etc., including detailed advice for forecasting parameters.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reporting_skillAInspect
High-level reporting orchestration — describe a reporting goal in natural language and get results.
MODE: read-only (orchestrates multiple reporting tool calls internally) AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns a formatted report with dimensions, metrics, and data rows. May include charts or summary analysis. WHEN TO USE: Use reporting_skill when the reporting goal is clear but the exact dimension/metric combination is unknown. It internally calls get_report_dimensions, get_report_metrics, and run_custom_report. Example: "weekly revenue by ad unit for last month" → selects AD_UNIT_NAME + TOTAL_LINE_ITEM_LEVEL_REVENUE automatically. NOT the same as reporting: reporting gives direct access to individual report operations; reporting_skill is a higher-level orchestrator.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Plain-language description of the reporting goal. Example: 'top 10 advertisers by revenue last quarter' or 'daily CTR for line items in order 12345'. | |
| network_code | Yes | GAM network code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses read-only mode, OAuth 2.0 requirement, zero credits, and internal orchestration behavior. However, it does not mention error handling or limitations, which would make it a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE, Example, NOT). Every sentence adds value, 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?
For a tool with only 2 simple parameters and no output schema, the description covers all essential aspects: purpose, authentication, cost, output format, usage guidance, and relation to sibling tools.
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 explaining that 'goal' is a plain-language description and provides an example of how it is used (e.g., selecting dimensions/metrics automatically), which goes beyond the schema's basic description.
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 'high-level reporting orchestration' tool that accepts natural language goals and returns formatted reports. It distinguishes itself from the sibling 'reporting' tool by noting it is a higher-level orchestrator.
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 includes a 'WHEN TO USE' section with an example and contrasts with the sibling tool: 'NOT the same as reporting'. It also shows how the tool internally calls other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
select_gam_networkAInspect
Set the active GAM network for the current session when the tenant has multiple linked networks.
MODE: write (session state change) AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: Returns {network_code: int, display_name: string, currency: string} WHEN TO USE: Call after authentication when the tenant has more than one GAM network linked. All subsequent tool calls will use this network_code unless overridden per-call.
| Name | Required | Description | Default |
|---|---|---|---|
| network_code | Yes | GAM network code to set as active. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description fully disclosures behavioral traits: it is a write operation that changes session state, requires OAuth 2.0, costs 0 credits, and returns a structured output. It also explains the side effect of setting the active network for future calls.
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?
Description is concise and well-structured: a single sentence for purpose, followed by metadata lines and usage guidelines. Every sentence provides new information without 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 no output schema, the description includes the output format. It covers purpose, usage, authentication, credits, and side effects, making it complete for this simple state-changing 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%, so baseline is 3. The description does not add extra meaning for the parameter beyond the schema's 'GAM network code to set as active.' The usage context is helpful but does not enhance 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?
The description clearly states the tool sets the active GAM network for the session, with a specific verb (Set) and resource (active GAM network). It distinguishes itself from siblings by focusing on network selection, which is unique among the listed 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 states when to use: 'Call after authentication when the tenant has more than one GAM network linked.' Also clarifies that subsequent calls use this network unless overridden, providing clear usage context and exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
server_infoBInspect
Public health and catalogue summary. Real Google Ad Manager operations require OAuth.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Only discloses that it is public, but no details on safety, side effects, or data characteristics. Insufficient for a tool with 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 short sentences with no wasted words. Efficient and to the point.
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 no parameters or output schema, the description is minimal. It does not explain what 'public health and catalogue summary' returns, leaving the agent under-informed.
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?
No parameters, so the description does not need to add param info. Baseline 4 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 states 'public health and catalogue summary', which indicates a summary function but is vague. It differentiates from sibling tools by implying this is for public info, but lacks a specific verb+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 hint 'Real Google Ad Manager operations require OAuth' suggests this tool is for public data without OAuth, providing clear usage context. No explicit exclusions, but helpful guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
settingsAInspect
Manage OrbiAds tenant settings — naming conventions, delivery defaults, and configuration presets.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0 credits (configuration only). OUTPUT: Returns settings objects with key-value pairs for naming patterns, delivery parameters, and preset configurations. WHEN TO USE: Use settings to configure tenant-level defaults that apply across all campaigns. For network-level GAM settings, use the network tool.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_presets: List all saved configuration presets. Read-only. • create_preset: Save current settings as a named preset. Write. • delete_preset: Delete a preset. Destructive write. • get_tenant_settings: Get all tenant-level settings. Read-only. • update_tenant_settings: Update tenant settings. Write. • get_naming_conventions: Get configured naming convention patterns for orders, line items, and creatives. • update_naming_conventions: Update naming convention patterns. Write. • get_delivery_defaults: Get default delivery settings (pacing, priority, roadblocking) applied to new line items. • update_delivery_defaults: Update delivery defaults. Write. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations are absent, the description discloses MODE (mixed read/write), AUTH (OAuth required), and CREDITS (0 credits). However, it does not explicitly state the destructiveness of delete operations in the main description; these details appear only in the input schema parameter descriptions.
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 well-structured with clear labeled sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE). It is front-loaded with purpose and every sentence adds value without 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 the tool has multiple sub-actions and no output schema, the description covers usage context, output format, and sibling differentiation. However, it lacks details on error handling or edge cases (e.g., deleting a non-existent preset).
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%, with detailed enum descriptions for 'action' and a clear description for 'network_code'. The main description adds little beyond summarizing the action categories, so it meets the baseline but does not add significant extra meaning.
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 manages OrbiAds tenant settings, naming conventions, delivery defaults, and configuration presets. It differentiates from sibling 'network' by specifying that network-level GAM settings should use that tool.
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 includes a 'WHEN TO USE' section that explicitly tells users to use this tool for tenant-level defaults and to use the 'network' tool for network-level GAM settings. It also provides AUTH and CREDITS context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
targetingAInspect
Manage GAM custom targeting keys, values, and ad unit targeting configuration.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: Reads = 0. Writes = 0.5 credits. OUTPUT: Returns CustomTargetingKey objects with id, name, type (PREDEFINED/FREEFORM), and associated values. get_available_countries/languages/devices return canonical lists for geographic/device targeting. WHEN TO USE: Use targeting to manage the custom targeting vocabulary (keys and values) used in line item targeting. Use line_items to apply targeting to line items. Use inventory for ad unit structure. NOTE: get_inventory_forecast takes targeting criteria and returns estimated available impressions — useful before creating a line item to verify reach.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • list_ad_units: List all ad units with their sizes and status. Read-only. For full hierarchy, use inventory get_ad_unit_tree. • validate_fluid: Validate a fluid targeting expression for syntax and reference errors. Read-only. • list_custom_targeting_keys: List all custom targeting keys on the network. Read-only. • get_inventory_forecast: Get estimated available impressions for a targeting specification. Read-only. Use before creating a line item to validate reach. • create_custom_targeting_key: Create a new custom targeting key. Write. • create_custom_targeting_values: Create one or more values for an existing key. Write. • update_custom_targeting_key: Update a key's name or type. Write. • delete_custom_targeting_key: Delete a targeting key and all its values. Destructive write. • update_custom_targeting_value: Update a targeting value's name or display name. Write. • perform_custom_targeting_value_action: Activate or deactivate a targeting value. Write. • search_ad_units: Search ad units by name or path. Read-only. • update_ad_unit: Update an ad unit's name, description, or size. Write. • archive_ad_unit: Archive an ad unit. Destructive write. Run inventory find_inactive_ad_units first. • get_custom_targeting_values: Get all values for a specific targeting key. Read-only. • search_custom_targeting: Search targeting keys and values by text. Read-only. • get_available_countries: Return the canonical list of countries for geographic targeting (ISO 3166-1 alpha-2 codes). • get_available_languages: Return the canonical list of language codes for language targeting. • get_device_categories: Return the canonical list of device categories (DESKTOP, MOBILE, TABLET, CONNECTED_TV). | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully bears the burden of behavioral disclosure. It clearly states MODE (mixed read+write), AUTH (OAuth 2.0 required), CREDITS (reads 0, writes 0.5), and marks destructive actions (e.g., 'Destructive write'). It also describes output objects and special cases like get_inventory_forecast.
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 well-structured with clear sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE, NOTE) and each action is described concisely. While it is lengthy, every sentence provides necessary guidance. Slight redundancy in repeating 'Read-only' could be trimmed but overall earns a 4.
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 18 sub-actions and no output schema, the description is complete. It specifies return types (CustomTargetingKey objects, canonical lists), credits, authentication, and prerequisites for destructive actions. No gaps remain for an AI agent to safely invoke 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 100%, so baseline is 3. The description adds significant value beyond the schema by providing usage context for each action (e.g., 'Run inventory find_inactive_ad_units first' for archive_ad_unit) and clarifying scope (e.g., 'Read-only'). This justifies a 4.
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: 'Manage GAM custom targeting keys, values, and ad unit targeting configuration.' It uses specific verbs and resources, and the 'WHEN TO USE' section distinguishes it from sibling tools like 'line_items' and 'inventory'.
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 'WHEN TO USE' section explicitly guides when to use this tool versus alternatives: 'Use targeting to manage the custom targeting vocabulary... Use line_items to apply targeting to line items. Use inventory for ad unit structure.' Additionally, individual action descriptions note alternatives, e.g., 'For full hierarchy, use inventory get_ad_unit_tree'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tenant_catalogAInspect
Scan and cache the tenant's GAM inventory catalog for fast downstream operations.
MODE: read (scan triggers a background read job) AUTH: OAuth 2.0 required CREDITS: 0 (free) OUTPUT: get_active_catalog returns a JSON catalog of ad units, placements, and key-values. get_scan_status returns {status: IDLE|RUNNING|COMPLETE, progress, last_updated}. WHEN TO USE: Run scan_network once after connecting a new GAM network, then call refresh periodically (daily) to keep the catalog current. Other tools use the catalog for fast lookups without hitting the GAM API on every call.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • scan_network: Trigger a background scan of the GAM network to build the inventory catalog. Returns a scan job ID. Poll with get_scan_status. • get_scan_status: Get the status of the most recent catalog scan. Returns status, progress, and last_updated timestamp. • get_active_catalog: Return the current cached inventory catalog (ad units, placements, targeting keys). May be stale if not refreshed recently. • refresh: Trigger an incremental catalog refresh to pick up recent GAM changes without a full rescan. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description discloses behavioral traits: MODE: read, AUTH: OAuth 2.0 required, CREDITS: 0 (free), and explains that scanning triggers a background job. It also describes the output of two sub-operations. 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 well-structured with sections (MODE, AUTH, CREDITS, OUTPUT, WHEN TO USE) and front-loaded with the main purpose. Every sentence adds value without redundancy. It is concise yet comprehensive.
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 (multiple actions, background job, caching), the description covers authentication, credits, usage patterns, and expected outputs for the two main sub-operations. Despite no output schema, the description compensates adequately. Sibling tools are listed, adding 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?
With 100% schema description coverage, the baseline is 3. The description adds value by explaining the sub-operations in context and providing usage patterns (e.g., 'Poll with get_scan_status'). It also clarifies that network_code is required for network-scoped operations.
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 the tool's purpose: 'Scan and cache the tenant's GAM inventory catalog for fast downstream operations.' It uses specific verbs ('Scan and cache') and clearly distinguishes itself from sibling tools by noting that other tools use the catalog for fast lookups.
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 instructions: 'Run scan_network once after connecting a new GAM network, then call refresh periodically (daily) to keep the catalog current.' It also explains that other tools depend on this catalog, implying when not to use alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
video_opsBInspect
Video monetization: ad rule management, content metadata, and content bundle operations.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: read = 0 credits. OUTPUT: Results for video ops entities. WHEN TO USE: Use for managing Ad Rules, Content metadata, and Content bundles.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • create_ad_rules: Create ad rules. • create_content_bundles: Create content bundles. • perform_ad_rule_action: Perform an action on ad rules. • perform_content_action: Perform an action on content. • perform_content_bundle_action: Perform an action on content bundles. • update_ad_rules: Update ad rules. • update_content_bundles: Update content bundles. • get_ad_rules_by_statement: Get ad rules by statement. • get_content_bundles_by_statement: Get content bundles by statement. • get_content_by_statement: Get content by statement. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states MODE: mixed (read + write), AUTH: OAuth 2.0 required, and CREDITS: read = 0 credits, which implies some write operations may consume credits. However, it does not describe potential destructive actions, error behavior, rate limits, or the exact credit cost for writes. The OUTPUT is vague. This is acceptable but lacks depth.
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 front-loaded with the purpose but contains redundancy: 'Ad Rules, Content metadata, and Content bundles' appears both in the header and the 'WHEN TO USE' section. The metadata lines are useful but could be integrated more tightly. Overall, it is adequate but not maximally 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?
The tool has 10 sub-operations and the schema allows additional properties (additionalProperties: true), but the description does not explain what extra parameters are required for each action. This is a significant gap for an agent to correctly invoke the tool. Output schema is absent, but the primary issue is the missing sub-parameter documentation. The description is incomplete for a multifunction 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 description coverage is 100% for the two defined parameters. The action enum has detailed descriptions for each value, and network_code has a clear description. The description adds minimal extra meaning beyond the schema, such as the vague 'OUTPUT: Results for video ops entities.' With high coverage, a 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 states it is for video monetization and lists three areas: ad rule management, content metadata, and content bundle operations. The tool name 'video_ops' is generic, but the description clarifies the scope. Sibling tools like 'creatives' or 'line_items' do not directly overlap, so the purpose is fairly clear, though it could be more specific about what each area entails.
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 includes a 'WHEN TO USE' section: 'Use for managing Ad Rules, Content metadata, and Content bundles.' This provides clear context but does not specify when not to use the tool or suggest alternatives. No exclusions are mentioned, and sibling tools are not referenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
yield_skillAInspect
Yield optimization group management and forecast governance.
MODE: mixed (read + write) AUTH: OAuth 2.0 required CREDITS: read = 0 credits. OUTPUT: Results for yield groups and forecast adjustments. WHEN TO USE: Use for managing yield groups and reading forecast adjustments.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Sub-operation to perform: • create_yield_group: Create a yield group. • update_yield_group: Update a yield group. • list_forecast_adjustments: List forecast adjustments. • list_forecast_segments: List forecast segments. • list_yield_groups: List yield groups. | |
| network_code | No | GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description bears full responsibility for behavioral disclosure. It states MODE (mixed), AUTH, and CREDITS, but lacks details on side effects of write operations (e.g., irreversibility, permission requirements). Score 3 reflects moderate transparency with 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 structured with clear sections and is relatively concise. However, the first sentence and the 'WHEN TO USE' section are somewhat redundant, preventing a top score. Score 4.
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 5 sub-actions and the absence of an output schema, the description provides an overview but lacks details on return values, error handling, or prerequisites beyond OAuth. Additional context would be needed for full completeness. Score 3.
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-described in the schema. The tool description adds general context (MODE, OUTPUT) but does not enhance parameter-specific meaning, leading to a baseline score of 3.
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 domain (yield optimization group management and forecast governance) and lists specific sub-operations. However, it does not provide a single focused verb+resource and lacks explicit differentiation from sibling tools, resulting in a score of 4.
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 includes dedicated sections for MODE, AUTH, CREDITS, OUTPUT, and WHEN TO USE, offering clear context for usage. However, it does not specify when not to use this tool or mention alternatives, justifying a score of 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
11 tool updates
v0.1.2- Added
ad_review_center - Changed
campaign4 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform:\n • deploy: Deploy a complete campaign to GAM: creates Order, LineItems, Creatives, and LICAs. Requires confirmation_token. Returns campaign_id and all created entity IDs.\n • update: Update an existing campaign's metadata, budget, or targeting without full redeployment. Write.\n • ensure_template: Ensure a native ad template exists in GAM, creating it if absent. Idempotent write.\n • create_native_style: Create a GAM native ad style for use in native campaigns. Write.\n • create_line_items_batch: Create multiple line items under an existing order in one call. Write. Faster than individual line item creation.\n • create_licas: Create LineItem-Creative Associations (LICAs) to link creatives to line items. Write.\n • create_display: Create a standard display ad campaign (order + line items + creatives) from a template. Write, requires confirmation_token.\n • rollback: Revert a campaign to its previous deployed version. Destructive write — archives current version. Requires confirmation_token.\n • pause: Pause all active line items in a campaign. Write.\n • archive: Archive a campaign (order + line items). Destructive — removes from active serving. Requires confirmation_token."New value: +"Sub-operation to perform:\n • deploy: Deploy a complete campaign to GAM: accepts campaignId from create_draft/REST or legacy jobId, plus confirmation_token. Creates Order, LineItems, Creatives, and LICAs.\n • create_draft: Create an OrbiAds campaigns/{campaignId} draft from MCP without using the web UI. Write, requires confirmation_token.\n • update: Update an existing campaign's metadata, budget, or targeting without full redeployment. Write.\n • ensure_template: Ensure a native ad template exists in GAM, creating it if absent. Idempotent write.\n • create_native_style: Create a GAM native ad style for use in native campaigns. Write.\n • create_line_items_batch: Create multiple line items under an existing order in one call. Write. Faster than individual line item creation.\n • create_licas: Create LineItem-Creative Associations (LICAs) to link creatives to line items. Write.\n • create_display: Create a standard display ad campaign (order + line items + creatives) from a template. Write, requires confirmation_token.\n • rollback: Revert a campaign to its previous deployed version. Destructive write — archives current version. Requires confirmation_token.\n • pause: Pause all active line items in a campaign. Write.\n • archive: Archive a campaign (order + line items). Destructive — removes from active serving. Requires confirmation_token." - changed
Input schema / properties / action / enumPrevious value: -[ - "deploy", - "update", - "ensure_template", - "create_native_style", - "create_line_items_batch", - "create_licas", - "create_display", - "rollback", - "pause", - "archive" -]New value: +[ + "deploy", + "create_draft", + "update", + "ensure_template", + "create_native_style", + "create_line_items_batch", + "create_licas", + "create_display", + "rollback", + "pause", + "archive" +] - changed
Input schema / properties / campaign_id / descriptionPrevious value: -"OrbiAds campaign identifier (required for update/rollback/pause/archive)."New value: +"OrbiAds campaigns/{campaignId} identifier, accepted by deploy and campaign lifecycle actions." - added
Input schema / properties / jobIdAdded value: +{ + "description": "Legacy Firestore jobs/{jobId} document. deploy also accepts modern campaignId.", + "type": "string" +}
- Added
dai_skill - Added
live_stream - Added
mcm - Changed
orders1 field changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform:\n • list_delivering: List orders currently in delivery. Read-only.\n • get: Get a single order by ID. Read-only.\n • list: List orders with optional filters (advertiser, status, date range). Read-only.\n • create: Create a new order. Write. Requires advertiserId, name, and traffickerId.\n • archive: Archive an order. Destructive write — stops delivery.\n • approve: Approve an order for delivery. Write.\n • verify_setup: Verify an order's setup (targeting, creative associations) before activation. Read-only.\n • update: Update an order's name, salesperson, or notes. Write.\n • find_or_create: Find an existing order matching the criteria or create a new one if not found. Idempotent write.\n • list_users: List users (salespeople, traffickers) associated with an order. Read-only.\n • list_roles: List available order roles. Read-only."New value: +"Sub-operation to perform:\n • list_delivering: List orders currently in delivery. Read-only.\n • get: Get a single order by ID. Read-only.\n • list: List orders with optional filters (advertiser, status, date range). Read-only.\n • create: Create a new order. Write. Requires advertiserId, name, and traffickerId.\n • archive: Archive an order. Destructive write — stops delivery.\n • approve: Approve an order for delivery. Write.\n • verify_setup: Verify an order's setup (targeting, creative associations) before activation. Read-only.\n • update: Update an order's name, salespersonId, secondarySalespersonIds, customFieldValues, or notes. Write.\n • find_or_create: Find an existing order matching the criteria or create a new one if not found. Idempotent write.\n • list_users: List users (salespeople, traffickers) associated with an order. Read-only.\n • list_roles: List available order roles. Read-only."
- Added
prebid_skill - Changed
reporting1 field changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform:\n • check_delivery_status: Check delivery status (actual vs booked) for an order or line item. Returns pacing indicator.\n • fetch_delivery_report: Fetch a delivery report for a date range. Returns impressions, clicks, CTR by line item.\n • run_custom_report: Run an ad-hoc report with specified dimensions and metrics. Returns result rows.\n • fetch_inventory_report: Fetch an inventory forecast report for ad units. Returns available impressions.\n • get_report_result: Retrieve the result of a previously run report by report_id.\n • export_report_csv: Export a report result as a CSV download URL.\n • get_report_dimensions: List valid dimension names for custom reports. Use to discover available breakdown options.\n • get_report_metrics: List valid metric names for custom reports. Use to discover available measurements.\n • get_report_date_ranges: List valid relative date range strings (LAST_7_DAYS, LAST_MONTH, etc.).\n • get_standalone_forecast: Get a forecasted impression estimate for a targeting specification without an existing line item.\n • get_delivery_forecast_by_line_item: Get a delivery forecast for one or more existing line items.\n • get_prospective_delivery_forecast: Get a prospective forecast for a hypothetical line item configuration.\n • get_traffic_data: Get historical traffic data (impressions available) for targeting criteria.\n • list_report_templates: List saved report templates. Read-only.\n • save_report_template: Save a report configuration as a reusable template. Write.\n • delete_report_template: Delete a report template. Destructive write.\n • duplicate_report_template: Duplicate a report template. Write.\n • update_report_template: Update a saved report template. Write.\n • run_report_from_template: Run a report using a saved template. Returns report_id for async result retrieval.\n • list_gam_reports: List reports saved in the GAM UI. Read-only.\n • get_gam_report: Get a specific GAM report by ID. Read-only.\n • create_gam_report: Create a new report in GAM. Write.\n • update_gam_report: Update a GAM report configuration. Write.\n • delete_gam_report: Delete a GAM report. Destructive write — uses soft-delete (PATCH visibility=HIDDEN).\n • run_gam_report: Run a GAM report and return result rows.\n • run_ga_report: Run a GA4 report for connected Google Analytics data.\n • get_ga_dimensions: List valid GA4 dimension names.\n • get_ga_metrics: List valid GA4 metric names.\n • check_underdelivery_alerts: Check for active underdelivery alerts across all line items. Returns affected line items with severity.\n • check_budget_alerts: Check for budget pacing alerts. Returns line items at risk of overspending.\n • generate_billing_report: Generate a billing summary report for a date range. Returns revenue by advertiser and line item."New value: +"Sub-operation to perform:\n • check_delivery_status: Check delivery status (actual vs booked) for an order or line item. Returns pacing indicator.\n • fetch_delivery_report: Fetch a delivery report for a date range. Returns impressions, clicks, CTR by line item.\n • run_custom_report: Run an ad-hoc report with specified dimensions and metrics. Returns result rows.\n • fetch_inventory_report: Fetch an inventory forecast report for ad units. Returns available impressions.\n • get_report_result: Retrieve the result of a previously run report by report_id.\n • export_report_csv: Export a report result as a CSV download URL.\n • get_report_dimensions: List valid dimension names for custom reports. Use to discover available breakdown options.\n • get_report_metrics: List valid metric names for custom reports. Use to discover available measurements.\n • get_report_date_ranges: List valid relative date range strings (LAST_7_DAYS, LAST_MONTH, etc.).\n • get_standalone_forecast: Get a constrained forecast for a prospective line item. Accepts adUnitIds, startDate, endDate, sizes/creativeSizes, geo/geoTargeting, priority, frequencyCaps, lineItemType and cpmMicroAmount.\n • get_delivery_forecast_by_line_item: Get a delivery forecast for one or more existing line items.\n • get_prospective_delivery_forecast: Get a prospective forecast for a hypothetical line item configuration.\n • get_traffic_data: Get historical traffic data (impressions available) for targeting criteria.\n • list_report_templates: List saved report templates. Read-only.\n • save_report_template: Save a report configuration as a reusable template. Write.\n • delete_report_template: Delete a report template. Destructive write.\n • duplicate_report_template: Duplicate a report template. Write.\n • update_report_template: Update a saved report template. Write.\n • run_report_from_template: Run a report using a saved template. Returns report_id for async result retrieval.\n • list_gam_reports: List reports saved in the GAM UI. Read-only.\n • get_gam_report: Get a specific GAM report by ID. Read-only.\n • create_gam_report: Create a new report in GAM. Write.\n • update_gam_report: Update a GAM report configuration. Write.\n • delete_gam_report: Delete a GAM report. Destructive write — uses soft-delete (PATCH visibility=HIDDEN).\n • run_gam_report: Run a GAM report and return result rows.\n • run_ga_report: Run a GA4 report for connected Google Analytics data.\n • get_ga_dimensions: List valid GA4 dimension names.\n • get_ga_metrics: List valid GA4 metric names.\n • check_underdelivery_alerts: Check for active underdelivery alerts across all line items. Returns affected line items with severity.\n • check_budget_alerts: Check for budget pacing alerts. Returns line items at risk of overspending.\n • generate_billing_report: Generate a billing summary report for a date range. Returns revenue by advertiser and line item."
- Added
server_info - Added
video_ops - Added
yield_skill
36 tool updates
v0.1.1- Changed
audiences2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_audience_segments, get_audience_segment, create_audience_segment, update_audience_segment, perform_audience_segment_action."New value: +"Sub-operation to perform:\n • list_audience_segments: List all audience segments on the network. Read-only, free. Returns paginated list with id, name, type, and status.\n • get_audience_segment: Get a specific audience segment by ID. Read-only, free. Requires segment_id parameter.\n • create_audience_segment: Create a new first-party audience segment. Write operation, costs 0.5 credits, requires confirmation_token. Returns the created segment with its new ID.\n • update_audience_segment: Update an existing audience segment's name, description, or membership rules. Write, free. Requires segment_id.\n • perform_audience_segment_action: Activate or deactivate a segment. Write, free. Requires segment_id and action type (ACTIVATE or DEACTIVATE)." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
audit2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: query_audit_log."New value: +"Sub-operation to perform:\n • query_audit_log: Execute a filtered query against the GAM audit log. Filterable by entityId, entityType, userId, and date range. Returns a paginated list of audit events." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
audit_skill3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: hygiene_check, ops_diagnostic, standards_baseline, wrapper_coverage, estimate_cost, export_authoring."New value: +"Sub-operation to perform:\n • hygiene_check: Scan the network for hygiene issues: orphaned creatives, line items past end date still active, orders with no live line items, creative-line item association gaps. Returns severity-tagged findings.\n • ops_diagnostic: Diagnose operational delivery problems: underdelivery, pacing issues, targeting conflicts, creative disapprovals. Correlates data across orders/line items/creatives.\n • standards_baseline: Evaluate the network against a named compliance framework. Requires framework parameter: orbiads_baseline | iso27001_adops | iab_anti_tampering | nist_csf. Returns a pass/fail checklist per control.\n • wrapper_coverage: Audit CreativeWrapper coverage across ad units and placements. Detects missing wrappers, double-wrapping, and wrapper misconfiguration.\n • estimate_cost: Preview the credit cost of an operation before executing it. Requires operation_name and parameters. Returns cost in credits and explanation.\n • export_authoring: Export an authoring-audit CSV of GAM entities (teams, users, custom fields, labels) for governance and compliance reporting. Returns a download URL or inline CSV." - changed
Input schema / properties / framework / descriptionPrevious value: -"Compliance framework for standards_baseline action."New value: +"Compliance framework for standards_baseline action. Required when action=standards_baseline." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
billing2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get_credit_balance, list_transactions."New value: +"Sub-operation to perform:\n • get_credit_balance: Return the current credit balance, plan type, and monthly allowance for the authenticated tenant.\n • list_transactions: List credit transaction history (debits for write operations, credits for plan renewal/top-ups). Filterable by date range." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
blueprint2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get_active_preferences, get_active_blueprint, save_blueprint, save_preferences, add_format, remove_format, add_position, remove_position, add_key_value, remove_key_value, update_brand, update_platforms, list_templates."New value: +"Sub-operation to perform:\n • get_active_preferences: Read the current tenant preferences (naming conventions, default targeting, delivery settings).\n • get_active_blueprint: Read the full active inventory blueprint JSON.\n • save_blueprint: Replace the full blueprint with a new version. Write. Validate with a dry-run before saving to production.\n • save_preferences: Update tenant preferences. Write.\n • add_format: Add a creative format to the blueprint. Write. Requires format_code and size parameters.\n • remove_format: Remove a creative format from the blueprint. Write. Does not remove existing GAM creatives.\n • add_position: Add an inventory position (ad unit + targeting combination) to the blueprint. Write.\n • remove_position: Remove an inventory position from the blueprint. Write. Does not archive existing ad units.\n • add_key_value: Add a custom targeting key-value definition to the blueprint. Write.\n • remove_key_value: Remove a key-value definition from the blueprint. Write.\n • update_brand: Update brand metadata (name, logo, primary color) attached to the blueprint. Write.\n • update_platforms: Update the list of target platforms (desktop, mobile_web, app_ios, app_android) in the blueprint. Write.\n • list_templates: List all available campaign templates (display, native, video presets). Read-only." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
campaign3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: deploy, update, ensure_template, create_native_style, create_line_items_batch, create_licas, create_display, rollback, pause, archive."New value: +"Sub-operation to perform:\n • deploy: Deploy a complete campaign to GAM: creates Order, LineItems, Creatives, and LICAs. Requires confirmation_token. Returns campaign_id and all created entity IDs.\n • update: Update an existing campaign's metadata, budget, or targeting without full redeployment. Write.\n • ensure_template: Ensure a native ad template exists in GAM, creating it if absent. Idempotent write.\n • create_native_style: Create a GAM native ad style for use in native campaigns. Write.\n • create_line_items_batch: Create multiple line items under an existing order in one call. Write. Faster than individual line item creation.\n • create_licas: Create LineItem-Creative Associations (LICAs) to link creatives to line items. Write.\n • create_display: Create a standard display ad campaign (order + line items + creatives) from a template. Write, requires confirmation_token.\n • rollback: Revert a campaign to its previous deployed version. Destructive write — archives current version. Requires confirmation_token.\n • pause: Pause all active line items in a campaign. Write.\n • archive: Archive a campaign (order + line items). Destructive — removes from active serving. Requires confirmation_token." - changed
Input schema / properties / confirmation_token / descriptionPrevious value: -"Write-confirmation token (required for deploy and rollback)."New value: +"Write-confirmation token from a prior estimate/preview call. Required for deploy, rollback, archive." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
companies3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_advertisers, get_advertiser, create_advertiser, update_advertiser, archive_advertiser, list_agencies, get_agency, create_agency, update_agency, list_contacts, get_contact, update_contact."New value: +"Sub-operation to perform:\n • list_advertisers: List all advertiser companies on the network. Read-only, paginated.\n • get_advertiser: Get a specific advertiser by ID. Read-only. Requires company_id.\n • create_advertiser: Create a new advertiser company. Write, 0.5 credits. Requires name and optionally creditStatus, address.\n • update_advertiser: Update an existing advertiser's name, credit status, or address. Write.\n • archive_advertiser: Archive (deactivate) an advertiser. Destructive write — prevents new orders. Requires company_id.\n • list_agencies: List all agency companies on the network. Read-only.\n • get_agency: Get a specific agency by ID. Read-only.\n • create_agency: Create a new agency company. Write, 0.5 credits.\n • update_agency: Update an existing agency. Write.\n • list_contacts: List contacts associated with a company. Read-only. Requires company_id.\n • get_contact: Get a specific contact by ID. Read-only.\n • update_contact: Update a contact's details. Write." - added
Input schema / properties / company_idAdded value: +{ + "description": "GAM Company ID (required for get/update/archive operations).", + "type": "integer" +} - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
creative_assets2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: bulk_upload, upload_from_url, upload_and_associate, upload_html5_zip, create_image, create_html5, create_html5_from_files, create_video, create_audio, create_vast_redirect, create_companion, create_third_party, create_classic_native, compress_image, get_video_transcode_status."New value: +"Sub-operation to perform:\n • bulk_upload: Upload multiple asset files in one call. Returns list of assetId per file. Preferred over individual uploads for batch workflows.\n • upload_from_url: Download a file from a URL and upload it to GAM as an asset. Write. Requires source_url and file_name.\n • upload_and_associate: Upload an asset and immediately associate it with an existing creative. Write.\n • upload_html5_zip: Upload an HTML5 ZIP package and validate its structure before storage. Returns assetId and a list of validation warnings.\n • create_image: Create an image asset from raw bytes or a local file path. Write.\n • create_html5: Create an HTML5 asset from inline HTML/CSS/JS content. Write.\n • create_html5_from_files: Create an HTML5 asset by bundling multiple local files. Write.\n • create_video: Create a video creative asset (VAST URL or inline video). Write.\n • create_audio: Create an audio creative asset. Write.\n • create_vast_redirect: Create a VAST redirect creative that points to an external VAST URL. Write.\n • create_companion: Create a companion ad asset associated with a video creative. Write.\n • create_third_party: Create a third-party tag creative asset (JavaScript or iframe snippet). Write.\n • create_classic_native: Create a classic native ad asset with headline, body, image, and CTA fields. Write.\n • compress_image: Compress an existing image asset to reduce file size. Modifies asset in-place. Write.\n • get_video_transcode_status: Check the status of a video transcode job. Read-only. Returns status: PENDING | PROCESSING | COMPLETE | FAILED." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
creative_qa2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: scan_creative_compliance, validate_creative_ssl, validate_creative_ssl_batch, audit_creative_tracking, audit_order_tracking, validate_tag_snippet, pre_archive_check."New value: +"Sub-operation to perform:\n • scan_creative_compliance: Scan a creative for policy violations, prohibited content, missing click-through URLs, and size non-compliance. Returns a compliance report per check.\n • validate_creative_ssl: Verify that all URLs in a creative (click-throughs, image src, tracking pixels) are HTTPS. Critical for modern GAM requirements.\n • validate_creative_ssl_batch: Run SSL validation on multiple creatives in one call. Returns a per-creative summary.\n • audit_creative_tracking: Verify all impression and click tracking pixels are reachable and return 200. Detects broken trackers.\n • audit_order_tracking: Audit tracking pixels across all creatives associated with an order. Returns a per-creative, per-tracker report.\n • validate_tag_snippet: Validate a third-party ad tag snippet for syntax errors, unsafe JS, and missing required macros (%%CLICK_URL%%, etc.).\n • pre_archive_check: Check whether a creative has active LICA associations before archiving. Returns list of active line items that would be affected." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
creative_wrapper_skill2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list, get, create, update, activate, deactivate, archive, set_data_declaration, list_rich_media_ads_companies, find_third_party_company, create_preset, list_wrapper_presets, provision."New value: +"Sub-operation to perform:\n • list: List all CreativeWrappers on the network. Read-only.\n • get: Get a specific CreativeWrapper by ID. Read-only.\n • create: Create a new CreativeWrapper. Write. Requires adUnitId or placementId, and headerHtmlSnippet or footerHtmlSnippet.\n • update: Update an existing wrapper's snippet or targeting. Write.\n • activate: Activate a paused wrapper. Write.\n • deactivate: Deactivate an active wrapper without deleting it. Write. Preferred over archive for temporary suspension.\n • archive: Archive a wrapper permanently. Destructive write.\n • set_data_declaration: Set the data usage declaration for a wrapper (required for GDPR/CCPA compliance). Write.\n • list_rich_media_ads_companies: List GAM-certified rich media companies available for wrapper configuration. Read-only.\n • find_third_party_company: Search for a third-party company by name to use in a wrapper. Read-only.\n • create_preset: Save a wrapper configuration as a reusable preset. Write.\n • list_wrapper_presets: List all saved wrapper presets. Read-only.\n • provision: Apply a preset to a set of ad units or placements. Bulk write." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
creatives2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_creatives_by_advertiser, list_creatives_by_line_item, list_creatives_by_network, get_creative, update_creative, archive_creative, duplicate_creative, get_creative_preview_url, get_native_style_preview_urls, get_campaign_preview_links, get_video_transcode_status, list_native_styles, get_native_style, update_native_style, archive_native_style, duplicate_native_style, ensure_classic_native_template, list_creative_templates, get_creative_template, discover_native_formats, associate_creative, bulk_associate_creatives, get_licas_by_line_item, get_licas_batch, deactivate_lica, update_lica, delete_licas."New value: +"Sub-operation to perform:\n • list_creatives_by_advertiser: List all creatives for a given advertiser ID. Read-only.\n • list_creatives_by_line_item: List all creatives associated with a line item. Read-only.\n • list_creatives_by_network: List all creatives on the network with optional filters. Read-only.\n • get_creative: Get a single creative by ID. Read-only.\n • update_creative: Update a creative's name, size, or snippet. Write.\n • archive_creative: Archive a creative. Destructive write — removes from active serving. Run pre_archive_check first.\n • duplicate_creative: Duplicate an existing creative to use as a starting point. Write.\n • get_creative_preview_url: Generate a preview URL for a creative. Read-only. URL expires after 24h.\n • get_native_style_preview_urls: Generate preview URLs for a native style across all sizes. Read-only.\n • get_campaign_preview_links: Get all preview links for a campaign (all creatives + all placements). Read-only.\n • get_video_transcode_status: Check transcode status for a video creative. Read-only.\n • list_native_styles: List all native ad styles. Read-only.\n • get_native_style: Get a specific native style by ID. Read-only.\n • update_native_style: Update a native style's template or CSS. Write.\n • archive_native_style: Archive a native style. Destructive write.\n • duplicate_native_style: Duplicate a native style. Write.\n • ensure_classic_native_template: Ensure a classic native template exists, creating it if absent. Idempotent write.\n • list_creative_templates: List all creative templates available on the network. Read-only.\n • get_creative_template: Get a specific creative template by ID. Read-only.\n • discover_native_formats: Discover available native ad formats and their required fields. Read-only.\n • associate_creative: Create a LICA between one creative and one line item. Write.\n • bulk_associate_creatives: Create multiple LICAs in one call. Write.\n • get_licas_by_line_item: List all LICAs for a line item. Read-only.\n • get_licas_batch: Retrieve multiple LICAs by ID. Read-only.\n • deactivate_lica: Deactivate a LICA without deleting it. Write.\n • update_lica: Update a LICA's weight or start/end date. Write.\n • delete_licas: Delete LICAs permanently. Destructive write." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
deals2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_deals, get_deal, create_deal, update_deal, list_auctions, get_auction, create_auction, update_auction, list_buyers, get_buyer, get_proposal, create_proposal, update_proposal, archive_proposal, request_buyer_acceptance, reserve_proposal, edit_proposal_for_negotiation, terminate_proposal_negotiations, get_marketplace_comments, list_proposal_line_items, create_proposal_line_items, update_proposal_line_items, archive_proposal_line_items, create_makegoods, estimate_deal_cost, adcp_validate, adcp_preview, adcp_create."New value: +"Sub-operation to perform:\n • list_deals: List all programmatic deals on the network. Read-only.\n • get_deal: Get a specific deal by ID. Read-only.\n • create_deal: Create a new programmatic deal. Write.\n • update_deal: Update a deal's floor price or targeting. Write.\n • list_auctions: List auction packages. Read-only.\n • get_auction: Get a specific auction package. Read-only.\n • create_auction: Create an auction package. Write.\n • update_auction: Update an auction package. Write.\n • list_buyers: List all programmatic buyers on the network. Read-only.\n • get_buyer: Get a specific buyer by ID. Read-only.\n • get_proposal: Get a proposal by ID including its negotiation history. Read-only.\n • create_proposal: Create a new PG/PD proposal. Write.\n • update_proposal: Update a proposal's terms, targeting, or pricing. Write.\n • archive_proposal: Archive a proposal. Destructive write.\n • request_buyer_acceptance: Send a proposal to the buyer for acceptance. Write — triggers buyer notification.\n • reserve_proposal: Reserve inventory for a proposal (locks availability). Write.\n • edit_proposal_for_negotiation: Reopen an accepted proposal for renegotiation. Write.\n • terminate_proposal_negotiations: Permanently terminate negotiations. Irreversible destructive write.\n • get_marketplace_comments: Retrieve buyer/seller comments on a proposal. Read-only.\n • list_proposal_line_items: List line items within a proposal. Read-only.\n • create_proposal_line_items: Create line items within a proposal. Write.\n • update_proposal_line_items: Update proposal line items' targeting or pricing. Write.\n • archive_proposal_line_items: Archive proposal line items. Destructive write.\n • create_makegoods: Create makegood line items to compensate for underdelivered campaigns. Write.\n • estimate_deal_cost: Preview the credit cost of a deal operation. Read-only.\n • adcp_validate: Validate an ADCP deal configuration before creation. Read-only.\n • adcp_preview: Preview an ADCP deal's reach and estimated delivery. Read-only.\n • adcp_create: Create an ADCP deal. Write, 2 credits, requires confirmation_token." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
disconnect_gam1 field changed- changed
Input schema / properties / confirmation_token / descriptionPrevious value: -"Write-confirmation token (required — this action is irreversible)."New value: +"Write-confirmation token. Required — disconnection is irreversible."
- Changed
formats2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_recipes, list_suggested_recipes, accept_suggested_recipe, reject_suggested_recipe, register_recipe, update_recipe, delete_recipe, resolve, detect_conflicts."New value: +"Sub-operation to perform:\n • list_recipes: List all registered creative format recipes. Read-only.\n • list_suggested_recipes: List AI-suggested format recipes based on the network's inventory. Read-only.\n • accept_suggested_recipe: Accept and register a suggested recipe. Write.\n • reject_suggested_recipe: Reject a suggested recipe so it is not shown again. Write.\n • register_recipe: Register a new custom format recipe. Write.\n • update_recipe: Update a recipe's dimensions, creative type, or scope. Write.\n • delete_recipe: Delete a format recipe. Destructive write — does not affect existing creatives.\n • resolve: Resolve conflicts between formats across sites. Write.\n • detect_conflicts: Detect format conflicts across registered sites without resolving them. Read-only." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
gam_admin2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_teams, get_team, create_team, update_team, delete_team, add_team_members, remove_team_members, list_sites, get_site, create_site, update_site, delete_site, list_mobile_apps, get_mobile_app, create_mobile_app, update_mobile_app, list_custom_fields, get_custom_field, create_custom_field, update_custom_field, deactivate_custom_field, list_custom_field_options, create_custom_field_option, update_custom_field_option, deactivate_custom_field_option, list_labels, get_label, create_label, update_label, deactivate_label, list_pps_configs, get_pps_config, create_pps_config, update_pps_config, delete_pps_config, list_users, get_user, get_current_user, create_user, update_user, deactivate_user, perform_user_action, list_roles, list_team_memberships, get_user_record, get_salesperson_record, get_trafficker_record, audit_user_access."New value: +"Sub-operation to perform:\n • list_teams: List all teams on the network. Read-only.\n • get_team: Get a team by ID. Read-only.\n • create_team: Create a new team. Write.\n • update_team: Update a team's name or description. Write.\n • delete_team: Delete a team. Destructive write — removes team membership associations.\n • add_team_members: Add users to a team. Write.\n • remove_team_members: Remove users from a team. Write.\n • list_sites: List all sites on the network. Read-only.\n • get_site: Get a site by ID. Read-only.\n • create_site: Create a new site. Write.\n • update_site: Update a site. Write.\n • delete_site: Delete a site. Destructive write.\n • list_mobile_apps: List mobile apps registered on the network. Read-only.\n • get_mobile_app: Get a mobile app by ID. Read-only.\n • create_mobile_app: Register a new mobile app. Write.\n • update_mobile_app: Update a mobile app's details. Write.\n • list_custom_fields: List all custom fields defined on the network. Read-only.\n • get_custom_field: Get a custom field by ID. Read-only.\n • create_custom_field: Create a custom field for orders, line items, or creatives. Write.\n • update_custom_field: Update a custom field's name or options. Write.\n • deactivate_custom_field: Deactivate a custom field. Soft delete — preserves existing values.\n • list_custom_field_options: List options for a custom field of type SELECT. Read-only.\n • create_custom_field_option: Add a new option to a SELECT custom field. Write.\n • update_custom_field_option: Update a custom field option. Write.\n • deactivate_custom_field_option: Deactivate a custom field option. Write.\n • list_labels: List all labels. Read-only.\n • get_label: Get a label by ID. Read-only.\n • create_label: Create a new label. Write.\n • update_label: Update a label. Write.\n • deactivate_label: Deactivate a label. Write.\n • list_pps_configs: List Publisher Provided Signals configurations. Read-only.\n • get_pps_config: Get a PPS config by ID. Read-only.\n • create_pps_config: Create a PPS configuration. Write.\n • update_pps_config: Update a PPS configuration. Write.\n • delete_pps_config: Delete a PPS configuration. Destructive write.\n • list_users: List all users on the network. Read-only.\n • get_user: Get a user by ID. Read-only.\n • get_current_user: Get the currently authenticated user's profile. Read-only.\n • create_user: Create a new user account. Write.\n • update_user: Update a user's role or email. Write.\n • deactivate_user: Deactivate a user account. Write — revokes network access.\n • perform_user_action: Perform a lifecycle action on a user (ACTIVATE, DEACTIVATE). Write.\n • list_roles: List all roles available on the network. Read-only.\n • list_team_memberships: List team memberships for a user. Read-only.\n • get_user_record: Get a user's full record including role and team assignments. Read-only.\n • get_salesperson_record: Get salesperson metadata for a user. Read-only.\n • get_trafficker_record: Get trafficker metadata for a user. Read-only.\n • audit_user_access: Audit user access rights: roles, teams, and accessible inventory. Read-only." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
gam_audit1 field changed- changed
Input schema / properties / framework / descriptionPrevious value: -"Compliance framework to evaluate against."New value: +"Compliance framework for the standards baseline section. Defaults to orbiads_baseline if omitted."
- Changed
gam_features2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get_gam_features, probe_gam_features, refresh_gam_features."New value: +"Sub-operation to perform:\n • get_gam_features: Return the cached list of features enabled on the network.\n • probe_gam_features: Live-probe the network for feature availability (slower but always current).\n • refresh_gam_features: Force-refresh the feature cache. Call after a GAM admin enables new features." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
gam_jobs2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: poll, get, list, cancel."New value: +"Sub-operation to perform:\n • poll: Poll a job's current status and progress. Returns status and progress percentage. Recommended polling interval: 5 seconds.\n • get: Get a completed job's full result. Returns result_data or result_url for download.\n • list: List recent jobs for the current tenant. Read-only.\n • cancel: Cancel a running job. Write — interrupts the background operation." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
initiate_gam_auth1 field changed- changed
Input schema / properties / network_code / descriptionPrevious value: -"The GAM network code to authorize."New value: +"The GAM network code to authorize. Obtain from the GAM UI or list_accessible_networks after a Google sign-in."
- Changed
inventory2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get_ad_unit_tree, audit_inventory, create_ad_units_batch, generate_ads_json, generate_inventory_blueprint, push_inventory_blueprint, get_ad_units_by_ids, find_inactive_ad_units, archive_inactive_ad_units, list_ad_unit_sizes."New value: +"Sub-operation to perform:\n • get_ad_unit_tree: Return the full ad unit hierarchy as a nested JSON tree. Read-only.\n • audit_inventory: Analyze the inventory for structural issues: orphaned ad units, duplicate sizes, missing placements. Read-only.\n • create_ad_units_batch: Create multiple ad units in one call from a specification list. Write.\n • generate_ads_json: Generate an ads.json / app-ads.json file from the current inventory. Read-only.\n • generate_inventory_blueprint: Generate a blueprint JSON from existing GAM inventory (reverse-engineering). Read-only.\n • push_inventory_blueprint: Push the stored blueprint to GAM, creating or updating ad units. Write, 1 credit.\n • get_ad_units_by_ids: Retrieve multiple ad units by ID in one call. Read-only.\n • find_inactive_ad_units: Find ad units with no recent impressions. Read-only.\n • archive_inactive_ad_units: Archive ad units flagged as inactive. Destructive write. Run find_inactive_ad_units first.\n • list_ad_unit_sizes: List all sizes used across ad units on the network. Read-only." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
jobs3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get_job, list_jobs, duplicate_job."New value: +"Sub-operation to perform:\n • get_job: Get an OrbiAds deployment job by ID. Returns status, progress, and deployment log.\n • list_jobs: List recent OrbiAds deployment jobs for the tenant. Read-only.\n • duplicate_job: Duplicate a completed job configuration to re-run a similar deployment. Write." - changed
Input schema / properties / job_id / descriptionPrevious value: -"OrbiAds job identifier."New value: +"OrbiAds deployment job identifier." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
line_item_lifecycle2 fields changed- changed
Input schema / properties / confirmation_token / descriptionPrevious value: -"Write-confirmation token (required for destructive transitions)."New value: +"Required for lifecycle_action=archive. Obtain from a prior estimate_cost call." - changed
Input schema / properties / lifecycle_action / descriptionPrevious value: -"Lifecycle transition to apply."New value: +"activate: start delivery. pause: stop delivery temporarily. resume: restart a paused line item. archive: permanently remove from serving (destructive)."
- Changed
line_items3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get, list_by_order, update, update_targeting, duplicate, verify, approve, archive, create_batch, activate_batch, pause_batch, create_adexchange, create_open_bidding, create_preferred_deal, list_private_deals."New value: +"Sub-operation to perform:\n • get: Get a single line item by ID. Read-only.\n • list_by_order: List all line items under an order. Read-only. Requires order_id.\n • update: Update a line item's name, targeting, dates, or budget. Write.\n • update_targeting: Update only the targeting of a line item. Write. More efficient than full update for targeting-only changes.\n • duplicate: Duplicate a line item to create a copy. Write.\n • verify: Verify that a line item configuration is valid before activation. Read-only.\n • approve: Approve a line item for delivery. Write.\n • archive: Archive a line item. Destructive write.\n • create_batch: Create multiple standard line items under an order. Write.\n • activate_batch: Activate multiple line items in one call. Write.\n • pause_batch: Pause multiple line items in one call. Write.\n • create_adexchange: Create an Ad Exchange line item. Write. Requires adExchangeEnvironment and targeting.\n • create_open_bidding: Create an Open Bidding line item. Write. Requires yieldGroupIds.\n • create_preferred_deal: Create a Preferred Deal line item. Write. Requires fixedCpm and buyerId.\n • list_private_deals: List Private Marketplace deals associated with line items. Read-only." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks." - changed
Input schema / properties / order_id / descriptionPrevious value: -"GAM Order ID (required for list_by_order)."New value: +"GAM Order ID (required for list_by_order and create_batch)."
- Changed
network2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get_network_info, switch_network, list_accessible_networks, update_network."New value: +"Sub-operation to perform:\n • get_network_info: Return metadata about the current active GAM network.\n • switch_network: Set a different network as the active one for subsequent operations. Requires network_code of the target network.\n • list_accessible_networks: List all GAM networks accessible to the authenticated Google account.\n • update_network: Update network-level settings (display name, currency). Write, requires Network Admin role." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
order_lifecycle2 fields changed- changed
Input schema / properties / confirmation_token / descriptionPrevious value: -"Write-confirmation token (required for approve/archive)."New value: +"Required for lifecycle_action=archive." - changed
Input schema / properties / lifecycle_action / descriptionPrevious value: -"Lifecycle transition to apply."New value: +"approve: allow delivery. disapprove: block delivery. archive: permanently deactivate (destructive)."
- Changed
orders2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_delivering, get, list, create, archive, approve, verify_setup, update, find_or_create, list_users, list_roles."New value: +"Sub-operation to perform:\n • list_delivering: List orders currently in delivery. Read-only.\n • get: Get a single order by ID. Read-only.\n • list: List orders with optional filters (advertiser, status, date range). Read-only.\n • create: Create a new order. Write. Requires advertiserId, name, and traffickerId.\n • archive: Archive an order. Destructive write — stops delivery.\n • approve: Approve an order for delivery. Write.\n • verify_setup: Verify an order's setup (targeting, creative associations) before activation. Read-only.\n • update: Update an order's name, salesperson, or notes. Write.\n • find_or_create: Find an existing order matching the criteria or create a new one if not found. Idempotent write.\n • list_users: List users (salespeople, traffickers) associated with an order. Read-only.\n • list_roles: List available order roles. Read-only." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
placements2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_placements, create_placement, update_placement, archive_placement."New value: +"Sub-operation to perform:\n • list_placements: List all placements on the network. Read-only.\n • create_placement: Create a new placement grouping ad units. Write. Requires name and targetedAdUnitIds.\n • update_placement: Update a placement's name or ad unit membership. Write.\n • archive_placement: Archive a placement. Destructive write — removes from targeting options." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
pql3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: run_query."New value: +"Sub-operation to perform:\n • run_query: Execute a PQL SELECT statement. Example: SELECT Id, Name FROM Order WHERE Status = 'DELIVERING'. Returns rows up to 1000 per call." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks." - changed
Input schema / properties / pql_query / descriptionPrevious value: -"PQL SELECT statement (e.g. SELECT Id, Name FROM Order WHERE ...)."New value: +"PQL SELECT statement. Supported tables: Order, LineItem, Creative, AdUnit, Placement, Company, User, and others. Max 1000 rows returned."
- Changed
preview2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: get_preview_urls, get_campaign_preview_urls, check_creative_coverage."New value: +"Sub-operation to perform:\n • get_preview_urls: Generate preview URLs for a single creative across its associated ad sizes.\n • get_campaign_preview_urls: Generate preview URLs for all creatives in a campaign. Returns a per-line-item, per-creative list.\n • check_creative_coverage: Check that all line items in a campaign have at least one active creative. Returns a coverage report." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
products2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: create, list, get, update, archive, get_adcp, pricing_suggestion."New value: +"Sub-operation to perform:\n • create: Create a new GAM product. Write. Requires name, productTemplateId, and rate.\n • list: List all products on the network with optional filters. Read-only.\n • get: Get a product by ID. Read-only.\n • update: Update a product's rate, targeting, or description. Write.\n • archive: Archive a product. Destructive write — removes from buyer-facing catalogue.\n • get_adcp: Get the ADCP (Automated Direct Campaign Pricing) configuration for a product. Read-only.\n • pricing_suggestion: Get a pricing suggestion for a product based on historical delivery data. Read-only." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
reporting2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: check_delivery_status, fetch_delivery_report, run_custom_report, fetch_inventory_report, get_report_result, export_report_csv, get_report_dimensions, get_report_metrics, get_report_date_ranges, get_standalone_forecast, get_delivery_forecast_by_line_item, get_prospective_delivery_forecast, get_traffic_data, list_report_templates, save_report_template, delete_report_template, duplicate_report_template, update_report_template, run_report_from_template, list_gam_reports, get_gam_report, create_gam_report, update_gam_report, delete_gam_report, run_gam_report, run_ga_report, get_ga_dimensions, get_ga_metrics, check_underdelivery_alerts, check_budget_alerts, generate_billing_report."New value: +"Sub-operation to perform:\n • check_delivery_status: Check delivery status (actual vs booked) for an order or line item. Returns pacing indicator.\n • fetch_delivery_report: Fetch a delivery report for a date range. Returns impressions, clicks, CTR by line item.\n • run_custom_report: Run an ad-hoc report with specified dimensions and metrics. Returns result rows.\n • fetch_inventory_report: Fetch an inventory forecast report for ad units. Returns available impressions.\n • get_report_result: Retrieve the result of a previously run report by report_id.\n • export_report_csv: Export a report result as a CSV download URL.\n • get_report_dimensions: List valid dimension names for custom reports. Use to discover available breakdown options.\n • get_report_metrics: List valid metric names for custom reports. Use to discover available measurements.\n • get_report_date_ranges: List valid relative date range strings (LAST_7_DAYS, LAST_MONTH, etc.).\n • get_standalone_forecast: Get a forecasted impression estimate for a targeting specification without an existing line item.\n • get_delivery_forecast_by_line_item: Get a delivery forecast for one or more existing line items.\n • get_prospective_delivery_forecast: Get a prospective forecast for a hypothetical line item configuration.\n • get_traffic_data: Get historical traffic data (impressions available) for targeting criteria.\n • list_report_templates: List saved report templates. Read-only.\n • save_report_template: Save a report configuration as a reusable template. Write.\n • delete_report_template: Delete a report template. Destructive write.\n • duplicate_report_template: Duplicate a report template. Write.\n • update_report_template: Update a saved report template. Write.\n • run_report_from_template: Run a report using a saved template. Returns report_id for async result retrieval.\n • list_gam_reports: List reports saved in the GAM UI. Read-only.\n • get_gam_report: Get a specific GAM report by ID. Read-only.\n • create_gam_report: Create a new report in GAM. Write.\n • update_gam_report: Update a GAM report configuration. Write.\n • delete_gam_report: Delete a GAM report. Destructive write — uses soft-delete (PATCH visibility=HIDDEN).\n • run_gam_report: Run a GAM report and return result rows.\n • run_ga_report: Run a GA4 report for connected Google Analytics data.\n • get_ga_dimensions: List valid GA4 dimension names.\n • get_ga_metrics: List valid GA4 metric names.\n • check_underdelivery_alerts: Check for active underdelivery alerts across all line items. Returns affected line items with severity.\n • check_budget_alerts: Check for budget pacing alerts. Returns line items at risk of overspending.\n • generate_billing_report: Generate a billing summary report for a date range. Returns revenue by advertiser and line item." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
reporting_skill1 field changed- changed
Input schema / properties / goal / descriptionPrevious value: -"Plain-language reporting goal (e.g. 'weekly revenue by ad unit for last month')."New value: +"Plain-language description of the reporting goal. Example: 'top 10 advertisers by revenue last quarter' or 'daily CTR for line items in order 12345'."
- Changed
select_gam_network1 field changed- changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code to activate."New value: +"GAM network code to set as active."
- Changed
settings2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_presets, create_preset, delete_preset, get_tenant_settings, update_tenant_settings, get_naming_conventions, update_naming_conventions, get_delivery_defaults, update_delivery_defaults."New value: +"Sub-operation to perform:\n • list_presets: List all saved configuration presets. Read-only.\n • create_preset: Save current settings as a named preset. Write.\n • delete_preset: Delete a preset. Destructive write.\n • get_tenant_settings: Get all tenant-level settings. Read-only.\n • update_tenant_settings: Update tenant settings. Write.\n • get_naming_conventions: Get configured naming convention patterns for orders, line items, and creatives.\n • update_naming_conventions: Update naming convention patterns. Write.\n • get_delivery_defaults: Get default delivery settings (pacing, priority, roadblocking) applied to new line items.\n • update_delivery_defaults: Update delivery defaults. Write." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
targeting2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: list_ad_units, validate_fluid, list_custom_targeting_keys, get_inventory_forecast, create_custom_targeting_key, create_custom_targeting_values, update_custom_targeting_key, delete_custom_targeting_key, update_custom_targeting_value, perform_custom_targeting_value_action, search_ad_units, update_ad_unit, archive_ad_unit, get_custom_targeting_values, search_custom_targeting, get_available_countries, get_available_languages, get_device_categories."New value: +"Sub-operation to perform:\n • list_ad_units: List all ad units with their sizes and status. Read-only. For full hierarchy, use inventory get_ad_unit_tree.\n • validate_fluid: Validate a fluid targeting expression for syntax and reference errors. Read-only.\n • list_custom_targeting_keys: List all custom targeting keys on the network. Read-only.\n • get_inventory_forecast: Get estimated available impressions for a targeting specification. Read-only. Use before creating a line item to validate reach.\n • create_custom_targeting_key: Create a new custom targeting key. Write.\n • create_custom_targeting_values: Create one or more values for an existing key. Write.\n • update_custom_targeting_key: Update a key's name or type. Write.\n • delete_custom_targeting_key: Delete a targeting key and all its values. Destructive write.\n • update_custom_targeting_value: Update a targeting value's name or display name. Write.\n • perform_custom_targeting_value_action: Activate or deactivate a targeting value. Write.\n • search_ad_units: Search ad units by name or path. Read-only.\n • update_ad_unit: Update an ad unit's name, description, or size. Write.\n • archive_ad_unit: Archive an ad unit. Destructive write. Run inventory find_inactive_ad_units first.\n • get_custom_targeting_values: Get all values for a specific targeting key. Read-only.\n • search_custom_targeting: Search targeting keys and values by text. Read-only.\n • get_available_countries: Return the canonical list of countries for geographic targeting (ISO 3166-1 alpha-2 codes).\n • get_available_languages: Return the canonical list of language codes for language targeting.\n • get_device_categories: Return the canonical list of device categories (DESKTOP, MOBILE, TABLET, CONNECTED_TV)." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
- Changed
tenant_catalog2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Sub-operation to perform. One of: scan_network, get_scan_status, get_active_catalog, refresh."New value: +"Sub-operation to perform:\n • scan_network: Trigger a background scan of the GAM network to build the inventory catalog. Returns a scan job ID. Poll with get_scan_status.\n • get_scan_status: Get the status of the most recent catalog scan. Returns status, progress, and last_updated timestamp.\n • get_active_catalog: Return the current cached inventory catalog (ad units, placements, targeting keys). May be stale if not refreshed recently.\n • refresh: Trigger an incremental catalog refresh to pick up recent GAM changes without a full rescan." - changed
Input schema / properties / network_code / descriptionPrevious value: -"GAM network code (e.g. 12345678). Required for all network-scoped operations."New value: +"GAM network code (e.g. 12345678). Required for all network-scoped operations. Obtain via select_gam_network or list_accessible_networks."
39 tool updates
v0.1.0- First observed
audiences - First observed
audit - First observed
audit_skill - First observed
billing - First observed
blueprint - First observed
campaign - First observed
check_credentials - First observed
companies - First observed
creative_assets - First observed
creative_qa - First observed
creative_wrapper_skill - First observed
creatives - First observed
deals - First observed
disconnect_gam - First observed
formats - First observed
gam_admin - First observed
gam_audit - First observed
gam_features - First observed
gam_jobs - First observed
get_my_tenant_id - First observed
initiate_gam_auth - First observed
inventory - First observed
jobs - First observed
line_item_lifecycle - First observed
line_items - First observed
network - First observed
order_lifecycle - First observed
orders - First observed
placements - First observed
poll_auth_status - First observed
pql - First observed
preview - First observed
products - First observed
reporting - First observed
reporting_skill - First observed
select_gam_network - First observed
settings - First observed
targeting - First observed
tenant_catalog
TDQS
Most tools have distinct purposes with detailed descriptions that help differentiate them. However, some tools like audit, audit_skill, and gam_audit could be confused, as they all relate to auditing but with subtle differences. The names alone don't always clarify the distinction.
Tool names are inconsistent: some are single nouns like 'audit' and 'billing', others are verb_noun like 'check_credentials' and 'initiate_gam_auth'. There is no uniform pattern, though most names are descriptive. The mix of conventions reduces predictability.
With 47 tools, the server is extensive. While each tool has a specific purpose in GAM management, the high number may be overwhelming. Some tools could potentially be merged (e.g., line_items and line_item_lifecycle), but the scope justifies many specialized operations.
The tools cover a comprehensive range of GAM operations including authentication, inventory, orders, line items, creatives, deals, reporting, auditing, admin, and specialized areas like prebid, DAI, and yield. The surface appears complete for a full campaign lifecycle.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- adsOAuthcom.adspirer
Manage Google, Meta, Amazon, TikTok, LinkedIn & ChatGPT ads. 430 tools for campaigns & analytics.
Run your ecommerce ads from Claude & ChatGPT: Meta, Google, Amazon, Shopify (150 tools)
Google Ads, Meta Ads & GA4 MCP server - 250+ tools for campaigns, creatives, audiences & reports.
60+ Meta Ads tools for AI agents: audits, campaign management, audiences and CAPI tracking.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis read-only MCP Server allows you to connect to Google Ad Manager data from Claude Desktop through CData JDBC Drivers. Free (beta) read/write servers available at https://www.cdata.com/solutions/mcp5MIT
- AlicenseAqualityFmaintenanceEnables AI assistants to manage Google Ad Manager campaigns, line items, creatives, and advertisers through natural language, automating ad operations that normally require countless clicks through the UI.3518MIT
- AlicenseBqualityDmaintenanceEnables programmatic management of Google Ads campaigns, allowing users to monitor performance metrics, update budgets, and toggle campaign statuses. It supports real-time analytics, top performer analysis, and reporting in CSV or JSON formats.11272MIT
- AlicenseAqualityDmaintenanceProvides Meta and Google Ads intelligence for AI assistants, enabling users to analyze performance, track competitors, and manage ad campaigns through natural language. It features 17 tools for generating creative concepts, scraping competitor ads, and performing deep account-level analysis.17MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/OrbiAds/Orbiads-GAM-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server