ZuckerBot
ZuckerBot MCP server is a comprehensive Meta Ads toolkit for AI agents, providing 50+ tools for managing, analyzing, and optimizing Facebook/Instagram ad campaigns through the Model Context Protocol, with both free and paid tiers.
Key capabilities include:
Account Setup & Management: Verify Meta connection, list/select ad accounts, pages, pixels, and lead forms; validate launch credentials.
Auditing & Intelligence: Run full account audits (wasted spend, creative fatigue, opportunity score), analyze historical performance, and get AI-generated campaign structure recommendations.
Campaign Planning & Creation: Create campaign drafts, preview ads, approve strategies, suggest creative angles, generate briefs, and build campaigns from JSON specs (with dry-run support).
Campaign Launch & Management: Launch/pause campaigns at various levels, monitor real-time performance (spend, leads, CPL, CTR, ROAS), and build full campaigns from Architect sessions.
Creative Tools: Upload creatives, analyze performance by attributes, cross-analyze dimensions, generate briefs, QA against policies, and tag creatives.
Audience Building: Create seed audiences from CAPI data, build lookalikes, list/refresh/status/delete audiences.
Conversion Tracking (CAPI): Configure server-side tracking, test events, rotate webhook secrets, sync lead quality feedback, and manually send CAPI events.
Reporting & Insights: Get account-wide and campaign-level insights with deduped lead metrics, manage custom conversions.
Audience Portfolios: Create multi-tier portfolios, monitor performance, and rebalance budgets across tiers.
Research & Market Intelligence: Research reviews, analyze competitor ads, and get market benchmarks.
Business Context: Enrich from website, upload business context docs, and list stored context.
Billing & Licensing: Check billing usage and redeem lifetime license codes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ZuckerBotShow me my top campaigns by spend this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ZuckerBot
The Meta Ads toolkit for AI agents.
Audit your ad account in one message. 50+ tools for account auditing, campaign management, creative analysis, audience building, and conversion tracking. One npx command. Works with Claude, ChatGPT, OpenClaw, Cursor, and any MCP-compatible agent.
{
"mcpServers": {
"zuckerbot": {
"command": "npx",
"args": ["-y", "zuckerbot-mcp"],
"env": { "ZUCKERBOT_API_KEY": "zb_live_your_key_here" }
}
}
}Get API Key (free) · npm · Docs · Website
Why ZuckerBot?
Your agent already writes code, manages files, and searches the web. It should manage your ads too.
ZuckerBot gives any AI agent full Meta Ads capabilities through MCP. No dashboard, no UI to learn, no platform to log into. Your agent installs it, connects your ad account, and gets to work.
What agents can do with ZuckerBot:
Audit your ad account in one message — spend flagged for review, creative fatigue, opportunity score, prioritised action items (free tier included)
Pull campaign performance and spot what's working
Analyse ad creatives and recommend what to test next
Build and launch campaigns with targeting and budget
Create custom and lookalike audiences
Set up server-side conversion tracking (CAPI)
Research competitors, reviews, and market benchmarks
Generate ad creative briefs and copy
Related MCP server: muze-mcp
How it works
You ↔ Your Agent (Claude, ChatGPT, OpenClaw, Cursor, etc.)
↕
ZuckerBot MCP
↕
Meta Marketing APIZuckerBot handles the Meta API complexity. Your agent handles the conversation. You make the decisions.
Install
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"zuckerbot": {
"command": "npx",
"args": ["-y", "zuckerbot-mcp"],
"env": { "ZUCKERBOT_API_KEY": "zb_live_your_key_here" }
}
}
}OpenClaw
Add to your MCP config:
{
"mcpServers": {
"zuckerbot": {
"command": "npx",
"args": ["-y", "zuckerbot-mcp"],
"env": { "ZUCKERBOT_API_KEY": "zb_live_your_key_here" }
}
}
}Cursor / Windsurf / Any MCP Client
Same config pattern. ZuckerBot works with any client that supports the Model Context Protocol.
Remote MCP (no install)
Don't want to run anything locally? https://zuckerbot.ai/api/mcp is a hosted Streamable HTTP endpoint serving the same tools.
claude.ai — add it as a custom connector (Settings → Connectors → Add custom connector) and authenticate via OAuth, or pass an
Authorization: Bearer zb_live_...header.Claude Code:
claude mcp add --transport http zuckerbot https://zuckerbot.ai/api/mcp --header "Authorization: Bearer zb_live_..."Any Streamable HTTP client — point it at
https://zuckerbot.ai/api/mcpwith your API key as a bearer token.
CLI (for humans)
npm install -g zuckerbot-mcp
zuckerbot preview https://your-business.com
zuckerbot meta status
zuckerbot create https://your-business.com --budget 5000 --objective leadsTools (50+)
Audit & Licensing (2)
Tool | What it does |
| Full read-only account audit: spend flagged for review against each campaign's objective, creative fatigue, opportunity score (0-100), projected CPL improvement, prioritised action items. Available on every tier — the recommended first call |
| Redeem a lifetime licence code (Dealify/AppSumo) and upgrade all API keys on the account |
Setup & Account (7)
Tool | What it does |
| Guided setup: check auth, show next steps, recommended tool flow |
| Check Meta connection status for your API key |
| List available Meta ad accounts and current selection |
| Connect a specific ad account |
| List Facebook pages and current selection |
| Set active page for ad delivery |
| Verify all required credentials are set before launching |
Campaigns (9)
Tool | What it does |
| Generate ad preview from a URL (no Meta account needed) |
| Create a campaign draft with strategy, targeting, and creatives |
| Get campaign detail, workflow state, and linked creatives |
| Approve tiers and creative angles for an intelligence campaign |
| Get proposed creative angles and audience tiers for a draft |
| Temporarily unavailable; intelligence campaigns remain planning-only |
| Launch one or all variants from a draft on Meta |
| Pause a live campaign; resume is temporarily disabled |
| Real-time campaign metrics: spend, leads, CPL, CTR, ROAS |
Audiences (6)
Tool | What it does |
| Build a custom audience from hashed CAPI users |
| Create a lookalike from any seed audience |
| List all custom and lookalike audiences |
| Refresh an audience or sync latest state from Meta |
| Check audience size, status, and readiness |
| Remove an audience from Meta and ZuckerBot |
Creatives (8)
Tool | What it does |
| Upload finished assets and provision paused Meta ads |
| Check creative generation progress |
| AI analysis of ad creative performance with recommendations |
| Quality check creatives against Meta ad policies |
| Generate creative briefs based on performance data |
| Generate ad copy and images (or AI video) |
| Create a creative handoff package for production |
* Creative image/video generation tools (generate_static_ad, generate_video_ad, get_video_ad_status, generate_creatives, request_creative) are disabled by default — enable them with ZUCKERBOT_ENABLE_CREATIVE_TOOLS=1 in your MCP config env (paid add-on coming). All creative analysis tools stay available.
Conversion Tracking / CAPI (5)
Tool | What it does |
| Get or update server-side conversion tracking config |
| 7-day and 30-day CAPI delivery and attribution stats |
| Send a test event through the CAPI pipeline |
| Send lead quality feedback to Meta's algorithm |
| List and select Meta pixels for conversion tracking |
Reporting (2)
Tool | What it does |
| Campaign / ad set / ad-level Meta performance for any campaign in the account (including non-ZuckerBot ones), with deduped lead metrics |
| Account-wide spend, impressions, CTR, CPM, CPC, and frequency aggregated daily or monthly |
get_campaign_insights surfaces three distinct lead figures rather than one collapsed number, each verified against Ads Manager:
Field | Meaning |
| Meta's authoritative deduped "Results" for any objective (Ads Manager "Results" column), with |
| Deduped on-Meta leads ( |
| CRM-qualified conversion leads (from Meta's |
| Full labelled arrays of |
| Deprecated. Objective-resolved result that mis-ranks mixed campaigns. Kept for back-compat — prefer |
| Deprecated. Inflated surface count ( |
Costs are derived as spend / count; Meta's cost_per_action_type is non-additive and is never summed. The same fields roll up in summary as total_meta_result / blended_cost_per_meta_result (with meta_result_type), total_meta_leads / blended_cost_per_meta_lead, and total_conversion_leads / blended_cost_per_conversion_lead (with total_leads / blended_cpl deprecated alongside their per-row counterparts).
Portfolios (5)
Tool | What it does |
| Create an audience portfolio from a template |
| Temporarily unavailable; portfolios remain planning/monitoring-only |
| Tier-by-tier portfolio performance breakdown |
| Dry-run or apply budget rebalancing across tiers |
Research (3)
Tool | What it does |
| Review intelligence for any business |
| Competitor ad analysis by industry and location |
| Market intelligence and ad benchmarks |
Business Context (4)
Tool | What it does |
| Crawl a website and cache structured business context |
| Upload text content and extract business insights |
| List uploaded context files and summaries |
| Select a lead form for campaign targeting |
Typical Agent Flow
0. Audit → audit_account (how is this account doing today?)
1. Research → research_reviews + research_competitors (parallel)
2. Preview → preview_campaign (show user what ads look like)
3. Create → create_campaign with mode=legacy (launch-ready draft)
4. Review → confirm targeting, creative, Meta connection, and budget
5. Launch → launch_campaign after explicit approval
6. Monitor → get_performance + creative_analysis
7. Pause → pause_campaign whenever delivery must stop
8. Optimise → sync_conversion + audience toolsEvery tool returns a _hint field suggesting the logical next step, so your agent always knows what to do next.
Shorthand: legacy create -> review -> launch -> monitor. Intelligence activation, portfolio launch, and campaign resume are temporarily unavailable during Dealify launch hardening.
MCP names include zuckerbot_enrich_business, zuckerbot_upload_business_context, zuckerbot_get_campaign, zuckerbot_activate_campaign, and zuckerbot_create_seed_audience.
zuckerbot_duplicate_ad duplicates one supported ad into an existing ad set in the same ad account — dry-run by default, always created PAUSED, and executes only with an explicit idempotency_key so a retry can never create the ad twice.
zuckerbot_upload_ad_asset uploads a brand-new image or video file into the connected ad account's library from a hosted https URL (Meta downloads it directly), returning the image_hash or video_id; poll zuckerbot_get_ad_asset_status until a video is processed.
zuckerbot_create_ad then builds one new creative + one new PAUSED ad from that asset in any EXISTING ad set — including live campaigns built outside ZuckerBot — with the same dry-run-first, idempotency_key-gated contract as duplication.
ZuckerBot vs alternatives
ZuckerBot | Pipeboard | AdAmigo.ai | Supermetrics | |
What it is | Meta Ads toolkit for agents | Basic Meta MCP | Full ad management agent | Data extraction |
Tools | 50+ | ~20 | N/A (platform) | N/A (connectors) |
Creative analysis | ✅ AI-powered | ❌ | ✅ Platform-only | ❌ |
CAPI support | ✅ Full pipeline | ❌ | Partial | ❌ |
Audience builder | ✅ Seed + LAL | ❌ | ✅ Platform-only | ❌ |
Works with any agent | ✅ MCP standard | ✅ MCP standard | ❌ Locked to platform | ❌ |
Price | Free tier available | Free | $349/mo/account | $39-299/mo |
Pricing
Tier | Monthly | API Calls | Tools |
Free | $0 | 1,000/mo | Read-only (performance, analysis, research, account audit) |
Pro | $49 + 0.1% of ad spend | 50,000/mo | All tools including campaign management |
Scale | $149 + 0.05% of ad spend | 500,000/mo | All tools + multi-account + priority rate limits |
Free tier gets you started. Pro pays for itself with one optimised campaign.
Lifetime deal
Grabbed a ZuckerBot lifetime licence on Dealify? Codes look like ZB-XXXXX-XXXXX-XXXXX and stack on one account:
Codes | Tier | Ad accounts | API calls |
1 | Lifetime Tier 1 | 1 | 2,500/mo |
2 | Lifetime Tier 2 | 3 | 10,000/mo |
3 | Lifetime Tier 3 | 10 | 30,000/mo |
Redeem straight from your agent with the zuckerbot_redeem_license tool ("redeem my ZuckerBot code ZB-...") or in the browser at zuckerbot.ai/start.html. Redeeming upgrades every API key on your account — and if you don't have a key yet, one is minted for you (shown once, so save it).
Example conversation
You: How are my Meta campaigns doing this week?
Agent calls
get_account_insights+creative_analysisAgent: You spent $2,340 across 4 campaigns this week. Your LAL campaign is crushing it at $28 CPL — that's 40% below your account average. But your broad targeting campaign is at $95 CPL and burning budget. The "customer testimonial" creative has a 3.2% CTR vs 1.1% for your product shots. I'd recommend pausing the broad campaign and shifting that budget to the LAL.
You: Do it.
Agent calls
pause_campaign+ (budget adjustment)
Development
git clone https://github.com/DatalisHQ/zuckerbot.git
cd zuckerbot
npm install
npm run build
npm startLicense
MIT
Available Tools
68 toolszuckerbot_activate_campaignAInspect
Not currently available. Intelligence campaigns are planning-only; create a legacy-mode draft and use zuckerbot_launch_campaign for the supported live path.
| Name | Required | Description | Default |
|---|---|---|---|
| tier_names | No | Optional subset of approved tiers to activate | |
| campaign_id | Yes | Intelligence campaign ID | |
| meta_page_id | No | Optional Facebook Page ID override | |
| meta_access_token | No | Optional Meta/Facebook access token override | |
| meta_ad_account_id | No | Optional Meta ad account ID override (format: act_XXXXX) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility. It discloses that the tool is unavailable and that intelligence campaigns are planning-only, indicating the operation is not live and has no current effect. It does not speculate on error behavior, but it gives enough context to prevent an agent from expecting activation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences carry maximum signal: the unavailability status first, then the correct alternative path. No filler, no repeated schema information. This is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description tells the agent what not to do and names the live path, which is good. However, it instructs 'create a legacy-mode draft' without naming which sibling tool handles that path, leaving a small inference gap. Given the range of create_campaign* siblings, this is not fully complete conditional routing.
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 parameter bytes are already fully documented by the schema. The description adds no parameter-specific detail, but since the tool is disabled, parameter semantics are less relevant. 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 communicates that the tool is not currently available and that intelligence campaigns are planning-only, which immediately tells an agent this is not an active activation tool. It also differentiates itself from zuckerbot_launch_campaign by naming that sibling as the live path. It does not describe the operation's intended function in positive terms, but for a disabled tool this is the most relevant clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description is explicit: do not use this tool now; instead create a legacy-mode draft and use zuckerbot_launch_campaign for the supported live path. This gives the agent a firm instruction and a named alternative. This is the strongest possible usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_ad_accountsAInspect
List Meta ad accounts available to the connected user and show which is currently selected for launches and reporting. Optionally select an ad account by providing select_id — this clears the stored page selection so you can pick a matching page. Call this during setup or when switching between multiple ad accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| select_id | No | If provided, selects this Meta ad account ID for future operations (format: act_XXXXX). If omitted, lists all available accounts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a behavioral side effect: 'this clears the stored page selection so you can pick a matching page.' This goes beyond simple listing and provides important context. It does not mention authentication or rate limits, but for a read-like operation, this is adequate.
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, consisting of two sentences that front-load the main purpose and then add a clarifying detail about the selection side effect. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (one optional parameter, no output schema, no nested objects), the description covers the purpose, usage context, parameter behavior, and an important side effect. It is complete for an agent to correctly invoke this 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% for the single parameter select_id, and the parameter description in the schema is identical to the tool description's mention. Thus, the tool description adds no new semantic value beyond the schema. Baseline is 3, and no extra credit is warranted.
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 this tool lists Meta ad accounts and shows the currently selected one, with an option to select a new account via select_id. It is specific about the verb (list/select) and resource (ad accounts), and distinguishes itself from sibling tools by its unique function of listing and selecting ad accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this during setup or when switching between multiple ad accounts,' providing clear context for when to use the tool. It does not explicitly state when not to use or mention alternatives, but the guidance is sufficient for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_analyse_account_historyAInspect
Analyse the historical ad performance for a business. For accounts WITH history: returns aggregated metrics by audience type, top performing creatives, and comparable CPL ranges. For NEW accounts with NO history: returns is_cold_start=true with industry benchmarks. Use this as the FIRST step in campaign planning — feed the result into zuckerbot_recommend_campaign_structure.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | No | Business ID (auto-resolved from API key if omitted) | |
| lookback_days | No | Number of days of history to analyse (default: 90) | |
| target_audience | No | Optional audience keyword to check if it has been targeted before (e.g., 'pool builders') | |
| include_audience_history | No | Include analysis of which audiences have been targeted before |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses behavior: for accounts with history, it returns aggregated metrics, top creatives, and CPL ranges; for new accounts, it returns is_cold_start=true and industry benchmarks. This transparently sets expectations about the two distinct outcomes based on account history.
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 only two sentences: one explaining the tool's function for both account types, and one providing usage guidance. Every sentence is valuable and there is no redundancy, making it concise and well-structured.
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 covers return values (aggregated metrics, top creatives, CPL ranges for history; is_cold_start and benchmarks for new accounts). It also explains the cold start scenario. However, it could be slightly more detailed on the exact format of aggregated metrics, but overall it is sufficiently complete for its role as a first-step analysis 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%, so baseline is 3. The description does not add significant new meaning beyond the schema; it reiterates parameter purposes (e.g., business_id auto-resolves, lookback_days range, target_audience optional check). No additional semantics are provided, so score remains at 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 analyzes historical ad performance for a business, distinguishes between accounts with history (returns aggregated metrics, top creatives, CPL ranges) and new accounts (cold start flag with industry benchmarks), and positions it as the first step in campaign planning. This is specific and differentiates from sibling tools like zuckerbot_get_account_insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs 'Use this as the FIRST step in campaign planning — feed the result into zuckerbot_recommend_campaign_structure.' This provides clear context and a sequential workflow, effectively guiding the agent on when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_approve_campaign_strategyAInspect
Approve the AI-generated intelligence strategy for a campaign, optionally narrowing to specific audience tiers and creative angles. This locks in the plan before creative production starts. Required before calling zuckerbot_request_creative or zuckerbot_upload_creative.
| Name | Required | Description | Default |
|---|---|---|---|
| tier_names | No | Optional subset of audience tier names to approve | |
| angle_names | No | Optional subset of creative angle names to approve | |
| campaign_id | Yes | Intelligence campaign ID |
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 states the tool 'locks in the plan' but does not explain whether the action is reversible, what permissions are needed, or what the response looks like. This is minimal for a potentially critical mutation operation.
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 just two sentences with no redundant words. The first sentence states the action and optional parameters, the second provides workflow context. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lacks return value information (no output schema) and does not cover prerequisites or side effects beyond the sequential dependency. For a mutation tool, this is insufficient for an agent to fully understand the tool's behavior.
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%, providing a baseline of 3. The description adds value by explaining that tier_names and angle_names are 'optional subsets' for narrowing approval, clarifying their purpose in context. This goes 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 approves an AI-generated intelligence strategy for a campaign, with optional narrowing to specific tiers and angles. It distinguishes from siblings by naming two subsequent tools that depend on this approval, making its role unique.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool ('before creative production starts') and provides a required sequence ('Required before calling zuckerbot_request_creative or zuckerbot_upload_creative'). However, it does not mention when not to use it or alternative tools for different scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_audit_accountAInspect
Run a full audit of the connected Meta ad account: spend flagged for review against each campaign's own objective, creative fatigue, a complete-account opportunity score (0-100 when all inputs return), and prioritised action items. Saves a shareable web report when the API key resolves to one saved business. Read-only and available on every tier — the recommended FIRST call for any new account or when a user asks 'how are my ads doing?'.
| Name | Required | Description | Default |
|---|---|---|---|
| company_name | No | Company name used in the audit narrative. Defaults to the connected business name. | |
| meta_ad_account_id | No | Meta ad account ID to audit (format: act_XXXXX). Defaults to the connected account. |
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 of behavioral disclosure. It states that the operation is read-only, available on every tier, saves a shareable report only when the API key resolves to one saved business, and that the opportunity score is only produced when all inputs return. That is much more than a minimal safety 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?
Every part of the description earns its place: scope, expected deliverables, the score range, the conditional report side effect, the tier availability, and usage timing. It is front-loaded with the concrete audit purpose and the parenthetical 'when all inputs return' adds useful precision without bulk.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema available, the description does enough by naming the major return streams: spend flags, creative analysis, the score, and action items. It also covers the report side effect and tells the agent when this tool should be called first. An agent can confidently decide whether to invoke it and what to expect back.
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 both parameters are already documented by the schema. The description adds little beyond the schema: it only lightly reinforces that company_name defaults to the connected business name and that meta_ad_account_id defaults to the connected account. That matches the baseline for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Run a full audit of the connected Meta ad account', then enumerates distinct deliverables such as spend flagged against objective, creative fatigue, a 0-100 opportunity score, and prioritized action items. It is clearly distinguished from sibling analytics/insights tools like get_account_insights and get_performance because it frames itself as a full-account audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit usage cue: 'the recommended FIRST call for any new account or when a user asks how are my ads doing?'. This is clear context, but it does not name alternative tools or say when the user should instead call a more targeted sibling like get_performance or get_account_insights, so it lacks explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_billing_statusAInspect
Check your current ZuckerBot billing tier, API call usage this month, remaining quota, and overage costs. Use this when a user asks about their plan or usage limits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it reads billing information but does not explicitly state it's read-only. Acceptable for a simple lookup tool with no side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no redundancy. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description sufficiently covers what the tool returns (tier, usage, quota, overage). 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 exist, and schema coverage is 100%. Description adds no param info because none needed. 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?
Clear verb 'Check' and specific resource 'billing status' with explicit outputs: tier, usage, quota, overage. No sibling tool covers billing, so it's distinct.
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 'Use this when a user asks about their plan or usage limits.' Provides clear context for invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_capi_statusAInspect
Get 7-day and 30-day CAPI delivery statistics for the business: total events sent, events by type (Lead/Contact/Purchase), match quality and identifier-coverage breakdowns, meta_events_received (Meta's own acknowledged count), and attribution counts. IMPORTANT: attributed counts events tied to a campaign — via ZuckerBot lead records or Meta lead resolution (user_data.lead_id resolved to its source campaign; requires the leads_retrieval permission, and a bounded backlog batch resolves on each call) — it does NOT measure Meta-side event matching; delivery health is meta_events_received, match keys are by_identifier. Read the attribution.basis and attribution.note fields before concluding anything from attributed: 0.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | No | Optional business ID override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility and handles it well. It warns that 'attributed' does not mean Meta-side event matching, explains attribution requires leads_retrieval permission and a bounded backlog resolution, and instructs agents to read attribution.basis and attribution.note before drawing conclusions. This is precisely the kind of behavioral nuance that structured metadata cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with a clear front-load: what is returned, followed by an IMPORTANT caveat block. Every clause either introduces a needed metric or prevents a dangerous misinterpretation. The extra warning length is justified by the ambiguity of the 'attributed: 0' case.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description itself names all metric categories present in the result: total events, events per type, match quality, identifier coverage, meta_events_received, and attribution counts. It also discloses the permission requirement and the heuristic nature of attribution. An agent given this description plus the optional parameter schema has enough context to call the tool and interpret its output 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% since selectable_details/uses. The input schema already states that business_id is an optional business ID override, and the description does not add further parameter-specific semantics such as default behavior, allowed values, or relationship to the current business. Baseline 3 is appropriate because the parameter meaning is already fully documented in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Get 7-day and 30-day CAPI delivery statistics for the business', then enumerates the exact metrics returned. The metric specificity distinguishes it from nearby CAPI siblings such as zuckerbot_get_capi_config, zuckerbot_capi_test, and zuckerbot_send_capi_event without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool for reading CAPI delivery statistics, but it does not explicitly state when to use this tool versus alternatives or when not to use it. The guidance it provides is about interpreting result fields (e.g., delivery health is meta_events_received, not attributed), rather than tool-selection context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_capi_testAInspect
Send a synthetic CAPI test event through the business configuration to verify the full pipeline: stage mapping, hashing, and Meta Graph API delivery. Logs as a test event (does not affect real attribution). Use after setting up or updating CAPI config to confirm events are flowing.
| Name | Required | Description | Default |
|---|---|---|---|
| fbc | No | Optional pre-formatted fbc cookie to verify raw passthrough | |
| fbp | No | Optional _fbp cookie to verify raw passthrough | |
| value | No | Optional event value override | |
| fbclid | No | Optional Facebook click ID to verify fbc construction/passthrough | |
| user_data | No | Optional user data to hash into the test payload | |
| crm_source | No | Optional CRM source label override | |
| business_id | No | Optional business ID override | |
| source_stage | No | CRM stage key to test against the mapping |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses key behavioral traits: 'Logs as a test event (does not affect real attribution)' and implies the event is sent to Meta Graph API but as a synthetic test. This adequately conveys non-destructive behavior, though more detail on side effects or permissions could strengthen 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 consists of two concise sentences. The first sentence clearly states the action and purpose; the second adds a critical behavioral disclaimer and usage suggestion. No wasted words, front-loaded with the core idea.
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 all 8 parameters are optional, schema coverage is 100%, and no output schema exists, the description is fairly complete. It covers purpose, usage timing, a key behavioral trait, and the testing nature. It does not mention expected output or error scenarios, but is adequate for a straightforward test tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the baseline is 3. The description adds high-level context (e.g., 'verify raw passthrough') but does not significantly enhance parameter meaning beyond the schema's existing descriptions of each property.
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 'Send a synthetic CAPI test event' and explicitly distinguishes from real event sending (e.g., zuckerbot_send_capi_event) by noting 'does not affect real attribution' and 'Logs as a test event'. This provides a specific verb+resource and distinguishes from siblings.
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 advises 'Use after setting up or updating CAPI config to confirm events are flowing', giving clear context for when to apply the tool. It does not explicitly exclude other uses, but the guidance is sufficient for a testing tool among related CAPI siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_adAInspect
Create ONE new ad (a new creative built from a declared asset) in an EXISTING ad set of the connected ad account — the way to add a brand-new image or video into a campaign that is already running, including ZuckerBot-external campaigns. Dry-run by default: returns the exact object plan (1 new creative + 1 new ad) without creating anything; pass execute: true plus an idempotency_key to build it. The ad is ALWAYS created PAUSED — activating it is a separate deliberate action. Asset: IMAGE (image_hash from zuckerbot_upload_ad_asset, or image_url — uploaded to the library automatically) or VIDEO (video_id from zuckerbot_upload_ad_asset, which must be processed/ready; thumbnail auto-derived, thumbnail_url overridable). Destination: exactly one of final_url (website) or lead_form_id (instant form — requires cta). VIDEO ads carry their link in the call_to_action, so VIDEO + final_url also requires cta. To clone an ad that already exists in the account instead, use zuckerbot_duplicate_ad.
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | Uppercase Meta CTA type, e.g. LEARN_MORE or SIGN_UP (required for VIDEO ads and instant-form destinations) | |
| name | Yes | Name for the new ad | |
| execute | No | Default false (dry-run). Set true to actually create the PAUSED ad — requires idempotency_key | |
| headline | No | Headline | |
| video_id | No | VIDEO: Meta video id (from zuckerbot_upload_ad_asset; must be processed/ready) | |
| final_url | No | Website destination URL (exactly one of final_url or lead_form_id) | |
| image_url | No | IMAGE: https URL — uploaded to the ad-account library automatically on execution | |
| asset_type | Yes | IMAGE (image_hash or image_url) or VIDEO (video_id) | |
| image_hash | No | IMAGE: 32-char Meta library image hash from zuckerbot_upload_ad_asset for THIS ad account — hashes from the business media library or another ad account are rejected as image_hash_unusable | |
| business_id | No | Optional business ID override for the authenticated API key | |
| description | No | Description | |
| lead_form_id | No | Meta instant-form id on the connected Page (exactly one of final_url or lead_form_id; see zuckerbot_lead_forms) | |
| primary_text | No | Primary text / body copy | |
| thumbnail_url | No | VIDEO: optional https thumbnail override (default: derived from the processed video) | |
| thumbnail_hash | No | VIDEO: optional library image hash to use as the thumbnail | |
| idempotency_key | No | Required when execute is true. Generate once per logical operation (UUIDv4 recommended); reuse the identical value only when retrying the identical request | |
| target_adset_id | Yes | Numeric Meta ad set id to create the ad in (must be an EXISTING ad set in the connected ad account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It discloses the dry-run default, the execute plus idempotency_key gate, and that ads are 'ALWAYS created PAUSED.' It further surfaces operational details such as image_url auto-upload, the processed/ready requirement for video_id, automatic thumbnail derivation, and the image_hash_unusable failure mode.
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 long but dense, front-loading purpose and dry-run behavior in the first two sentences, then organizing asset and destination constraints into compact clauses. Each sentence contributes a necessary constraint or alternative, so there is no filler.
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 17 parameters, no output schema, and no annotations, the description still covers the creation workflow, safety defaults, asset sourcing, destination rules, pause state, and the clone alternative. It even names a specific failure mode and points to zuckerbot_upload_ad_asset for asset IDs, leaving very little ambiguity for a correct call.
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, but the description adds meaning beyond the schema by tying parameters together: the final_url vs lead_form_id exclusivity, VIDEO + final_url requiring cta, cta being required for instant forms, the account-specific image_hash requirement, and idempotency_key being required when execute is true. This materially helps an agent construct a valid request.
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 opens with a specific verb and resource: 'Create ONE new ad' 'in an EXISTING ad set of the connected ad account,' and specifies the two asset types. It also distinguishes itself from the clone alternative by positioning this tool as the path for brand-new creatives, so an agent can separate it from the sibling list without reading schemas.
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 guidance is present: 'the way to add a brand-new image or video into a campaign that is already running,' and it names the alternative for cloning with 'use zuckerbot_duplicate_ad instead.' It also sets clear exclusions such as 'exactly one of final_url or lead_form_id' and the need to pass execute: true to move past the dry-run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_campaignAInspect
Create a new campaign draft for a business. Defaults to legacy mode, which is the only launch-ready path. Intelligence mode remains available for planning only and cannot be activated. This tool does not spend money or create anything on Meta; review the draft, then use zuckerbot_launch_campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Business website URL | |
| mode | No | Campaign planning mode. Default legacy is the only launch-ready path. auto/intelligence are planning-only while multi-tier activation is disabled. | legacy |
| goals | No | Optional business goals to guide planning | |
| location | No | Business location for geo-targeting | |
| objective | No | Campaign objective. 'leads' defaults to Meta Instant Form unless lead_destination is 'website', 'traffic' for website visits, 'conversions' for website actions, 'awareness' for reach. Default: traffic | |
| business_id | No | Existing ZuckerBot business ID to anchor intelligence mode | |
| business_name | No | Business name (auto-detected from URL if omitted) | |
| business_type | No | Business category (e.g., 'restaurant', 'fitness', 'roofing') | |
| destination_url | No | Optional landing-page URL override for ad links, e.g. a campaign-specific LP instead of the business homepage. | |
| creative_handoff | No | Optional creative-production handoff settings | |
| lead_destination | No | For objective='leads': 'meta_form' uses a Meta Instant Form (default), 'website' uses a Meta Pixel Lead event and links ads to destination_url. | |
| budget_daily_cents | No | Daily budget in cents (e.g., 2000 = $20/day) | |
| architect_session_id | No | Optional Campaign Architect session ID. When provided, the intelligence strategy is loaded from the session instead of generating fresh. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It excels by stating that legacy mode is the only launch-ready path, that intelligence mode 'cannot be activated', that it 'does not spend money or create anything on Meta', and that it only produces a draft that must be reviewed — these are materially important safety and state facts. No contradiction with annotations exists because none were 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?
Three sentences with zero filler: primary purpose first, then the mode limitation, then the critical side effect ('does not spend money or create anything on Meta') and the follow-up action. Every sentence adds information that is not a restatement of the schema.
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 omits any hints at that a draft's output shape or lifecycle (e.g. what the returned draft ________ variable contains, how the caller should use it with preview_campaign). There is no output schema as a second signal, so the description should indicate that the result is a multi-section draft ready for review and downstream handoffs. The mode note and the follow-up tool call do carry the agent a lot of the way, but a small 'return design' clarification is absent.
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 documents every parameter, including enums, defaults, and nested goal/location/creative fields. The description adds only minor parameter-level context (reiterating that legacy mode is the default and launch-ready), which slightly reinforces the mode semantics but doesn't compensate for anything the schema already covers. 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 states a specific verb and resource — 'Create a new campaign draft for a business' — which clearly distinguishes it from launch and activation tools. It doesn't explicitly differentiate from zuckerbot_create_full_campaign or zuckerbot_create_campaign_from_spec, but the 'draft' framing plus the launch_campaign handoff makes the primary purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage context: it creates a draft, does not spend money or touch Meta, and the agent is told to review the draft and then use zuckerbot_launch_campaign. It implicitly excludes zuckerbot_launch_campaign and zuckerbot_activate_campaign for this step, but it doesn't explicitly compare against the other draft/creation siblings (create_full_campaign, create_campaign_from_spec, quickstart).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_campaign_from_specAInspect
Build a complete Meta campaign VERBATIM from a declarative JSON spec — no strategy generation, no copy authoring. Everything is created PAUSED, always; launching remains a separate deliberate call. Recommended flow: send with dry_run=true first to get the fully resolved Graph API payloads without creating anything, review them, then re-send without dry_run to build. Validation failures return an errors array of per-field {path, message, kind: schema|semantic} entries — fix each path and retry. Spec shape: OPTIONAL identity {instagram_actor_id — the Instagram account's numeric id as Meta knows it for ads (NOT an @username); Ads Manager shows it under the ad's identity selector. OPTIONAL: when omitted, ZuckerBot automatically attaches the Instagram account linked to the connected Facebook Page and reports it in the response as instagram_identity {attached, instagram_actor_id, username, source}. Declare it only to override that, or when the Page has several accounts available and ZuckerBot declines to guess. If no account can be found the ads still build but do NOT deliver on Instagram placements, and the response says so. Discovery runs on the real build, not on dry_run (a dry run states what it will attempt). Not needed for EXISTING_POST ads, which keep the original post's identity}; campaign {name, objective OUTCOME_LEADS|OUTCOME_SALES, budget {type CBO_DAILY, amount, bid_strategy HIGHEST_VOLUME|LOWEST_COST_WITHOUT_CAP|COST_CAP}, special_ad_categories}, ad_sets [{name, conversion_location WEBSITE|INSTANT_FORM, attribution {click_days 1|7, view_days 0|1}, targeting {geo — ARRAY of 2-letter country codes e.g. ["AU"], age_min, advantage_audience, excluded_custom_audiences; OPTIONAL cities/regions for sub-country targeting — arrays of either {key} (Meta's numeric location key) or {name, region?, country?} which ZuckerBot resolves against Meta's location search. Cities also take {radius, distance_unit mile|kilometer}; Meta bounds a city radius to 10-50 miles / 17-80 km, so a bigger catchment needs MORE cities or regions, not a bigger radius. IMPORTANT: when cities or regions are present they REPLACE the country in the ad set's geo_locations (Meta unions those fields, so keeping the country would target the whole country); geo then only supplies the country to resolve names within. A name must match Meta's own spelling exactly — a near miss is rejected with the candidate list and their keys, never silently substituted, and an ambiguous name (two Las Vegases) is rejected the same way. Specs that NAME places need Meta credentials even for dry_run; key-only and country-only specs do not. The dry run and the build both echo resolved_locations so you can confirm which real place each name became}, placements {mode MANUAL|ADVANTAGE_PLUS, exclude}; WEBSITE additionally: pixel_id, optimisation_event {type CUSTOM_CONVERSION, id}|{type STANDARD, event e.g. Lead}, performance_goal MAXIMISE_CONVERSIONS (the Ads Manager label, not the Graph enum); INSTANT_FORM instead: lead_form_id — the Meta instant form on the connected Page (no pixel_id, no optimisation_event, and its ads take NO final_url — the form is the destination; the creative's required display link is set automatically to the business's stored website, else its Facebook Page URL; single-image creative, no multi-ratio placement customisation)}], ads [{name, asset {type IMAGE_SET, refs {1x1,4x5,9x16 — https URLs, or image hashes already uploaded into THIS ad account (a hash from the business media library or another ad account is rejected)}}|{type VIDEO, ref — pre-uploaded Meta video id (upload one with zuckerbot_upload_ad_asset)}|{type EXISTING_AD, ad_id — clones that ad's image/video asset from the SAME ad account; copy, CTA and destination come from THIS spec}|{type EXISTING_POST, ad_id — reuses the SAME page post as that ad (object_story_id), keeping the post's social proof and engagement; or object_story_id "_" directly; the post must belong to the connected Page and the source ad to the connected ad account; the post carries ALL copy/CTA/destination, so OMIT primary_text, headline, description, cta and final_url on EXISTING_POST ads — declaring any is rejected as existing_post_copy_conflict}, primary_text, headline, description, cta, final_url (WEBSITE ad sets only; all five omitted for EXISTING_POST), ad_set_name?}]. EXISTING_AD and EXISTING_POST (ad_id form) specs need Meta credentials even for dry_run (the source ad is read from Meta). Use zuckerbot_list_custom_conversions to find custom conversion ids.
| Name | Required | Description | Default |
|---|---|---|---|
| spec | Yes | The declarative campaign spec (see tool description for the shape) | |
| dry_run | No | true = return the resolved Graph payloads without creating anything. Strongly recommended before a real build | |
| business_id | No | Optional business ID override for the authenticated API key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries full responsibility, and it does so thoroughly. It discloses that everything is created paused, that validation failures return a structured errors array, that location discovery runs only on the real build, that name resolution is strict and never silently substituted, and that identity falls back automatically but reports the result. These are meaningful behavioral traits well beyond what the schema shows.
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 purpose, paused behavior, and the recommended flow, then moves into the spec shape. It is very long, but the complexity of the nested spec justifies most of the length. It could be improved with clearer visual structuring or section breaks, but every sentence carries real 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 high complexity, lack of annotations, and absence of an output schema, the description covers a remarkable amount of needed context: the spec shape, validation error format, response fields like instagram_identity and resolved_locations, credential requirements, and edge cases like ambiguous location names. An agent has enough detail to invoke the tool correctly and interpret common outcomes.
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 description coverage is 100%, the schema itself only says 'see tool description for the shape.' The description then supplies the entire nested spec grammar, including allowed enum values, conditional fields, constraints like radius bounds, and credential implications. dry_run is also explained with a strong recommendation, making the parameters actionable.
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 opening sentence states a specific verb and resource: 'Build a complete Meta campaign VERBATIM from a declarative JSON spec.' It explicitly disambiguates from strategy/copy tools with 'no strategy generation, no copy authoring,' and clarifies the paused-by-default behavior that separates it from launch tools. This is exactly the differentiation an agent needs among the large sibling set.
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 gives a explicit recommended flow: run dry_run=true first, review payloads, then re-send without dry_run. It also states when identity is optional vs required, when credentials are needed even for dry_run, and points to sibling tools like zuckerbot_upload_ad_asset and zuckerbot_list_custom_conversions. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_custom_conversionAInspect
Create a custom conversion on the connected ad account (requires sufficient Graph permissions on the Meta token — returns insufficient_permission if Meta refuses). Provide the pixel, a name, optionally a rule (e.g. URL contains ...) and the source event type.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Display name for the custom conversion | |
| rule | No | Optional Meta rule object, e.g. {"url":{"i_contains":"/thank-you"}} | |
| pixel_id | Yes | Pixel (event source) the conversion is based on | |
| business_id | No | Optional business ID override for the authenticated API key | |
| custom_event_type | No | Source event type, defaults to OTHER |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must fully disclose behavior. It partially covers permissions and error returns but omits key details: side effects, idempotency, return value on success, or asynchronous behavior. This leaves agents uncertain about the tool's full impact.
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, no redundant words, and the most critical information (purpose, prerequisites, error handling, parameter list) is front-loaded. Highly concise and well-structured.
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 5 parameters with nested objects and no output schema. The description does not explain what the tool returns (e.g., conversion ID, status), nor does it clarify if the operation is synchronous. For a creation tool, this leaves significant gaps in the agent's understanding of the outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters. The description adds an example for the rule parameter but largely restates schema information. Baseline score of 3 is appropriate as the description provides minimal additional meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Create a custom conversion on the connected ad account', using a specific verb and resource. It clearly distinguishes from sibling tools like list_custom_conversions and other creation 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 mentions prerequisite permissions and an error case (insufficient_permission). It lists required and optional parameters, providing some usage context. However, it does not explicitly state when to use this tool over alternatives, though the context of custom conversion creation is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_full_campaignAInspect
Build a complete PAUSED Meta campaign from an approved Campaign Architect session. IMPORTANT: dry_run defaults to TRUE. When dry_run=true, returns the exact campaign structure that WOULD be created without calling Meta — safe, free, no side effects. Present this to the customer first. Only set dry_run=false after explicit customer approval. When dry_run=false, creates Meta objects in PAUSED state for review; Architect auto-activation is temporarily disabled. Generated videos get linked for rejection tracking automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | DEFAULT TRUE. Set to false ONLY after customer has approved the dry-run preview. Live mode creates real Meta objects. | |
| activate | No | Must remain false. Architect auto-activation is temporarily disabled; live mode creates PAUSED Meta objects only. | |
| session_id | Yes | Campaign Architect session ID with approved strategy and creatives | |
| meta_page_id | No | Facebook Page ID override (live mode only) | |
| meta_access_token | No | Meta access token override (live mode only) | |
| meta_ad_account_id | No | Meta ad account ID override (live mode only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses critical behaviors: dry_run produces a preview without side effects, live mode creates PAUSED Meta objects, auto-activation is disabled, and generated videos link for rejection tracking. With no annotations provided, the description carries the full burden and largely meets it, though it omits details on idempotency or authentication requirements.
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?
Five sentences with clear structure: purpose, important default, dry_run flow, live mode behavior. Front-loaded with key action. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 params, no output schema), the description covers the main workflow and side effects. It mentions return structure for dry_run (campaign structure) but does not describe the return format for live mode or error handling. Sibling tools context is clear, placing this as a middle step in architect workflow.
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 by explaining the dry_run/activate parameter workflow and the approval process, which is not evident from schema alone. This context helps the agent understand parameter interactions and usage order.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it builds a complete PAUSED Meta campaign from an approved Campaign Architect session, using a specific verb ('Build') and resource. It distinguishes from siblings like zuckerbot_create_campaign or zuckerbot_launch_campaign by emphasizing the session-based, approval-driven workflow.
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 the dry_run default, the safe preview, and the need for customer approval before setting dry_run=false. It also mentions that live mode creates PAUSED objects and auto-activation is disabled. Implicitly positions the tool after an approved architect session, but does not explicitly exclude alternatives like zuckerbot_activate_campaign.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_lookalike_audienceAInspect
Create a Meta lookalike audience from a stored seed audience. Expands a first-party seed (e.g., 'customer' stage) into a 1%, 3%, or 5% prospecting audience that Meta will target based on similarity. Typically used for the prospecting tier of an intelligence campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional audience name override | |
| country | No | Lookalike country code, such as US or AU | |
| percentage | No | Lookalike percentage, typically 1, 3, or 5 | |
| seed_audience_id | Yes | Stored seed audience row ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes the core behavior of expanding a seed into a lookalike with typical percentages. No annotations provided, so description carries full burden; however, it omits details like idempotency, error handling, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff. First sentence states purpose, second adds key details. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema; description does not mention return value (e.g., new audience ID). For a creation tool, this is a notable gap. Otherwise covers purpose and typical use adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all four parameters with descriptions. Description adds usage context (typical percentages 1, 3, 5) and clarifies that seed_audience_id references a stored row, adding value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'create' and resource 'lookalike audience' from a seed. Distinguishes from sibling tools like create_seed_audience and delete_audience by specifying it expands a seed into a prospecting audience.
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 context that it's for prospecting tier of an intelligence campaign. Implicitly differentiates from deletion or listing tools but lacks explicit when-not-to-use or prerequisites like seed must exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_portfolioAInspect
Create a planning and monitoring-only multi-tier audience portfolio for a business from a shared template (e.g., 'Local Services', 'eCommerce') or a custom tier array. Portfolios split a proposed total budget across prospecting, retargeting, and reactivation tiers with per-tier CPA targets. Portfolio launch is not currently available — portfolios are planning and monitoring only.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional portfolio name | |
| tiers | No | Optional custom tier array to override the template | |
| is_active | No | Whether the portfolio should be active immediately | |
| business_id | No | Optional business ID override | |
| template_id | No | Optional portfolio template ID | |
| template_name | No | Optional portfolio template name, such as 'Local Services' | |
| total_daily_budget_cents | No | Total daily budget in cents |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden and does provide meaningful disclosure: portfolios are planning/monitoring-only, launch is unavailable, and budgets are split into prospecting, retargeting, and reactivation tiers with per-tier CPA targets. It does not cover response shape or edge cases, but the major operational constraint is clear.
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 compact, front-loaded with the core action, and every sentence adds either scope, supported source, or a key limitation. There is no redundant or filler content.
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 annotations and no output schema, the description gives sufficient context for an agent to understand the tool's purpose, constraints, and behavior, including the critical no-launch limitation. It also explains how tiers and budgets work so the agent can reason about the 7 optional parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by explaining how the parameters relate: a total budget is split across tiers using percentages, and CPA targets apply per tier. It also clarifies the template vs custom tier selection model, going beyond the raw field names.
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 a specific verb and resource: create a portfolio, and qualifies it as multi-tier, audience-based, planning/monitoring-only, and sourced from a template or custom array. This clearly distinguishes it from sibling portfolio tools like get_portfolio, update_portfolio, rebalance_portfolio, and launch_portfolio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context: the agent should use this tool to create a planning/monitoring portfolio and explicitly says portfolio launch is not currently available, avoiding incorrect expectations. It does not explicitly name sibling alternatives, but the create-versus-manage distinction is strongly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_create_seed_audienceAInspect
Build a Meta custom audience from hashed CAPI user data stored for a business, filtered by CRM lifecycle stage (e.g., 'lead', 'customer'). Use this as the first step to create retargeting or reactivation audiences from your own first-party CRM data. Passing adopt_meta_audience_id recovers a seed audience that was created on Meta but failed to register (from a prior audience_registry_write_failed error): it skips Meta audience creation and user upload and only writes the registry record.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional audience name override | |
| business_id | No | Optional business ID override | |
| min_contacts | No | Minimum matched contacts required before creation | |
| source_stage | Yes | CRM lifecycle or source stage to seed from | |
| lookback_days | No | How many days of CAPI events to include | |
| adopt_meta_audience_id | No | Recovery only: the meta_audience_id from a prior audience_registry_write_failed error. Verifies the audience exists on the bound ad account, then registers it without re-creating it or re-uploading users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It credibly goes beyond a simple statement of creation by describing the recovery-mode behavior: 'skips Meta audience creation and user upload and only writes the registry record.' It also adds context around verification against the bound ad account. It could still disclose more about side effects, failure behavior beyond the referenced error, or prerequisites, but what is present is substantive.
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 compact and front-loaded with the primary action, then seamlessly folds in the selective recovery case. The adopt-explanation sentence is somewhat complex but necessary and not inflated. Every sentence conveys distinct information, and nothing feels redundant with sibling context or the schema.
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 the normal path and the recovery path quite well, but with no output schema and no annotations, the agent is still left without clarity on what the tool returns after a successful registry write, whether a audience ID is returned for downstream steps, or what happens when min_contacts is not met. Since the tool is positioned as a first step in a pipeline, describing its output would meaningfully complete the picture.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema by explaining that source_stage controls which CRM lifecycle stage seeds the audience and that adopt_meta_audience_id is not just a field but a full recovery path that bypasses creation. This goes beyond the schema's short descriptions and helps an agent reason about live business 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 uses a specific verb ('Build') and names the exact resource ('a Meta custom audience') plus the key input ('hashed CAPI user data', 'CRM lifecycle stage'). It clearly distinguishes itself from sibling audience tools like list_audiences, refresh_audience, and create_lookalike_audience by explaining it is the first step in seed creation and by detailing the recovery path via adopt_meta_audience_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use this tool with 'Use this as the first step to create retargeting or reactivation audiences from your own first-party CRM data.' It also specifies a concrete recovery use case for the adopt_meta_audience_id parameter, which disambiguates an important scenario. However, it does not explicitly contrast against sibling tools like create_lookalike_audience or refresh_audience.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_creative_analysisAInspect
Analyse creative performance patterns for a business by grouping ads by hook type, visual style, product focus, setting, CTA type, copy tone, or opening element. Returns average CPL/CTR/CPC/frequency per group, per-group trend direction, a structured insight object with recommendations, and can optionally include the top and bottom individual ads for the selected metric. Use this before generating new briefs to inform the creative strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| cohort | No | Set to 'objective' to group results by campaign objective family instead of pooling every campaign together. Cohorts with too little evidence are labelled insufficient, and ads without a stored objective are counted as unlabelled_ads. | |
| metric | No | Metric to rank by. Defaults to cpl. | |
| date_to | No | Optional end date in YYYY-MM-DD | |
| group_by | Yes | Creative attribute to group by | |
| date_from | No | Optional start date in YYYY-MM-DD | |
| min_spend | No | Optional minimum spend threshold per ad | |
| business_id | No | Optional business ID override | |
| include_ads | No | When true, include the top 5 and bottom 5 ads by the selected metric. | |
| summary_mode | No | When true, returns a condensed narrative summary optimised for feeding into recommend_campaign_structure. Default: false. | |
| min_impressions | No | Optional minimum impression threshold per ad | |
| objective_family | No | With cohort='objective', restrict results to one objective family. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It explains the return content: per-group CPL/CTTR/CPC/frequency averages, trend direction, structured recommendations, and optionally top/bottom adds. This gives a helpful expected-behavior contract for a read-oriented analysis tool. It doesn't't disclose whether the operation is strictly read-only, limited, or any edge-case handling, but for an analysis tool it's usefully 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 composed of three purposeful, front-loaded sentences: the tool's action, the output, and its recommended use in the workflow. It could be tightened (not enum values already in the schema with slightly redundant lists), but it remains efficient and well structured.
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?
Output description is present because there is no output schema, and it covers the most important return components. Given the tool has 11 optional params and 1 required, the combination of the `group_by` intro and high-coverage schema gives a complete context for most calls. It doesn't mention `cohort`, `summary_mode` implication in the main description, but their schemas already describe those behaviors.
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 covers all 11 parameters completely, including enums and meanings, so the baseline applies. The description does not add substantial per-parameter meaning beyond schema: it largely paraphrases `group_by` and the metric set. That is acceptable, but leaves gumption at 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 uses a specific verb and resource ('Analyse creative performance patterns... grouping ads by...') and enumerates grouping and metric options. It clearly communicates what the tool does. However, it does not explicitly distinguish itself from `zuckerbot_created_cross_analysis`, similarly creative performance name the same resource family, so it doesn't fully earn the top cluster on 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 says 'Use this before generating new brief so inform the creative strategy.' This is clear contextual when-to-use instruction. However, it does not say when-to-use vs the sibling trools or explicitly exclude alternatives when they might be better fits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_creative_cross_analysisAInspect
Cross two creative dimensions to find winning combinations. Example: hook_type × visual_style can reveal that curiosity + ugc outperforms pain_point + stock. Returns a performance matrix, best and worst combinations, and an actionable insight string.
| Name | Required | Description | Default |
|---|---|---|---|
| cohort | No | Set to 'objective' to compute one matrix per campaign objective family instead of pooling every campaign together. | |
| metric | No | Metric to rank by. Defaults to cpl. | |
| date_to | No | Optional end date in YYYY-MM-DD | |
| cross_by | Yes | Secondary dimension to cross with | |
| group_by | Yes | Primary dimension | |
| date_from | No | Optional start date in YYYY-MM-DD | |
| min_spend | No | Optional minimum spend threshold per ad | |
| business_id | No | Optional business ID override | |
| objective_family | No | With cohort='objective', restrict results to one objective family. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does convey what the call produces (a performance matrix, best/worst combinations, and an actionable insight string), which is useful return-format context. It does not disclose the read-only nature, whether it requires prior creative-attribute data, or how the insight string is generated, leaving some ambiguity about data dependencies.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero filler: purpose, example, return format. The purpose is front-loaded, the example earns its place by clarifying the abstract 'cross' idea, and the returns sentence completes the agent's mental model. Efficient and well-ordered.
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 read-style analysis tool with 9 parameters, no output schema, and a relatively simple query intent, the description covers the essential contract: what it does, an illustrative usage, and what it returns. The main gaps are lack of explicit relation to cohort/objective_family advanced filter behavior and no statement about read-only safety, but the schema covers the filters and the tool complexity is low enough that this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and every one of the 9 parameters already has its own description, so the baseline is 3. The description reinforces that group_by and cross_by are the two dimensions being 'crossed' and that the combination order matters (hook_type × visual_style yields a cell like curiosity + ugc), but it adds no new parameter-level detail 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 states a specific verb ('cross') and resource ('two creative dimensions') with a clear goal ('find winning combinations'), and the hook_type × visual_style example makes the operation concrete. It distinguishes itself from the sibling zuckerbot_creative_analysis through the word 'cross' implying a two-dimensional comparison, though it never explicitly names the sibling or contrasts itself against it.
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 example implies the intended use — pairing two creative dimensions (e.g., hook_type × visual_style) to surface winning patterns before building creative. However, there is no explicit guidance on when to choose this tool over zuckerbot_creative_analysis, suggest_angles, or get_performance, and no 'when-not-to-use' or prerequisite context (such as needing uploaded creatives or business context).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_creative_qaAInspect
Score proposed creative variants against the business's historical top-performing patterns. Accepts raw creative specs (copy, headline, CTA, asset URLs, frame URLs for video) and returns a pattern-match score for each. Use this before producing expensive creative assets to pre-validate concepts against what has historically worked.
| Name | Required | Description | Default |
|---|---|---|---|
| creatives | Yes | Creative variants to score | |
| business_id | No | Optional business ID override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure. It states the tool returns a 'pattern-match score' and accepts raw specs, implying a read-only operation with no side effects. However, it does not explicitly confirm safety (e.g., no data modification) or address permissions, latency, or error scenarios. The description is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences clearly state purpose, input/output, and usage advice. No redundant or extraneous words, and critical information is front-loaded. 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 tool's simplicity (2 parameters, no nested objects, no output schema), the description covers purpose, inputs, output (pattern-match score), and usage timing. It is mostly complete for an agent to decide when and how to invoke it. Minor gaps include lack of detail on scoring methodology or data prerequisites, but these are not critical for 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%, with all parameters already well-documented. The description adds context by listing examples like 'copy, headline, CTA, asset URLs, frame URLs', but this largely echoes the schema. For a high-coverage schema, the baseline is 3, and the description does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Score proposed creative variants against the business's historical top-performing patterns', providing a specific verb (score) and resource (creative variants). It distinguishes from sibling tools like zuckerbot_suggest_angles (which suggests new angles) and zuckerbot_creative_analysis (which likely analyzes existing creatives).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises 'Use this before producing expensive creative assets to pre-validate concepts against what has historically worked', giving clear usage context and benefit. However, it does not explicitly mention when not to use it or provide alternative tools, which would warrant a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_delete_audienceAInspect
Permanently delete a stored audience from both Meta and ZuckerBot's local registry. This cannot be undone. Use when an audience is stale, was created in error, or you need to free up Meta audience slots.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | Stored audience row ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the permanent, irreversible nature and that deletion affects both Meta and local registry. It does not cover error cases or prerequisites, but is still informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. The first states action and scope, the second gives usage context. Every part is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple delete function with one parameter and no output schema, the description covers the core purpose, permanence, and use cases. It lacks mention of response or potential errors, but for a straightforward delete it is adequate.
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 further meaning beyond the schema's 'Stored audience row ID'. No additional parameter details are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it permanently deletes an audience from both Meta and local registry. It uses a specific verb and resource, distinguishing it from list, create, or refresh 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?
It explicitly mentions when to use: stale audience, creation error, or freeing up slots. While it does not explicitly state when not to use, the listed use cases are sufficient and imply alternatives (e.g., refresh).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_duplicate_adAInspect
Duplicate ONE supported ad into an existing ad set in the SAME ad account. Dry-run by default: it returns the exact object plan (1 new creative + 1 new ad) without creating anything; pass execute: true plus an idempotency_key to perform it. The duplicated ad is ALWAYS created PAUSED — activating it is a separate deliberate action. Supported source shapes: static single-image creatives with an accessible image hash, and single pre-uploaded video creatives. Carousel, dynamic/catalogue, existing-post and multi-asset creatives are rejected with the unsupported feature named. A new creative is always built — creative IDs are never reused. To introduce a brand-NEW image or video file instead of reusing an existing ad's asset, use zuckerbot_upload_ad_asset + zuckerbot_create_ad.
| Name | Required | Description | Default |
|---|---|---|---|
| cta | No | Override: uppercase Meta CTA type, e.g. LEARN_MORE or SIGN_UP | |
| name | No | Override: name for the new ad (default: '<source name> (copy)') | |
| execute | No | Default false (dry-run). Set true to actually create the PAUSED duplicate — requires idempotency_key | |
| headline | No | Override: headline | |
| final_url | No | Override: destination URL (http/https) | |
| business_id | No | Optional business ID override for the authenticated API key | |
| description | No | Override: description | |
| primary_text | No | Override: primary text / body copy | |
| source_ad_id | Yes | Numeric Meta ad id to duplicate (must be in the connected ad account) | |
| idempotency_key | No | Required when execute is true. Generate once per logical operation (UUIDv4 recommended); reuse the identical value only when retrying the identical request | |
| target_adset_id | Yes | Numeric Meta ad set id to create the duplicate in (must be an EXISTING ad set in the same ad account) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full behavioral burden, and it succeeds strongly. It discloses that the tool is dry-run by default, that execute:true actually creates the ad, that the created ad is ALWAYS paused, that a new creative is always built, and that unsupported creative types are rejected with the unsupported feature named.
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 dense but every sentence earns its place. It front-loads the main action, then steps through execution behavior, safety-relevant paused state, source-shape constraints, and finally a named sibling alternative, all without unnecessary fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no annotations and no output schema, the description is remarkably complete: it covers the return shape, success path, failure modes for unsupported creatives, idempotency, cross-account restriction, and post-creation behavior. There is no obvious gap that would leave an agent guessing on how to invoke 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?
The input schema already covers 100% of parameters, which sets a baseline of 3. The description adds meaningful context beyond the schema by specifying supported source shapes for the source_ad_id, explaining that creative IDs are never reused, and tying execute/idempotency_key together as a paired behavior.
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 opens with a specific verb and resource: "Duplicate ONE supported ad into an existing ad set in the SAME ad account." It distinguishes itself from siblings by explicitly contrasting with zuckerbot_create_ad and zuckerbot_upload_ad_asset. The supported-source limitations further clarify exactly what this tool operates on.
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 tool makes clear when to use it and when not to: it is for duplicating existing ads, while zuckerbot_upload_ad_asset + zuckerbot_create_ad is the named alternative for introducing brand-new assets. The dry-run vs. execute path and the required idempotency_key usage are also explicitly described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_enrich_businessAInspect
Crawl a business website and extract structured intelligence used by campaign planning: company description, services, pricing signals, testimonials, location data, and brand tone. Run this before creating a campaign when the business has not been enriched yet, or use force_refresh after a website update to refresh stale context.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Optional website URL override. Uses the stored business website when omitted. | |
| business_id | No | Optional business ID override | |
| force_refresh | No | Re-scrape even when cached context exists |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses the crawling and extraction behavior and the force_refresh option, but lacks details on potential failures, side effects (e.g., data modification), or output format. Adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences effectively convey core purpose and usage guidance with no redundant words, making it easy for an agent to parse.
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 the main purpose and usage but lacks details on return value structure, error handling, or prerequisites (e.g., needing a stored business). Given no output schema, the description should provide more context for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and schema descriptions already explain parameters well. The description adds context for force_refresh usage but doesn't significantly extend beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('crawl and extract') and the resource ('business website') with detailed output examples (company description, services, etc.), clearly distinguishing it from sibling tools like research_reviews or research_competitors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear guidance on when to use the tool ('before creating a campaign when the business has not been enriched') and when to use force_refresh, but does not explicitly mention when not to use it or list alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_export_leadsAInspect
Export lead submissions from a Meta instant form (lead form) for a date range: each lead's id, created_time and submitted field values. Returns BARE numeric lead ids — Meta's own CSV export prefixes ids with 'l:', which is a CSV artifact, not part of the id; strip it when cross-referencing CSV exports against this tool. Dates are YYYY-MM-DD, UTC, inclusive. Requires the connected Meta token to hold the leads_retrieval permission — if it is missing the error says exactly that; reconnect Meta to grant it. Large ranges are capped (2000 leads / 20 pages / 60s) and flagged truncated: true — narrow the date range and re-call for the remainder. Find form ids with zuckerbot_lead_forms.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | End date, YYYY-MM-DD (UTC, inclusive) | |
| form_id | Yes | The Meta instant form (lead form) id — list them with zuckerbot_lead_forms | |
| date_from | Yes | Start date, YYYY-MM-DD (UTC, inclusive) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries the full burden of behavioral disclosure, and it does so exceptionally. It documents the bare-id semantics versus Meta's CSV 'l:' prefix, UTC and inclusive date semantics, the exact permission requirement, the error behavior when permission is missing, and the truncation/cap behavior. Nothing in the description conflicts with the structured information.
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 core purpose and each subsequent sentence earns its place by addressing a specific operational concern. It is dense and information-rich without becoming bloated or 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 there is no output schema, the description provides the minimum necessary return expectations, date handling, permission requirements, CSV-ID caveat, and pagination/truncation behavior. It also routes the agent to the correct sibling for metadata, making this roughly complete for correct invocation and interpretation.
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 already documents all three parameters, so the baseline is 3. The description adds meaning by clarifying that dates are inclusive and by telling the agent where to obtain form_id values. This is genuinely useful, but the schema still carries most of the parameter-level burden.
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?
States a specific verb-resource operation ('Export lead submissions from a Meta instant form') with date range and an explicit list of returned fields (id, created_time, submitted field values). It is clearly distinguishable from the sibling list tools, especially by pointing the caller to zuckerbot_lead_forms for finding form ids.
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 tells the agent when the tool is appropriate, how to obtain the required form_id, and what to do when results are truncated: narrow the date range and re-call. It also names the permission prerequisite, so the agent can route errors to the correct remediation without guessing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_generate_briefsAInspect
Generate creative production briefs based on the business's tagged ad-performance patterns. Each brief specifies hook type, visual style, copy tone, CTA, and script guidance weighted toward the top-performing creative attributes. Use after running zuckerbot_creative_analysis to know which patterns to bias toward.
| Name | Required | Description | Default |
|---|---|---|---|
| bias | No | Optional generation bias, for example performance or exploration | |
| count | No | How many briefs to generate. Defaults to 5. | |
| metric | No | Optional ranking metric. Defaults to cpl. | |
| business_id | No | Optional business ID override | |
| font_preset | No | Optional font preset override | |
| target_market | No | Optional target market override, for example AU or US | |
| exclude_angles | No | Optional angles or product focuses to avoid |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It reveals that briefs are 'weighted toward the top-performing creative attributes,' which is a key behavioral trait. It does not mention destructive actions, auth needs, or rate limits, but as a generation tool it is likely non-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?
Two concise sentences: first defines the tool's purpose and output components, second provides usage guidance. No redundant or extraneous text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and the generative nature, the description is complete. It explains what the generated briefs contain (hook type, etc.) and the weighting logic. It also references the prerequisite tool for proper usage.
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% (all 7 parameters have descriptions). The description adds value by explaining how parameters like 'bias' and 'metric' influence the weighting toward top performers, beyond the schema's basic 'Optional generation bias' etc.
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 'Generate creative production briefs based on the business's tagged ad-performance patterns' and specifies the components of each brief (hook type, visual style, etc.). It distinguishes itself from sibling tools like zuckerbot_generate_campaign_brief by focusing on creative production and requiring prior analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use after running zuckerbot_creative_analysis to know which patterns to bias toward,' providing a clear precondition. It does not mention when not to use or alternatives explicitly, but the context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_generate_campaign_briefAInspect
Generate a detailed creative brief from an approved campaign structure. SAFE — pure function, no Meta API calls, no money spent. Automatically pulls brand context and historical creative patterns (or uses brand context alone for cold-start accounts). Returns per-slot creative directions: for static ads, specific ad template + headline/body/CTA + hero image prompt; for video ads, hook concept + voiceover direction + visual style. After brief is generated, present it to the customer, then call zuckerbot_generate_static_ad / zuckerbot_generate_video_ad for each slot.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | No | Architect session ID from zuckerbot_recommend_campaign_structure | |
| business_id | No | Business ID (auto-resolved from API key if omitted) | |
| approved_structure | No | JSON string of approved campaign structure (if no session_id) | |
| additional_creative_direction | No | Optional extra direction from the customer (e.g., 'lean into fear of missing calls') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully assumes responsibility. It discloses safety (non-destructive, read-only), notes automatic data pulls (brand context, historical patterns), and explains cold-start behavior. Transparent about internal workings.
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, front-loaded with purpose, safety, and workflow. Every sentence adds distinct value: purpose, safety, input sourcing, output details, next steps. 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?
Complete for a generation tool with no output schema: describes return format (per-slot directions, static/video details) and includes workflow context (present to customer, call ad generation tools). 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 coverage is 100% with good descriptions, but the tool description adds value by explaining parameter relationships (session_id vs approved_structure, auto-resolution of business_id) and intent of additional_creative_direction, going beyond raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool generates a detailed creative brief from an approved campaign structure, specifies inputs and outputs (per-slot creative directions), and distinguishes from sibling tools by naming subsequent steps (zuckerbot_generate_static_ad / zuckerbot_generate_video_ad).
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 declares safety ('SAFE — pure function, no Meta API calls'), clarifies when to use (after campaign structure approval), and provides workflow guidance ('present to customer, then call...'). Lacks explicit 'when not to use' but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_account_insightsAInspect
Fetch historical Meta ad account performance for a connected business over a date range. Returns spend, clicks, impressions, CTR, CPM, CPC, and frequency aggregated daily or monthly. AUTO-PAGINATES the full requested range; the response includes row_count, covered {date_from, date_to} (the range actually returned) and truncated — truncated=true means the fetch stopped early: narrow the date range and re-request rather than trusting totals. Note zero-delivery days are legitimately absent from data, so also compare covered against the range you asked for. Useful for top-level budget reporting and month-over-month trend analysis without opening Ads Manager.
| Name | Required | Description | Default |
|---|---|---|---|
| date_to | Yes | End date in YYYY-MM-DD format | |
| date_from | Yes | Start date in YYYY-MM-DD format | |
| business_id | No | Optional business ID override linked to the connected Meta ad account | |
| time_increment | No | Whether to break the results down daily or monthly | monthly |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses key behaviors: auto-pagination, truncation with a truncated flag, and the effect on data coverage. It also warns that zero-delivery days are legitimately absent and advises comparing the covered range with the requested range.
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 the core purpose first, followed by details and caveats. It is slightly lengthy but every sentence adds value (e.g., truncated behavior, zero-delivery days). 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?
Despite lacking an output schema, the description lists return metrics, response fields (row_count, covered, truncated), and handles edge cases (truncation, missing zero-delivery days). This is comprehensive for a read-only data fetch 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 the baseline is 3. The description confirms the date range and time_increment usage but adds no new semantics beyond what the schema already provides. It mentions auto-pagination but does not add parameter-specific 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 specifies the exact action (fetch historical Meta ad account performance), the resource (connected business over a date range), and the specific metrics returned (spend, clicks, impressions, CTR, CPM, CPC, frequency). It clearly distinguishes from sibling tools like zuckerbot_get_campaign_insights by focusing on account-level performance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the tool is 'useful for top-level budget reporting and month-over-month trend analysis without opening Ads Manager.' While it doesn't explicitly say when not to use or name alternatives, the context implies it's for aggregate account data vs. campaign-specific tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_ad_asset_statusAInspect
Check Meta's processing status for a video uploaded with zuckerbot_upload_ad_asset. Returns ready=true (with a derived thumbnail_url) once the video can be used in zuckerbot_create_ad or a from-spec VIDEO ref. Poll every 15–30 seconds while ready=false.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | Meta video id returned by zuckerbot_upload_ad_asset | |
| business_id | No | Optional business ID override for the authenticated API key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It transparently explains that ready=true must be observed before proceeding, that a derived thumbnail_url accompanies it, and that polling is the expected pattern. It does not disclose failure states or how processing errors surface, but the core polling behavior is well covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three tight sentences with no filler. It front-loads the status-check purpose, then presents the ready semantics and polling cadence, with every sentence earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of an output schema, the description sufficiently explains the return signal (ready=true), the derived thumbnail_url, and the down-stream VIDEO ref usage. It stops short of covering processing-failure states or what to do if the status never becomes ready, so it is not fully exhaustive, but it is complete enough for normal 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?
Schema coverage is 100%, so the parameters are already fully documented in the input schema. The description adds the useful context that video_id comes from zuckerbot_upload_ad_asset, but it does not otherwise deepen meaning beyond the schema's own 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 opens with a specific verb and resource: 'Check Meta's processing status for a video uploaded with zuckerbot_upload_ad_asset.' It clearly identifies the tool as a status-checking endpoint and distinguishes it from uploading, creation, and generic creative-status tools by tying it to the ad-asset upload flow.
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 gives a clear execution context: call it after uploading an ad asset and before using the video in zuckerbot_create_ad or a from-spec VIDEO ref. It also gives explicit polling guidance (every 15–30 seconds while ready=false), though it does not explicitly state when not to use it or name alternative status tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_audience_statusAInspect
Fetch the current Meta delivery status, size, and readiness for a stored audience. Updates the local audience registry row. Use this to check if an audience is large enough to use in a campaign before launch.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | Stored audience row ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses the side effect: 'Updates the local audience registry row'. Without annotations, the description carries the full burden, and this is a key behavioral trait. It also implies it's a read operation with a minor write, which 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?
Two sentences, no fluff, front-loaded with purpose and usage. 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?
For a simple tool with one parameter and no output schema, the description covers the action (fetch with side effect), the specific data fetched (delivery status, size, readiness), and the use case (pre-launch check). It is complete for an agent's needs.
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 already covers 'Stored audience row ID' for the single parameter. The description adds no new meaning beyond what the schema provides, 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 it fetches Meta delivery status, size, and readiness for a stored audience, with a specific verb and resource. It distinguishes from sibling tools like 'delete_audience' and 'refresh_audience' by focusing on checking status for campaign readiness.
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 use this tool to 'check if an audience is large enough to use in a campaign before launch'. While it doesn't mention alternatives or when not to use, this provides clear context for when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_campaignAInspect
Fetch the full details of a ZuckerBot campaign by ID: intelligence workflow state, approved strategy, stored creatives, audience tier executions, and performance status. Use this to inspect a campaign at any stage of the lifecycle.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ZuckerBot campaign ID |
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 clearly implies a read-only operation by saying 'fetch', but does not explicitly confirm non-destructiveness, mention rate limits, or describe behavior on missing IDs. The listed return fields help but leave behavioral aspects partially uncovered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler: the first packs the core functionality with specific details, the second gives usage guidance. Every sentence adds value; the description is optimally 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?
For a single-parameter, no-output-schema tool, the description is fairly complete. It lists the kinds of details returned, asserts lifecycle-stage flexibility, and differentiates from siblings. It lacks error-handling info, but the simplicity mitigates that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds that the ID is used 'by ID' and lists the return fields, but does not provide additional meaning or format beyond what the schema already states ('ZuckerBot campaign ID').
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('fetch') and resource ('full details of a ZuckerBot campaign by ID'), lists concrete components (intelligence workflow state, approved strategy, etc.), and clearly distinguishes it from sibling tools like get_campaign_insights or get_performance which serve narrower purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states to use this tool 'to inspect a campaign at any stage of the lifecycle', providing clear positive guidance. However, it does not explicitly mention when not to use it or point to alternatives, missing an opportunity for full differentiation among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_campaign_insightsAInspect
Query campaign, ad set, or ad-level performance for any campaign in the connected Meta ad account — including campaigns not created by ZuckerBot. Tags each row with is_zuckerbot so you can benchmark ZuckerBot campaigns against manually managed ones. Supports date range filtering, campaign name search, status filters, time-series breakdowns, and multi-column sorting. For deduped truth use meta_result / cost_per_meta_result (Meta's Ads Manager "Results" for any objective) or conversion_leads / meta_leads — not the inflated, deprecated leads / cpl (the response's metric_semantics object labels every lead field). meta_result and conversion_leads are most reliable on campaign-level, non-time-incremented queries. Adset/ad rows report their OWN status — status_scope says which entity a row's status belongs to, statuses are as of status_synced_at, and refresh=true re-syncs them; spend-by-date is authoritative for whether delivery actually happened.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Optional sort field. Plain values sort descending; prefix with '+' for ascending. One of: spend, leads, cpl, meta_leads, conversion_leads, cpcl, meta_result, cpmr, results, cpr, ctr, impressions. Prefer meta_result / cpmr (Meta's deduped 'Results' for any objective) or conversion_leads / meta_leads over the deprecated, inflated leads / cpl. | |
| level | No | Return campaign totals, ad set breakdowns, or ad breakdowns | |
| limit | No | Maximum campaigns to return after sorting | |
| search | No | Optional case-insensitive campaign name substring filter | |
| status | No | Optional status filter. Use active, paused, or all for the simple path, or pass legacy comma-separated values such as ACTIVE,PAUSED. | |
| date_to | No | Optional end date in YYYY-MM-DD format. Defaults to today. | |
| refresh | No | Bypass the short-lived performance cache | |
| date_from | No | Optional start date in YYYY-MM-DD format. Defaults to 7 days ago. | |
| business_id | No | Optional business ID override linked to the connected Meta ad account | |
| campaign_ids | No | Optional comma-separated Meta campaign IDs | |
| time_increment | No | Optional daily or monthly time-series breakdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that rows are tagged with is_zuckerbot for benchmarking, explains status_scope and status_synced_at, notes that spend-by-date is authoritative for delivery, and mentions cache bypass via refresh. It does not explicitly state it is read-only, but the query nature is clear. Minor omission of explicit non-destructive statement prevents 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 lengthy but well-structured, front-loading the core purpose and then layering details. Every sentence provides useful guidance (metric preferences, status handling, benchmarking). It could be slightly more concise by grouping related details, but the density is justified by 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 11 parameters, no output schema, and no annotations, the description covers the main aspects: purpose, filtering, sorting, metrics reliability, status interpretation, and cache behavior. It does not mention error scenarios or rate limits, but for a read-only query tool this is acceptable. The thorough metric guidance and benchmarking feature make it quite 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% with descriptions for all 11 parameters. The description adds significant value beyond schema by explaining preferred sort values (meta_result, conversion_leads), clarifying deprecated metrics (leads/cpl), detailing status filter behavior (simple vs legacy), and describing refresh, time_increment, and status semantics. This goes well beyond baseline 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 queries campaign, ad set, or ad-level performance for any campaign in the connected Meta ad account. It specifies the resource (campaign/adset/ad-level performance) and action (query), and distinguishes from sibling tools by noting it includes campaigns not created by ZuckerBot and provides benchmarking via is_zuckerbot tag.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (for performance queries) and includes detailed guidance on metric selection (prefer meta_result over deprecated leads) and reliability conditions (campaign-level, non-time-incremented). However, it does not explicitly contrast with sibling tools like zuckerbot_get_account_insights or zuckerbot_get_campaign, which would strengthen when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_capi_configAInspect
Fetch the current Conversions API configuration for a business: whether CAPI delivery is enabled, CRM source, currency, stage-to-event mappings, action source, and webhook URL. Use this before configuring CAPI to see what is already set, or to audit the current event mapping. The webhook secret is write-only: reads return webhook_secret_set and webhook_secret_last4, never the full value — use zuckerbot_rotate_webhook_secret to mint a new one.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | No | Optional business ID override for the authenticated API key |
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 for behavioral disclosure. It discloses a critical constraint: the webhook secret is write-only, with reads only returning set and last4 fields. However, it could mention any required permissions or authentication context, but given the tool is read-only, the transparency is good but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences front-loaded with purpose, followed by usage guidance, then a behavioral note. Every sentence adds value and there is no fluff. It is well-structured for quick comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple read with one optional parameter and no output schema, the description lists all returned fields (CAPI delivery, CRM source, currency, mappings, action source, webhook URL) and covers the important behavioral constraint on the secret. It is complete for an AI agent to understand what it does and what to expect.
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 optional parameter 'business_id' is fully described in the input schema with a clear description. The description adds no additional meaning beyond the schema, and schema coverage is 100%, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it fetches the Conversions API configuration for a business and lists specific fields: CAPI delivery, CRM source, currency, stage-to-event mappings, action source, and webhook URL. It distinguishes from sibling tools like set_capi_config and rotate_webhook_secret by emphasizing its read-only nature and the write-only secret behavior.
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 on when to use: 'Use this before configuring CAPI to see what is already set, or to audit the current event mapping.' Also specifies when not to rely on it for the full webhook secret and points to the sibling tool zuckerbot_rotate_webhook_secret as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_creative_attributesAInspect
Read the stored creative attribute tags for up to 50 Meta ads in the canonical creative_attributes.v1 shape: the 17 extracted attributes (hook type, visual style, CTA type, copy tone, booleans and more), the extraction lifecycle (tag_status, error class, attempt metadata, legacy_row flag), taxonomy/prompt/model versions, asset/input fingerprints and the campaign objective family. A pure read of already-stored rows — it never triggers extraction and never spends anything. Use after zuckerbot_audit_account reports creative analysis complete, or before zuckerbot_creative_analysis to inspect individual ads.
| Name | Required | Description | Default |
|---|---|---|---|
| ad_ids | Yes | Meta ad ids to read (max 50 per request) | |
| business_id | No | Optional business ID override for the authenticated API key | |
| include_raw | No | Include the raw legacy fields (model_used, confidence_score, tag_error, tagged_by) per item |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even with no annotations provided, this description carries the full behavioral load: it discloses the read-only nature, confirms no extraction is triggered, confirms no spending occurs, and details included lifecycle fields such as tag_status, error_class, attempt metadata, and version/fingerprint information. That gives the agent an accurate mental model of what will happen.
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 packed with useful information but remains organized and front-loaded with the core 'read' action and resource. The three long sentences are dense, yet every clause adds context about shape, lifecycle, read-only behavior, or intended usage. It is borderline long but not bloated given the lack of an output schema.
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 compensates for the missing output schema by enumerating the returned shape: 17 extracted attributes, lifecycle, versions, fingerprints, and objective family. It also provides the correct temporal context relative to sibling tools. The main gap is unspecified behavior for invalid or missing ad IDs, but all core retrieval aspects are covered.
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 each parameter already has a meaningful description. The natural-language description adds context such as the 'up to' limit and the canonical data shape, but it does not materially extend the schema's parameter-level explanations. A baseline of 2 is therefore appropriate: the schema handles the load.
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 begins with a specific verb and resource: 'Read the stored creative attribute tags' in the 'canonical creative_attributes.v1 shape'. It clearly distinguishes this from sibling analysis tools by emphasizing that it only reads already-stored rows rather than running analysis or extraction.
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 gives explicit sequencing: use after zuckerbot_audit_account reports creative analysis complete, or before zuckerbot_creative_analysis to inspect individual ads. It also signals the safety aspect, 'never triggers extraction and never spends anything,' which tells the agent when low-cost inspection is appropriate. It does not enumerate all exclusions, but the contextual guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_creative_statusAInspect
Check the asynchronous upload queue for an intelligence campaign to see if Meta ad-creation jobs are complete. Poll this after zuckerbot_upload_creative when the initial response shows creative_status='uploading'. Returns all_complete=true when every queued job has finished for review; intelligence activation is temporarily disabled.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Intelligence campaign ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the poll returns all_complete=true when jobs finish and notes intelligence activation is temporarily disabled. However, it doesn't mention rate limits or other edge cases.
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 (two sentences) and front-loaded with purpose, then usage guidance. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple polling tool with 1 param and no output schema, the description covers purpose, usage, return value, and a state note. It feels complete given the 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?
Schema coverage is 100% with campaign_id described as 'Intelligence campaign ID'. The description adds no extra meaning beyond this.
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 checks the async upload queue for a campaign to see if Meta ad-creation jobs are complete. It uses specific verb 'check' and resource 'queue', and distinguishes itself from siblings like zuckerbot_upload_creative and zuckerbot_get_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to poll this after zuckerbot_upload_creative when creative_status='uploading', providing clear when-to-use context and an alternative (the upload tool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_custom_conversionAInspect
Read one custom conversion in full: rule, source event (event_source_id/event_source_type), category (custom_event_type), default conversion value, availability (is_unavailable) and creation time, plus mutable_fields — the only fields Meta permits updating (name, description, default_conversion_value; rule/category/source are immutable). Optionally include stats via include_stats with an explicit bounded window (default: last 30 days, capped at 90). A pure read of the already-bound ad account — it never binds or consumes an ad-account slot.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | No | Optional business ID override for the authenticated API key | |
| stats_since | No | Stats window start, YYYY-MM-DD (UTC, inclusive). Defaults to 30 days before stats_until. | |
| stats_until | No | Stats window end, YYYY-MM-DD (UTC, inclusive). Defaults to today. | |
| conversion_id | Yes | Numeric Meta custom conversion id — list them with zuckerbot_list_custom_conversions | |
| include_stats | No | Set true to include conversion stats for a bounded window (default: last 30 days) | |
| stats_aggregation | No | Stats aggregation: count (default), device_type, host, pixel_fire, unmatched_count, unmatched_usd_amount, url or usd_amount |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of safety and side-effect disclosure. It adds meaningful context: this is a pure read of an already-bound ad engine, never binds or consumes a slot, and stats requests are capped at 90 days by default 30. This tells the agent things it would not otherwise know about the tool's behavior and limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place: the first defines scope and output fields, the second defines optional stats parameters, the third clarifies side-effect behavior. There is no redundant language and the key limitation (read-only, no slot consumption) 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?
There is no output schema, so the description must explain what gets returned — it virtually lists the fields. It also covers interesting behavior, optional stats, defaults, and the clean-read side effect. Given 6 parameters (5 optional, 1 required) and a simple no-nested object shape, everything an agent needs to make a correct call 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 description coverage is 100%, so the baseline is 3. The description goes further by clarifying that include_stats expects an explicit bounded window, that the default window is last 30 days and is capped at 90, and by giving the fields returned. This meaningfully supplements, though schema already owns most per-parameter 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 opens with 'Read one custom conversion in full' — a specific verb plus resource telling the agent exactly what the tool does. It enumerates the returned fields and distinguishes this from listing by saying 'one custom conversion,' so it can be differentiated from zuckerbot_list_custom_conversions and zuckerbot_create_custom_conversion without inspecting schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames the tool as an individual-read operation with optional stats, which is a strong usage signal. It is not explicit about when NOT to use it or naming an alternative for bulk listing, though the conversion_id schema hint points to zuckerbot_list_custom_conversions; making it slightly shy of explicit route-selection guidance. Overall, context is clear but exclusions are implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_launch_credentialsAInspect
Resolve and validate all stored Meta launch credentials for the authenticated user: access token, ad account, page, and pixel. Reports whether autonomous launch (no credential params needed at launch time) is possible. Call this after completing the setup sequence to confirm everything is ready before launching a campaign.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 describes the read-only validation behavior and its position in the workflow. It does not disclose auth requirements or side effects, but for a validation tool this is sufficient and accurate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with the core action and followed by usage context. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and no output schema, the description explains the purpose and when to call. It could optionally describe the output format, but it's not critical 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?
The input schema has zero parameters, so schema coverage is 100%. The description adds no parameter info, which is acceptable since none exist. Baseline for 0 params is 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 it resolves and validates Meta launch credentials (access token, ad account, page, pixel) and reports readiness for autonomous launch. It differentiates from sibling tools like zuckerbot_launch_campaign by specifying it should be called after setup before launching.
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 after completing the setup sequence and before launching a campaign. Provides clear context but does not mention when not to use or list alternatives, though sibling tools like zuckerbot_create_campaign provide context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_lead_formAInspect
Read one Meta lead form (Instant Form) in full: questions, privacy policy URL and legal content (disclaimer), locale, context card, thank-you page, follow-up action URL, status, created time and lead counts. A pure read — it never changes or persists the selected form. The form must belong to the selected Facebook Page. Find form ids with zuckerbot_lead_forms.
| Name | Required | Description | Default |
|---|---|---|---|
| form_id | Yes | Numeric Meta lead form (Instant Form) id — list them with zuckerbot_lead_forms |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on the full burden of safety disclosure and does so explicitly: 'A pure read — it never changes or persists the selected form.' This is precisely the behavioral property an agent needs before invoking a tool. It also discloses the Page-ownership constraint that explains likely validation failures. Details like auth requirements or not-found error behavior are absent but secondary for a one-parameter read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero waste. The verb and resource are front-loaded, the return payload is listed compactly, the read-safety property is disclosed in one short sentence, and the sibling routing plus precondition close it out. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a single parameter, one required field, and no output schema, coverage is solid: the description states purpose, enumerates the payload (partially substituting for an output schema), declares the safety profile, and defines the sourcing of the ID. An explicit note on the form_id error behavior (e.g., missing id or mismatch with the selected Page) would raise this to fully complete, but nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the form_id parameter description already includes the key lookup instruction, so the schema does most of the work. The description adds value beyond the schema by stating the Page-ownership validation rule and by listing the concrete fields the ID's read will resolve, which contextualizes the parameter's 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 opens with a specific verb-resource pair, 'Read one Meta lead form (Instant Form) in full', and then enumerates exactly what the read returns (questions, privacy policy URL, legal content, locale, context card, thank-you page, follow-up action URL, status, created time, lead counts). This unambiguously distinguishes it from sibling zuckerbot_lead_forms (the listing counterpart) without needing to open any schema.
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 routing ('Find form ids with zuckerbot_lead_forms') and a concrete precondition ('The form must belong to the selected Facebook Page'). It does not explicitly name exclusions like zuckerbot_export_leads when lead data is what's needed, but the enumerated field list implies that distinction strongly enough for an agent to route correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_performanceAInspect
Fetch real-time performance metrics for a ZuckerBot campaign. Legacy campaigns return a flat metrics summary (impressions, clicks, leads, spend, CPL, CTR). Intelligence campaigns additionally return tier-by-tier and ad-by-ad Meta insights, daily breakdowns, CAPI attribution totals, and AI-recommended next actions. Use this to monitor an active campaign or to diagnose underperformance.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | ZuckerBot campaign ID |
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 details the output structure for legacy vs Intelligence campaigns but does not explicitly state that the operation is read-only or safe. It implies non-destructive behavior by describing metrics retrieval, but lacks explicit safety 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 two sentences, front-loaded with the core purpose and immediately followed by concrete detail on output differentiation. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given only one parameter and no output schema, the description fully covers the expected behavior: it explains what metrics are returned for both legacy and Intelligence campaigns, including AI recommendations. The use case is explicitly stated, making it complete for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter is campaign_id, which the schema already describes as 'ZuckerBot campaign ID.' The description does not add extra meaning or format details beyond what the schema provides. With 100% schema coverage, baseline is 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 it fetches real-time performance metrics for a ZuckerBot campaign, distinguishing between legacy and Intelligence campaigns with specific metrics listed. It also provides a use case ('monitor an active campaign or diagnose underperformance'). This differentiates it from siblings like zuckerbot_get_campaign or zuckerbot_get_campaign_insights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this to monitor an active campaign or to diagnose underperformance,' giving clear guidance on when to use it. It doesn't directly state when not to use it or mention alternatives, but the context is sufficient for appropriate selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_get_portfolioAInspect
Fetch the configuration and current performance snapshot for an audience portfolio by ID. Returns tier definitions, budget allocations, CPA targets, and any existing performance data. Use this to inspect a portfolio for planning, monitoring, or rebalancing an already-active portfolio.
| Name | Required | Description | Default |
|---|---|---|---|
| portfolio_id | Yes | Audience portfolio ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description implies a read-only operation by stating 'Fetch' and listing return data. It does not explicitly state non-destructive nature but is sufficient for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first defines purpose and return data, second provides usage guidance. Front-loaded and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains return fields (tiers, budgets, CPA targets, performance) and usage scenario. Lacks specification on portfolio status constraints but is adequate for a simple read tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'portfolio_id' is fully described in the schema (100% coverage). The description adds 'by ID' and usage context but no additional semantic details 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 fetches configuration and performance data for a portfolio by ID. It identifies the resource (audience portfolio) and action (fetch), but does not explicitly differentiate from sibling portfolio tools like update_portfolio or rebalance_portfolio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: use for planning, monitoring, or rebalancing an already-active portfolio. However, it does not mention when not to use it or list alternative tools for similar purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_launch_campaignAInspect
Launch a draft campaign on Meta (Facebook/Instagram). THIS IS THE MONEY ENDPOINT — it creates real ads on the user's Meta ad account and immediately begins spending their budget. Stored Meta credentials are auto-resolved when available. Set launch_all_variants=true to launch every creative variant as separate ads for A/B testing (Meta auto-optimizes for the winner). Always confirm the user has budget available and Meta is connected (zuckerbot_meta_status) before calling.
| Name | Required | Description | Default |
|---|---|---|---|
| radius_km | No | Override targeting radius in km | |
| campaign_id | Yes | ZuckerBot campaign ID from the create step | |
| meta_page_id | No | Facebook Page ID. Optional if Facebook is connected on zuckerbot.ai | |
| variant_index | No | Which creative variant to launch (0-indexed) | |
| meta_access_token | No | User's Meta/Facebook access token. Optional if Facebook is connected on zuckerbot.ai | |
| daily_budget_cents | No | Override daily budget in cents | |
| meta_ad_account_id | No | Meta ad account ID (format: act_XXXXX). Optional if Facebook is connected on zuckerbot.ai | |
| launch_all_variants | No | Launch all creative variants as separate ads for A/B testing. Meta will auto-optimize for the winner. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses it's 'the money endpoint' that creates real ads and immediately starts spending. Explains auto-resolution of credentials and behavior of launch_all_variants. With no annotations, it carries full burden; missing details on idempotency or effects of re-launching, but the critical financial impact is clearly highlighted.
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 at 6 sentences, front-loaded with purpose and money warning. No unnecessary details. Well-structured and easy to parse.
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 prerequisites, key parameter explanations, and warning. Lacks return value description (e.g., status or campaign ID), error conditions, and handling of non-draft campaigns. With no output schema or annotations, more context would be helpful for a high-stakes 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% (all parameters described). Description adds value by noting auto-resolution for meta_page_id, meta_access_token, and meta_ad_account_id, and explaining launch_all_variants behavior. Provides guidance beyond schema for key optional parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states verb 'Launch' and resource 'draft campaign on Meta (Facebook/Instagram)'. Emphasizes it creates real ads and spends budget, distinguishing it from other campaign tools like zuckerbot_create_campaign (draft creation) and zuckerbot_activate_campaign (activation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to check budget availability and Meta connection via zuckerbot_meta_status before calling. Mentions use of launch_all_variants for A/B testing. Does not explicitly list when not to use (e.g., if campaign already live), but context implies it's for drafts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_launch_portfolioAInspect
Not currently available. Portfolio planning and monitoring remain available, but new multi-tier launches do not create Meta objects. Create a legacy-mode draft and use zuckerbot_launch_campaign for the supported live path.
| Name | Required | Description | Default |
|---|---|---|---|
| meta_page_id | No | Optional Facebook Page ID override | |
| portfolio_id | Yes | Audience portfolio ID to launch | |
| meta_access_token | No | Optional Meta/Facebook access token override | |
| meta_ad_account_id | No | Optional Meta ad account ID override (format: act_XXXXX) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description is responsible for behavioral disclosure. It honestly states the tool is unavailable and will not create Meta objects, which prevents an agent from assuming side effects. It does not explicitly describe failure modes, but the unavailability warning 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 critical status 'Not currently available' is front-loaded, and the alternative guidance is delivered in two tight sentences with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that is unavailable, this is complete: it tells the agent not to call it, gives the alternative, and mentions legacy-mode drafting. The only small gap is that 'legacy-mode draft' is not further described, but the referenced launch_campaign path covers the action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds no parameter-level detail, which is acceptable here because the tool is unavailable and existing parameter descriptions suffice.
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 says 'Not currently available' and that new multi-tier launches do not create Meta objects, but it never directly states what the tool is or was for. Its intended function is only implied by the tool name and schema.
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?
Explains exactly when not to use this tool and points to an explicit alternative: 'use zuckerbot_launch_campaign for the supported live path.' Also notes that portfolio planning and monitoring remain available, helping the agent route to the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_lead_formsAInspect
List Meta lead forms (Instant Forms) available on the selected Facebook Page and show which is currently selected. Listing is a pure read scoped to the selected Page (page_scope: selected_page) and never changes the selection. If the list is truncated, re-call with the returned next_cursor as after. Optionally select a form by providing select_id to persist it for future lead generation campaign launches. Use this before launching a leads-objective campaign so ZuckerBot reuses the business's CRM-connected form rather than creating a new one.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Opaque pagination cursor from a previous truncated list response (next_cursor). Ignored when select_id is provided. | |
| select_id | No | If provided, selects this Meta lead form ID for future lead generation launches. If omitted, lists all available forms. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It explicitly states listing is a pure read scoped to the selected Page, never changes the selection unless select_id is provided, and explains pagination via next_cursor and the result persist side effect of select_id.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a well-structured, front-loaded set of sentences with no filler. Each sentence earns its place: the core read purpose, safety guarantee, pagination behavior, optional selection, and usage recommendation.
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 low-complexity tool with zero required params and no output schema, the description adequately covers purpose, side effects, pagination, and usage context, an agent all an agent needs to select and invoke 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?
The input schema already documents both parameters comprehensively, including after as a pagination cursor and select_id as an optional selection switch. The description mostly restates the schema's semantics with some context, but does not add meaning beyond what is already in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'List Meta lead forms (Instant Forms)... show which is currently selected.' It clearly distinguishes from sibling tools like get_lead_form by focusing on available forms on the selected Page, and also describes the optional selection capability.
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 recommends using this 'Let's find the lead form' before launching a leads-objective campaign to reuse the CRM-connected form. It provides clear context and motivation, though it does not explicitly name alternative tools or say when not to use them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_list_audiencesAInspect
List all stored Meta audiences for a business: seed audiences, lookalike audiences, sizes, delivery statuses, and CAPI source details. Use this to see what audiences are available before launching a campaign, or to find audience IDs for refresh and delete operations.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | No | Optional business ID override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. While 'list' implies a read operation, the description does not explicitly state it is non-destructive or read-only. A clear statement of safety would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences. The first states what the tool does, and the second provides usage context. No fluff or 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 only one optional parameter and no output schema, the description adequately covers what the tool returns (audiences, sizes, etc.) and when to use it. It would benefit from mentioning pagination or error conditions, but completeness is high for a list 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 for the single optional parameter (business_id). The description does not add additional context about the parameter beyond what the schema already provides, so baseline score 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 the tool lists 'all stored Meta audiences' and enumerates specific types (seed, lookalike, sizes, delivery statuses, CAPI source details). It uses a clear verb+resource structure and distinguishes from siblings like deletion or creation tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides two clear use cases: before launching a campaign and for finding IDs for refresh/delete operations. It does not explicitly state when not to use or mention alternatives, but the positive guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_list_business_contextAInspect
List all uploaded business-context files for a business along with their extracted summaries. Use this to confirm what planning documents are loaded before creating a campaign, or to check whether a previous upload was processed successfully.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | No | Optional business ID override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It does not mention that the tool is read-only, non-destructive, or that it does not modify state. Also missing details like pagination, sorting, or error behaviors. The agent must infer the read-only nature from the 'list' verb.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first defines the action and return, the second provides usage contexts. No extraneous information; every word contributes. Highly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose and return value (files with summaries), and provides practical usage examples. For a simple list tool with one optional parameter and no output schema, it is mostly complete. Minor gaps: no mention of error states or maximum results, but these are not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the 'business_id' parameter already described as 'Optional business ID override'. The tool description adds no additional semantics 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?
Clearly states the verb 'List', the resource 'uploaded business-context files', and the scope 'for a business'. The description also includes the extracted summaries, providing a complete picture. This differentiates it from sibling tools like zuckerbot_upload_business_context.
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 two specific use cases: confirming planning documents before creating a campaign and checking if a previous upload was processed successfully. This gives clear guidance on when to use the tool, though no explicit alternatives or when-not-to-use are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_list_custom_conversionsAInspect
List the custom conversions on the connected ad account: id, name, rule, source event, pixel and availability (is_unavailable). A pure read of the already-bound ad account — it never binds or consumes an ad-account slot. If the list is truncated, re-call with the returned next_cursor as after. Use this to find the custom conversion id a campaign spec's optimisation_event should reference.
| Name | Required | Description | Default |
|---|---|---|---|
| after | No | Opaque pagination cursor from a previous truncated list response (next_cursor) | |
| business_id | No | Optional business ID override for the authenticated API key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure and the author steps up: it says it is a pure read, states it never binds or consumes an ad-account slot, and explains the pagination cursor contract. This gives an agent enough information to reason about side effects and repeated 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?
Three sentences and each one earns its place: what is returned, side-effect and pagination behavior, and when to use the tool. The most differentiating information (it never binds an ad-account slot) appears early.
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?
There is no output schema, so the description compensates by listing the returned fields and mentioning next_cursor for pagination. It also provides the routing use case and the read-only safety guarantee, making the tool well-specified for an agent to select and invoke it confidently.
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 documentation coverage is 100%, so the schema already explains after and business_id. The description reinforces the pagination usage of after but does not add substantial new parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists custom conversions on the connected ad account and enumerates the exact fields returned (id, name, rule, source event, pixel, availability). The plural 'list' differentiates it from get_custom_conversion or create_custom_conversion without forcing an agent to infer from the name.
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 gives a concrete use case: find the custom conversion id a campaign spec's optimisation_event should reference. It also explains pagination behavior for truncated lists. However, it does not explicitly mention alternatives like get_custom_conversion from create_custom_conversion or what to do when you need a single specific conversion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_meta_pagesAInspect
List Facebook Pages available to the connected Meta account and show which is currently selected for ad delivery. Optionally select a page by providing select_id. The selected page is used as the ad identity for all future launches.
| Name | Required | Description | Default |
|---|---|---|---|
| select_id | No | If provided, selects this Facebook Page ID for future ad launches. If omitted, lists all available pages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the burden. It mentions that calling with select_id changes the selected page for future launches, implying a side effect. But it doesn't disclose potential issues like overwriting without confirmation or authorization requirements.
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 clear sentences that front-load the core purpose and optional behavior. Every word is useful and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers both usage cases and the persistence of selection. It could hint at output format but is otherwise 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?
The schema covers 100% of the parameter (select_id), and the description essentially repeats the schema explanation. It adds no new meaning beyond what the schema already provides, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists Facebook Pages and shows current selection, with optional selection by ID. This distinguishes it from sibling tools, which are mostly about campaign management, audience, 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 explains that the selected page is used for future launches, indicating this is a setup tool. However, it doesn't explicitly state when not to use it or mention prerequisites like having a connected Meta account, which is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_meta_statusAInspect
Check whether the user's Facebook/Meta account is connected to ZuckerBot. Returns connection status, connected ad accounts, and a connect URL if not yet linked. Always call this before attempting to launch a campaign to confirm Meta credentials are available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes return values (connection status, ad accounts, connect URL) but does not disclose side effects or confirm it's read-only. With no annotations, should be more explicit about 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?
Two compact sentences: one for purpose, one for usage guideline. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately covers return values and pre-launch context. Could mention error behavior or rate limits, but sufficient for a simple status check.
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 exist (schema coverage 100%), so description doesn't 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?
Description uses specific verb 'Check' and clearly identifies the resource: connection status of Facebook/Meta account. Distinguishes from siblings by focusing on a prerequisite check.
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 ('Always call this before attempting to launch a campaign'), providing clear context. Does not explicitly mention alternatives but the instruction is strong enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_pause_campaignAInspect
Pause delivery at any level: a whole campaign (default), one ad set, or one ad — set entity_level and pass the matching id. Pausing stops delivery and spend immediately while leaving the object in Meta, and the response reports the prior status. Use adset/ad level to stop an underperformer WITHOUT killing the winners in the same campaign. Resume is not currently available through ZuckerBot — paused objects are resumed from Meta Ads Manager.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | Pause the campaign | pause |
| entity_id | No | Numeric Meta ad set or ad ID (required when entity_level is adset or ad) | |
| campaign_id | No | ZuckerBot campaign ID (required when entity_level is campaign — the default) | |
| entity_level | No | What to pause: the whole campaign, one ad set, or one ad | campaign |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to provide safety or side-effect context, the description carries the full burden. It discloses that pausing stops delivery and spend immediately, leaves the object in Meta, reports the prior status, and that resume is currently unavailable through ZuckerBot. This is notably transparent for a state-changing tool.
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?
Four punchy, front-loaded sentences cover purpose, impact, level selection, and resume caveat without filler. Every sentence earns its place and the most important operational consequence—stops delivery and spend—appears early.
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?
This is a state-changing tool, but the description covers what stops, what persists in Meta, the response behavior (prior status), and the unsupported resume flow. There is no output schema, and the description does enough for an agent to call this confidently and understand the likely result.
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%, and the schema already documents entity_level, entity_id, campaign_id, and action. The description's 'set entity_level and pass the matching id' summarizes the relationship but does not add substantial parameter meaning beyond what the schema provides, so it sits at a 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 states a specific verb and resource: pause/delivery across campaign, ad set, and ad levels, with 'campaign' as the default. This clearly differentiates it from sibling tools like activate_campaign, delete_audience, or get_campaign.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use adset/ad level vs. campaign level by explicitly saying to 'stop an underperformer WITHOUT killing the winners in the same campaign.' It also tells the agent that resume is not available through ZuckerBot and must be done in Meta Ads Manager, which is grounded, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_pixelsAInspect
List Meta Pixels available on the currently selected ad account and show which is currently selected for conversion tracking. Optionally select a pixel by providing select_id. The selected pixel is used for all future conversion tracking and CAPI attribution.
| Name | Required | Description | Default |
|---|---|---|---|
| select_id | No | If provided, selects this Meta Pixel ID for conversion tracking. If omitted, lists all available pixels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the key behavioral trait that selecting a pixel sets it for all future conversion tracking and CAPI attribution, indicating a persistent side effect. It does not mention destructive actions or permissions, but the mutation is clearly described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action, and efficiently covers both listing and optional selection with its consequences. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not detail the output format when listing or after selection (e.g., list structure, confirmation message). It also omits potential error conditions (e.g., invalid pixel ID). For a low-complexity tool, it provides adequate but not complete 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?
The schema coverage is 100%, and the description essentially restates the parameter's purpose from the schema ('If provided, selects this Meta Pixel ID for conversion tracking. If omitted, lists all available pixels.'). It adds no new semantic details beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'Meta Pixels', specifying the context 'on the currently selected ad account'. It also distinguishes itself from sibling tools by focusing on pixel listing and selection, which is unique among the listed siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: to list available pixels or optionally select one. However, it does not explicitly mention when not to use it or suggest alternative tools for pixel management.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_portfolio_performanceAInspect
Fetch live Meta performance and downstream CAPI attribution for a launched audience portfolio. Returns enriched tier rows with ad breakdowns, daily metrics, CPA vs. target comparisons, and autonomous evaluation outputs. Use this to monitor a running portfolio and decide whether to rebalance.
| Name | Required | Description | Default |
|---|---|---|---|
| portfolio_id | Yes | Audience portfolio ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. The description implies a read operation ('Fetch live...') but does not explicitly confirm it is non-destructive or mention any side effects. It also lacks details on authorization, rate limits, or data freshness. The mention of 'live' indicates real-time data, but overall transparency is adequate but incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the action and return contents, the second provides usage guidance. It is front-loaded with the key purpose and contains no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple input (one required string) and no output schema, the description provides a good overview of return values (enriched tier rows, daily metrics, etc.). However, it does not address error conditions (e.g., portfolio not found, not launched) or prerequisites. This is a minor gap considering 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 description coverage is 100% (one parameter: portfolio_id). The description does not add meaning beyond the schema's 'Audience portfolio ID' – it does not explain format, validation, or how to obtain it. With high coverage, the baseline is 3, and there is no extra semantic 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 specifies the verb 'Fetch' and the resource 'Meta performance and downstream CAPI attribution for a launched audience portfolio.' It enumerates specific return items (enriched tier rows, ad breakdowns, daily metrics, CPA comparisons, autonomous evaluation outputs). This effectively distinguishes it from sibling tools like get_portfolio (which likely fetches basic portfolio data) and rebalance_portfolio (which executes rebalancing).
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: 'Use this to monitor a running portfolio and decide whether to rebalance.' This guides the agent to invoke it for monitoring and decision-making before rebalancing. It does not provide exclusions or alternatives, but the context is clear enough given the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_preview_campaignAInspect
Generate a zero-cost campaign preview from any business URL. Scrapes the site and writes AI-generated headlines and body copy, using the site's own imagery for the mockup — all without a Meta account or live budget. Use this as the first step to show a user what their ads could look like before committing to a full campaign.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Business website URL to generate ads for | |
| ad_count | No | Number of ad variants to generate (1-3) |
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 that the tool scrapes the site, generates AI copy, uses site imagery, and works without a Meta account or budget. It does not disclose persistence or side effects, but for a preview generation tool the behavioral detail is strong and sufficient.
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 compact and every sentence earns its place: the first defines the action and value, the second explains how it works, and the third gives the workflow. It is front-loaded, avoiding filler and low-level repeated details.
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 the input expectation, core execution behavior, output artifact, and the workflow context, and it does not omit any obviously critical information. Since there is no output schema, a tiny bit more detail about what the returned mockup/preview format looks like could help, but the sentence is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds only the implied breadth of 'any business URL' and does not meaningfully expand the schema semantics for ad_count or URL formatting; it stays at the baseline recommended for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Generate a zero-cost campaign preview from any business URL') and clearly states what the tool produces: AI-generated headlines, body copy, and a mockup using the site's imagery. This clearly separates it from sibling tools like zuckerbot_create_campaign or zuckerbot_create_full_campaign, which build and launch real campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit placement: 'Use this as the first step to show a user what their ads could look like before committing to a full campaign.' It does not name alternative tools directly, but the context makes clear this is a pre-campaign preview rather than an execution tool, giving adequate usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_quickstartAInspect
Show the current ZuckerBot authentication mode (demo vs authenticated), the Free/Pro/Scale and Lifetime billing tiers, setup instructions if not yet configured, and the recommended tool flow from audit → campaign → launch → performance. Returns status, recommended_flow steps, pricing info, and setup guide for unauthenticated users. Call this first in any new session to orient the agent.
| 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. It discloses that the tool returns status, recommendations, pricing, and setup guide, implying it is a read-only, non-destructive operation.
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 3-4 sentences and covers all essential information. It is somewhat detailed but not excessively verbose, and it front-loads the key functions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description thoroughly explains the return values (status, steps, pricing, setup guide). It is complete for its purpose.
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 baseline 4. Description adds value by detailing what the tool returns, compensating for the lack of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it shows authentication mode, billing tiers, setup instructions, and recommended tool flow. It clearly differentiates as the first call for orientation.
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 'Call this first in any new session to orient the agent.' Provides clear context for usage, though lacks explicit when-not-to-use instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_rebalance_portfolioAInspect
Dry-run or execute a budget rebalance across portfolio tiers based on each tier's actual vs. target CPA. With dry_run=true (default) returns recommendations without making changes — useful for review before committing. With dry_run=false updates Meta ad set budgets and local records in one operation.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | When true, returns recommendations without applying changes | |
| portfolio_id | Yes | Audience portfolio ID | |
| meta_access_token | No | Optional Meta access token override for ad set budget updates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that dry_run=false updates Meta ad set budgets and local records in one operation, indicating a destructive write. However, it does not detail permissions, reversibility, or failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the main action and modes. Every sentence provides 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?
The description covers the dry-run and execute paths, and mentions the effect on Meta budgets and local records. No output schema exists, but the description implies recommendations are returned for dry-run. It lacks detail on error conditions or exact output format, but is adequate for a mutation 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 by explaining the dry_run parameter's default and overall behavior beyond the schema, but does not significantly enhance parameter understanding beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs a budget rebalance across portfolio tiers based on CPA performance. It distinguishes between dry-run and execution modes, and differentiates from sibling tools like zuckerbot_get_portfolio or zuckerbot_update_portfolio by focusing on rebalancing.
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 explains when to use dry_run=true (review) vs dry_run=false (commit), and mentions it's useful for review before committing. It provides clear context, though it doesn't explicitly list when not to use it or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_recommend_campaign_structureAInspect
Generate a campaign structure recommendation: audience tiers, budget allocation, creative mix. For accounts WITH history: uses Claude to generate data-driven recommendations. For NEW accounts (cold start): generates conservative defaults from industry benchmarks + safe 2-tier structure (broad 60% / interest 40%). Always returns comparable_historical_cpl with source (account_history or industry_benchmarks) and a disclaimer — NEVER a CPL projection. Lead campaigns default to Meta Instant Form; for leads driving to a website landing page rather than Meta Instant Form, set lead_destination='website'. Present the recommendation to the customer for approval before proceeding.
| Name | Required | Description | Default |
|---|---|---|---|
| objective | No | Campaign objective. If omitted, defaults to 'leads' for most SMB use cases. Leads default to Meta Instant Form unless lead_destination is 'website'. | |
| business_id | No | Business ID (auto-resolved from API key if omitted) | |
| constraints | No | Optional constraints on the recommendation | |
| history_digest | No | Optional JSON string of a prior zuckerbot_analyse_account_history result. If omitted, history is pulled automatically. | |
| destination_url | No | Optional landing-page URL for this campaign. Required/recommended for lead_destination='website'; overrides the business website for ad links. | |
| target_audience | Yes | Target audience description (e.g., 'pool builders in Texas', 'plumbers in Brisbane') | |
| daily_budget_aud | No | Daily budget in AUD. If omitted, defaults to $50/day. | |
| lead_destination | No | For objective='leads': 'meta_form' uses a Meta Instant Form (default), 'website' optimizes for the Pixel Lead event on a landing page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses key behavioral traits: uses Claude for data-driven recs, defaults for cold start, returns comparable_historical_cpl with source and disclaimer, never CPL projection, and lead destination defaults. It also mentions the recommendation should be presented for approval. However, it does not explicitly state read-only nature or potential side effects (though it's a recommendation, so likely safe). Overall, good transparency for a non-destructive tool.
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 about four sentences, efficient and front-loaded with the main purpose. It includes essential details without fluff. A minor improvement could be more compact phrasing, but overall it's well-structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 params, nested objects, no output schema), the description explains the main behavior and output elements (comparable_historical_cpl, disclaimer) but lacks detail on the full output structure of the recommendation. It mentions components like 'audience tiers, budget allocation, creative mix' but does not specify how these are returned (e.g., separate fields or nested object). This leaves some gap for an AI agent to understand the response format.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds context for lead_destination (reiterating schema) and explains overall behavior but does not add significant new meaning to individual parameters beyond what the schema provides. The description's main value is in tool-level context, not parameter-level 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 'Generate a campaign structure recommendation' and specifies components (audience tiers, budget allocation, creative mix). It distinguishes between accounts with history and new accounts, and uses specific verbs like 'generates' and 'returns'. The purpose is unambiguous and differentiates from sibling tools like zuckerbot_create_campaign which actually creates campaigns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use: generating recommendations before proceeding to creation. It explains behavior for accounts with history vs cold start, and gives guidance on lead_destination for lead campaigns. However, it does not explicitly mention when NOT to use this tool or name alternative tools (e.g., use zuckerbot_create_campaign instead for direct creation). The guidance is good but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_redeem_licenseAInspect
Redeem a ZuckerBot lifetime licence code (format ZB-XXXXX-XXXXX-XXXXX) purchased on Dealify or AppSumo. Each code activates the plan it was purchased for: Tier 1 (1 ad account, 2,500 calls/mo), Tier 2 (3 accounts, 10K calls/mo) or Tier 3 (10 accounts, 30K calls/mo). Codes also stack additively on one account up to Tier 3 — e.g. two Tier 1 codes = Tier 2. Redeeming upgrades ALL of the account's API keys to the new tier immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Lifetime licence code in the format ZB-XXXXX-XXXXX-XXXXX |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the code format, valid purchase sources, stacking behavior, and that redemption immediately upgrades all API keys, providing good behavioral 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 concise yet informative, covering all necessary details without extraneous text. It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given one parameter and no output schema, the description fully explains the tool's behavior including code formats, stacking, and upgrade effects, making it contextually 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?
Only one parameter 'code' with 100% schema coverage. The description adds value by specifying the format and examples beyond the schema's 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 explicitly states the tool redeems a ZuckerBot lifetime license code with a specific format, which is a unique action among many sibling tools. It clearly distinguishes its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (to redeem a license code) and explains how codes stack and upgrade accounts, but does not explicitly mention when not to use it or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_refresh_audienceAInspect
Rebuild a stored audience from fresh data. For seed audiences: re-hashes the latest CAPI events for the source CRM stage. For lookalike audiences: syncs the current size and delivery status from Meta after the seed refreshes. Use this when CAPI has received new events since the audience was last built.
| Name | Required | Description | Default |
|---|---|---|---|
| audience_id | Yes | Stored audience row ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses key behavioral traits: for seed audiences it re-hashes latest CAPI events, for lookalikes it syncs size and delivery status. It does not mention permissions or error handling, but the core behavior is well explained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences efficiently convey core function, subtype behaviors, and usage guidance. No wasted words, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema and lack of output schema, the description covers the essential aspects: behavior for both audience types and when to use. It omits return value details but is otherwise 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% with one parameter (audience_id) described as 'Stored audience row ID.' The description adds no additional semantic beyond what the schema provides, so baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it rebuilds a stored audience from fresh data, with specific behaviors for seed and lookalike audiences. It distinguishes from sibling tools like create_seed_audience, delete_audience, and get_audience_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 explicitly advises 'Use this when CAPI has received new events since the audience was last built,' providing a clear condition for use. It does not explicitly state when not to use it but implies that creation of new audiences is handled by other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_research_competitorsAInspect
Scrape Meta Ad Library and search the web to analyse competitor ads in a given industry and location. Returns competitor positioning, common creative hooks, and exploitable gaps. Use before creating a campaign to benchmark against the competitive landscape and find differentiation opportunities.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Optional 2-letter country code to refine Meta Ad Library results (e.g., 'US', 'AU'). Defaults to US. | |
| industry | Yes | Business industry or category (e.g., 'dental', 'online party games', 'roofing') | |
| location | Yes | City, region, or country to scope the competitor search (e.g., 'Austin, TX', 'United States') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses external data scraping (Meta Ad Library, web search) and return types. Could mention potential rate limits or data freshness, but overall transparent for a research tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first explains action and outputs, second gives usage context. No redundant words, front-loaded with key information. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All parameters are documented in schema; description adds usage context and return types (positioning, hooks, gaps). Lacking explicit output format or example, but sufficient for a research tool with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all three parameters. Description adds minimal extra meaning—reiterates industry, location, and optional country refinement. Baseline score of 3 is appropriate given 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 scrapes Meta Ad Library and web to analyze competitor ads, returns positioning, hooks, and gaps. It distinguishes itself from siblings like zuckerbot_research_market (broader) and zuckerbot_suggest_angles (different output).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Use before creating a campaign to benchmark...' providing clear context. Does not explicitly state when not to use, but the sibling list offers alternatives. Slight deduction for missing exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_research_marketAInspect
Get market size, addressable audience estimates, and Meta ad benchmarks (CPL, CTR, CPM) for an industry and location. Use before creating a campaign to set realistic budget expectations and understand how large the targetable audience is. Also useful for proposals and client presentations.
| Name | Required | Description | Default |
|---|---|---|---|
| industry | Yes | Industry/business category (e.g., 'fitness', 'dental') | |
| location | Yes | City/region (e.g., 'United States') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry full behavioral disclosure. It fails to state that this is a read-only operation, mention any authentication or rate limits, or note whether data is cached or real-time. The verb 'Get' implies non-destructive intent, but this is insufficient given the missing 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 three concise sentences split logically: first lists outputs, second gives usage context, third adds secondary use case. No filler or repetition, making it quick to scan.
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 partially covers output by listing market size, audience estimates, and benchmarks. However, it lacks details on format, time period, or constraints (e.g., does it return percentages or raw numbers?). For a simple tool, it is adequate but not fully 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?
The input schema already covers both parameters with clear descriptions (e.g., industry: 'Industry/business category (e.g., fitness, dental)', location: 'City/region (e.g., United States)'). The description merely mentions 'industry and location' without adding any new semantic detail, so it adds no 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 retrieves 'market size, addressable audience estimates, and Meta ad benchmarks (CPL, CTR, CPM)' for a given industry and location. This specific verb ('Get') and resource enumeration distinguishes it from sibling research tools like 'zuckerbot_research_reviews' and 'zuckerbot_research_competitors'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using this tool 'before creating a campaign' to set budget expectations and understand audience size, and notes it is 'also useful for proposals and client presentations'. This provides clear context, though it lacks explicit alternatives or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_research_reviewsAInspect
Fetch review intelligence for a business by name. Searches Google and Yelp to surface star rating, review count, recurring sentiment themes, and standout customer quotes that can be used directly in ad copy. Use before creating a campaign to identify proof points and objection-handling angles.
| Name | Required | Description | Default |
|---|---|---|---|
| location | No | Optional city/region to narrow review search (e.g., 'Austin, TX') | |
| platform | No | Review platform to search. Defaults to all. | |
| business_name | Yes | Business name to research reviews for (e.g., 'Rosebud Dental Austin') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of behavioral disclosure. It describes what the tool does (searches Google/Yelp, returns structured data), but lacks details on limits, authentication requirements, or response format. It is adequate but not 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?
The description is three sentences with clear front-loading: purpose, output detail, and usage recommendation. No redundant 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?
Although no output schema exists, the description adequately outlines what the tool returns (star rating, review count, sentiment themes, quotes). Given the tool's simplicity (3 parameters, simple search) and the presence of sibling tools, it provides sufficient context for an AI agent to decide when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions. The tool description does not add additional semantic value beyond the schema's existing documentation for 'business_name', 'location', and 'platform'. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches review intelligence for a business by name, specifying sources (Google, Yelp) and outputs (star rating, review count, sentiment themes, quotes). This distinguishes it from sibling research tools like zuckerbot_research_competitors or zuckerbot_research_market.
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 advises using it 'before creating a campaign' to identify proof points and objection-handling angles. While it doesn't explicitly exclude alternatives, the use case is clearly contextualized, and no competing tool performs the same function.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_rotate_webhook_secretAInspect
Rotate the Conversions API webhook secret for a business. The new secret is returned exactly once, in this response only — every other read shows just webhook_secret_set and webhook_secret_last4. The old secret stops authenticating immediately, so update the system that signs your inbound webhooks (for example your CRM workflow's stored secret) in the same sitting.
| Name | Required | Description | Default |
|---|---|---|---|
| business_id | No | Optional business ID override for the authenticated API key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses critical behavior: the new secret is returned exactly once in this response, and every other read shows only metadata. The old secret stops authenticating immediately. This goes beyond basic purpose to explain side effects and one-time nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences front-loaded with the action. Every sentence adds essential information: purpose, one-time return behavior, and immediate invalidation. No redundancy or filler.
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 return value (new secret in response, only once) and the condition (old secret stops working). For a single-parameter tool, this is fully 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?
The input schema has 100% description coverage for the sole parameter (`business_id`), and the tool description does not add any additional meaning to what the schema already provides. The 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 uses the specific verb 'Rotate' and resource 'Conversions API webhook secret for a business', clearly identifying the tool's function. It is distinct from sibling tools which cover other operations like deleting audiences, getting insights, or syncing conversions, making it easy for the agent to select correctly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the immediate effect (old secret stops authenticating) and the necessary follow-up action (update the system that signs inbound webhooks). It implies the tool should be used when ready to update, but does not explicitly list when not to use it or provide alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_send_capi_eventAInspect
Manually send a Conversions API event for a business contact/lead. Useful for debugging CAPI pipelines, testing stage mappings with real user data, or sending events from custom integrations not covered by the webhook. Authenticates with the business API key OR with an x-zuckerbot-webhook-secret header if using the webhook path.
| Name | Required | Description | Default |
|---|---|---|---|
| fbc | No | Optional pre-formatted Facebook click cookie (fb.1.<ms>.<fbclid>), forwarded raw — never hashed | |
| fbp | No | Optional Facebook browser ID cookie (_fbp), forwarded raw — never hashed. Improves match quality for every event | |
| No | Optional contact email for identity matching | ||
| phone | No | Optional contact phone for identity matching | |
| value | No | Optional event value override in major currency units | |
| fbclid | No | Optional Facebook click ID; the server builds a well-formed fbc cookie from it | |
| lead_id | No | Optional ZuckerBot lead ID for attribution matching | |
| last_name | No | Optional last name for identity matching | |
| crm_source | No | Optional CRM source label override (e.g., 'hubspot', 'salesforce') | |
| event_time | No | Optional ISO 8601 event timestamp. Defaults to now. | |
| first_name | No | Optional first name for identity matching | |
| business_id | No | Optional business ID override (resolved from API key when omitted) | |
| meta_lead_id | No | Optional Meta Lead Gen Ads lead ID for attribution matching | |
| source_stage | Yes | CRM stage key to map to a Meta event (e.g., 'lead', 'salesqualifiedlead', 'customer') |
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 it manually sends an event and authenticates via API key or header. However, it does not mention side effects, idempotency, error handling, or permissions. The behavior is partially transparent but lacks detail on what happens after sending.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences with no wasted words. It front-loads the purpose, then adds use cases and authentication info. Each sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 14 parameters and no output schema or annotations, the description is adequate but not complete. It explains purpose and when to use but lacks details on return values, error scenarios, or rate limits. Some behavioral gaps remain.
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 well-described parameters (e.g., fbc, fbp, source_stage). The description itself does not add extra parameter semantics beyond the schema. Baseline of 3 is appropriate since schema does the heavy lifting.
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 sends a Conversions API event manually for a business contact/lead. It provides specific use cases (debugging, testing mappings, custom integrations) and distinguishes from webhook-based sending. The verb 'send' and resource 'event' are precise.
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 lists when to use the tool: debugging CAPI pipelines, testing stage mappings, sending events for custom integrations not covered by webhook. It also explains authentication methods. However, it does not explicitly state when not to use it, though the use cases imply boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_set_capi_configAInspect
Update the Conversions API configuration for a business. Set stage-to-event mappings (e.g., 'lead' → Meta Lead event), enable/disable delivery, change the CRM source, currency, optimisation target, or action source. Changes take effect immediately for new CAPI events. Use zuckerbot_capi_test to verify the updated config works.
| Name | Required | Description | Default |
|---|---|---|---|
| currency | No | Business currency used for CAPI event values, such as USD or AUD | |
| crm_source | No | CRM source label, such as hubspot | |
| is_enabled | No | Enable or disable CAPI delivery for the business | |
| business_id | No | Optional business ID override for the authenticated API key | |
| optimise_for | No | Downstream optimisation target for autonomous evaluation | |
| action_source | No | Meta Conversions API action_source. Defaults to website for CRM events | |
| event_mapping | No | CRM stage mapping object keyed by source stage. Stage keys are normalised (lower-cased, non-alphanumerics stripped: signup_completed → signupcompleted); inbound webhook source_stage values are normalised identically before matching, and any renamed keys are reported back as normalised_keys in the response | |
| rotate_webhook_secret | No | Rotate the webhook secret on update. The new secret is returned exactly once in the response; prefer zuckerbot_rotate_webhook_secret for a dedicated rotation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behaviors. It states changes take effect immediately for new CAPI events, which is a key behavioral trait. However, it doesn't mention side effects (e.g., overwriting existing config), authorization needs, or other implications of the rotate_webhook_secret parameter. More detail on what gets destroyed or updated would improve transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long, front-loaded with the main purpose, then lists capabilities, and ends with behavior and verification suggestion. Every sentence earns its place; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, nested objects, many siblings), the description covers the main purpose, configurable items, immediate effect, and testing recommendation. It lacks details on error scenarios, authentication requirements, and full behavioral specification, but overall it is fairly complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond schema by providing normalization details for event_mapping keys (lower-cased, non-alphanumerics stripped) and an example mapping ('lead' → Meta Lead event). It also advises preferring a dedicated tool for rotation. This extra context 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 updates the Conversions API configuration, specifying the verb 'Update' and the resource 'Conversions API configuration'. It lists specific configurable items (stage-to-event mappings, enable/disable, CRM source, currency, etc.), and distinguishes from siblings like get_capi_config (read) and capi_test (test) by mentioning the test tool for verification.
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 advises using zuckerbot_capi_test to verify the updated config, providing a clear post-update action. While it doesn't explicitly state when not to use this tool, it implies it's for modifications and hints at alternatives like zuckerbot_rotate_webhook_secret for dedicated rotation. It lacks prerequisites or context like needing an existing configuration, but the guidance is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_suggest_anglesAInspect
Return only the creative angles and audience tiers for a campaign draft — a lightweight alternative to zuckerbot_get_campaign when you need just the strategy summary without the full campaign payload, stored creatives, or tier execution details.
| Name | Required | Description | Default |
|---|---|---|---|
| campaign_id | Yes | Campaign ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It clearly states what the tool returns (creative angles and audience tiers) and what it omits (stored creatives, tier execution details), implying a read-only subset operation. However, it does not mention side effects, auth needs, 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 a single sentence that front-loads the action and result, followed by the contrasting sibling tool. Every word is necessary; no wasted verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool with one parameter and no output schema, the description adequately covers purpose, usage alternative, and output scope. It could mention that the campaign_id must exist, but otherwise is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with campaign_id described simply as 'Campaign ID'. The description adds no additional meaning beyond the schema, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns 'creative angles and audience tiers' for a campaign draft, and explicitly differentiates itself from sibling tool zuckerbot_get_campaign by calling itself a 'lightweight alternative' that omits stored creatives and tier execution details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises use when needing 'just the strategy summary without the full campaign payload', and names the alternative tool zuckerbot_get_campaign that provides the full payload, along with what that includes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_sync_conversionAInspect
Send downstream conversion quality feedback to Meta via CAPI. When a ZuckerBot-sourced lead converts (sale, appointment, qualified call) or bounces (uncontactable, bad fit), reporting it here teaches Meta's algorithm to find more (or fewer) people like them — improving lead quality over time. Call this from your CRM when a lead status changes.
| Name | Required | Description | Default |
|---|---|---|---|
| fbc | No | Optional pre-formatted fbc cookie, forwarded raw — never hashed | |
| fbp | No | Optional _fbp browser cookie, forwarded raw — never hashed. Improves match quality | |
| fbclid | No | Optional Facebook click ID; the server builds a well-formed fbc cookie from it | |
| lead_id | Yes | Lead ID to report conversion for | |
| quality | Yes | Lead quality: 'good' = converted/contacted, 'bad' = lost/unresponsive | |
| user_data | No | Optional user data to improve match rate | |
| campaign_id | Yes | ZuckerBot campaign ID | |
| meta_access_token | Yes | User's Meta access token for CAPI |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses that it teaches Meta's algorithm to improve lead quality. Does not detail authentication needs or side effects, but schema covers required token.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, then usage and benefit. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Provides context on trigger (lead status change) and effect (algorithm improvement). No output schema, but tool likely returns basic status. Adequate for understanding.
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%, baseline 3. Description adds no extra meaning beyond schema; does not explain parameter purpose further.
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?
States it sends conversion quality feedback to Meta via CAPI for ZuckerBot-sourced leads, with specific conversion types. Distinguishes from sibling 'zuckerbot_send_capi_event' by focusing on lead quality feedback.
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?
Clearly specifies when to call: when a lead status changes (converted or bounced). Provides context from CRM. Does not explicitly mention alternatives or exclusions, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_tag_creativeAInspect
Tag Meta ads with creative attributes (hook type, visual style, product focus, CTA type, copy tone, setting) by providing ad metadata and optional asset URLs. ZuckerBot uses Claude vision to analyze the creative and store structured tags. These tags feed the zuckerbot_creative_analysis pipeline. Run this after launching new ads to keep the creative intelligence database current.
| Name | Required | Description | Default |
|---|---|---|---|
| ads | Yes | One or more Meta ads to tag with creative attributes | |
| business_id | No | Optional business ID override |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the mechanism (Claude vision analysis, storage) and data flow (feeds creative_analysis pipeline). With no annotations provided, the description carries full burden. It does not mention permissions, rate limits, or side effects, but the mutation nature is implied by 'tag'. Adequate but not comprehensive.
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: three sentences that cover purpose, method, downstream use, and timing. Every sentence adds value with no repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, and the description does not mention return values or output behavior. It explains the stored tags and pipeline but not what the function returns to the caller. Considering the complexity (nested objects in input), the description leaves a gap in expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds context about using Claude vision with asset URLs, but this is already implied by schema parameter descriptions. No additional meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Tag Meta ads'), the resource, and specific attributes (hook type, visual style, etc.). It also mentions the use of Claude vision and differentiates from sibling tools like 'zuckerbot_creative_analysis' by noting that this tagging feeds that pipeline.
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 timing advice ('Run this after launching new ads'), which helps the agent decide when to invoke. However, it does not mention when not to use the tool or suggest alternative tools, which would strengthen guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_update_portfolioAInspect
Update the name, total daily budget, active status, or tier configuration of an existing audience portfolio. Changes to budget and tiers take effect on the next autonomous evaluation cycle. Use this to adjust a portfolio without relaunching all tiers.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New portfolio name | |
| tiers | No | Updated tier configuration. Replaces the existing tiers array. | |
| is_active | No | Enable or disable the portfolio for autonomous evaluation | |
| portfolio_id | Yes | Audience portfolio ID to update | |
| total_daily_budget_cents | No | New total daily budget in cents (minimum 500) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description partially carries the behavioral disclosure burden. It explains that budget and tier changes take effect on the next autonomous evaluation cycle, which is useful. But it lacks information on permissions required, idempotency, or any side effects like blocking concurrent 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 two sentences long, front-loaded with the main action. It is efficient and avoids redundancy. However, it could be slightly more structured by grouping effects (e.g., listing the delayed effect separately).
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 there is no output schema, the description does not mention what the tool returns (e.g., success status or updated portfolio object). For an update tool, this is a gap. However, it sufficiently covers input and purpose. The complexity is moderate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds minimal extra context (e.g., 'Changes to budget and tiers take effect on the next autonomous evaluation cycle') but does not enrich individual parameter meanings significantly. 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 'Update the name, total daily budget, active status, or tier configuration of an existing audience portfolio.' The verb 'update' and resource 'audience portfolio' are specific. It distinguishes from siblings like create_portfolio (create new) and rebalance_portfolio (rebalance budget allocation).
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 says 'Use this to adjust a portfolio without relaunching all tiers,' giving a clear use case. It also mentions when changes take effect (next evaluation cycle). However, it does not explicitly state when NOT to use or list alternatives like rebalance_portfolio for budget reallocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_upload_ad_assetAInspect
Upload a NEW image or video file into the connected Meta ad account's library from a publicly reachable https URL. Returns image_hash (images) or video_id (videos) for use in zuckerbot_create_ad or a zuckerbot_create_campaign_from_spec IMAGE_SET/VIDEO ref. This is the ONLY supported way to get a usable image_hash: Meta scopes image hashes to a single ad account, so a hash copied out of the Meta business media library or out of a different ad account is rejected at ad-creation time as "Image Not Found". Videos need Meta-side processing: the tool waits briefly and polls; if still processing, call zuckerbot_get_ad_asset_status until ready=true before creating an ad with the video. Library assets are non-delivering and spend nothing. This is the first step for adding a brand-new creative file to an EXISTING (even live) campaign: upload here, then zuckerbot_create_ad into the target ad set.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional library name for the uploaded video | |
| asset_url | Yes | Publicly reachable https:// URL of the image or video file (e.g. jpg, png, mp4, mov) | |
| asset_type | No | Auto-detected from the URL extension when omitted; pass explicitly for extension-less URLs | |
| business_id | No | Optional business ID override for the authenticated API key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses Meta-side video processing and polling behavior, the non-delivering nature of library assets, per-ad-account hash scoping, and rejection of copied hashes. These details go far beyond a simple action statement.
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 long but every sentence earns its place, covering action, return values, critical caveats, video processing behavior, and workflow placement. The core action is front-loaded, and the caveats are logically ordered.
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 four-parameter tool with no output schema and no annotations, the description is remarkably complete. It explains return values, video readiness behavior, integration with create_ad and create_campaign_from_spec, account-scoping pitfalls, and when to call this tool in the larger workflow. Nothing essential appears missing.
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 four parameters clearly. The description mostly reinforces what the schema says about asset_url, asset_type, and name, and it does not add meaningful new semantics for business_id. This meets the baseline for high coverage without exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'Upload a NEW image or video file into the connected Meta ad account's library from a publicly reachable https URL.' It also identifies the return values (image_hash or video_id) and states this is the ONLY supported way to get a usable image_hash, which strongly differentiates it from siblings like zuckerbot_upload_creative.
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 gives clear context: it is the first step for adding a brand-new creative file to an existing campaign, and for videos it directs the agent to poll zuckerbot_get_ad_asset_status until ready. It also warns that hashes copied from outside the ad account will be rejected, but it does not explicitly name alternative upload tools or state when to skip this tool in favor of another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_upload_business_contextAInspect
Upload a text document (ad performance data, brand guidelines, customer data, sales data, or competitor analysis) so ZuckerBot can extract structured planning insights from it. Accepts raw text content — not binary files. Use this when the business has existing performance data or brand docs that should inform campaign strategy.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | File content as text | |
| filename | Yes | Name of the file or document | |
| business_id | No | Optional business ID override | |
| context_type | No | Optional hint about the type of uploaded context |
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 that raw text is accepted and that insights will be extracted, but omits important behavioral details such as whether the uploaded data overwrites previous entries, what the success response looks like, any size limits, or authentication requirements. As a result, an agent might not fully understand the tool's side effects or constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two tightly packed sentences with no wasted words. The first sentence clearly states the action and purpose, and the second adds a usage instruction. Every phrase earns its place, making it easy to parse quickly.
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 there is no output schema and no annotations, the description should explain what the tool returns or how the system reacts. It only implies future insight extraction ('so ZuckerBot can extract...') but doesn't state the immediate outcome (e.g., whether a confirmation message or ID is returned). It also lacks details on limitations (e.g., max content size) that would be needed for a complete understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers all 4 parameters with descriptions, so baseline is 3. The description adds value by clarifying that content is 'raw text content — not binary files,' which is more specific than the schema's 'File content as text.' It also provides context for the 'context_type' enum by listing example types, helping the agent choose appropriate 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 the action ('upload a text document'), the resource ('business context'), and the purpose ('so ZuckerBot can extract structured planning insights'). It enumerates specific document types (ad performance, brand guidelines, etc.), making it unambiguous. Among many sibling tools, this one is uniquely about uploading text for insight extraction, differentiating it effectively.
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 this when the business has existing performance data or brand docs that should inform campaign strategy.' It also clarifies what not to do: 'Accepts raw text content — not binary files,' which implicitly guides against using it for non-text files. While it doesn't name alternatives, the context of siblings like 'zuckerbot_upload_creative' provides differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zuckerbot_upload_creativeAInspect
Upload finished creative assets (images or videos) to an approved intelligence campaign. ZuckerBot queues the Meta upload and ad-creation jobs asynchronously, then polls until they complete or the polling window expires. Use this when you have your own creative assets ready. INTELLIGENCE CAMPAIGNS ONLY — to add a new creative file to any other EXISTING campaign (including live ones built outside ZuckerBot), use zuckerbot_upload_ad_asset + zuckerbot_create_ad instead.
| Name | Required | Description | Default |
|---|---|---|---|
| creatives | Yes | Creative assets to attach to the campaign | |
| campaign_id | Yes | Intelligence campaign ID | |
| meta_page_id | No | Optional Facebook Page ID override | |
| meta_access_token | No | Optional Meta/Facebook access token override | |
| meta_ad_account_id | No | Optional Meta ad account ID override (format: act_XXXXX) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description shoulders the transparency burden. It explains that Meta upload and ad-creation jobs are queued asynchronously and polled until completion or timeout, which is important behavioral context beyond basic operation. It doesn't specify the return value or failure details, but it is far from opaque.
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?
Each sentence earns its place: purpose, async behavior, when-to-use, and explicit alternative routing. The distinction from other upload tools is front-loaded, making the description efficient and actionable without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description contains the necessary operational behavior (async queuing and polling), the eligibility constraint, and the alternative path. Since there is no output schema, a bit more detail about what the caller receives after polling would be ideal, but the tool is still callable correctly with the provided guidance.
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 nested fields well. The description adds minimal semantic depth beyond 'approved' campaign and image/video assets, which is sufficient given the schema's thoroughness.
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 uploads finished creative assets (images or videos) to an approved intelligence campaign, with a specific verb and resource. It also distinguishes this tool from zuckerbot_upload_ad_asset and zuckerbot_create_ad, making its role unmistakable among the large sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly says to use this when you already have creative assets ready and limits scope to intelligence campaigns. It also names the alternative combination (zuckerbot_upload_ad_asset + zuckerbot_create_ad) for all other existing campaigns, giving clear routing guidance.
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.
1 tool update
v0.4.8- Changed
zuckerbot_create_ad1 field changed- changed
Input schema / properties / image_hash / descriptionPrevious value: -"IMAGE: 32-char Meta library image hash (from zuckerbot_upload_ad_asset)"New value: +"IMAGE: 32-char Meta library image hash from zuckerbot_upload_ad_asset for THIS ad account — hashes from the business media library or another ad account are rejected as image_hash_unusable"
13 tool updates
v0.4.7- Added
zuckerbot_create_ad - Changed
zuckerbot_create_seed_audience1 field changed- added
Input schema / properties / adopt_meta_audience_idAdded value: +{ + "description": "Recovery only: the meta_audience_id from a prior audience_registry_write_failed error. Verifies the audience exists on the bound ad account, then registers it without re-creating it or re-uploading users.", + "type": "string" +}
- Changed
zuckerbot_creative_analysis2 fields changed- added
Input schema / properties / cohortAdded value: +{ + "description": "Set to 'objective' to group results by campaign objective family instead of pooling every campaign together. Cohorts with too little evidence are labelled insufficient, and ads without a stored objective are counted as unlabelled_ads.", + "enum": [ + "objective" + ], + "type": "string" +} - added
Input schema / properties / objective_familyAdded value: +{ + "description": "With cohort='objective', restrict results to one objective family.", + "enum": [ + "leads", + "sales", + "traffic", + "awareness", + "engagement", + "app", + "unknown" + ], + "type": "string" +}
- Changed
zuckerbot_creative_cross_analysis2 fields changed- added
Input schema / properties / cohortAdded value: +{ + "description": "Set to 'objective' to compute one matrix per campaign objective family instead of pooling every campaign together.", + "enum": [ + "objective" + ], + "type": "string" +} - added
Input schema / properties / objective_familyAdded value: +{ + "description": "With cohort='objective', restrict results to one objective family.", + "enum": [ + "leads", + "sales", + "traffic", + "awareness", + "engagement", + "app", + "unknown" + ], + "type": "string" +}
- Added
zuckerbot_duplicate_ad - Added
zuckerbot_export_leads - Added
zuckerbot_get_ad_asset_status - Added
zuckerbot_get_creative_attributes - Added
zuckerbot_get_custom_conversion - Added
zuckerbot_get_lead_form - Changed
zuckerbot_lead_forms1 field changed- added
Input schema / properties / afterAdded value: +{ + "description": "Opaque pagination cursor from a previous truncated list response (next_cursor). Ignored when select_id is provided.", + "type": "string" +}
- Changed
zuckerbot_list_custom_conversions1 field changed- added
Input schema / properties / afterAdded value: +{ + "description": "Opaque pagination cursor from a previous truncated list response (next_cursor)", + "type": "string" +}
- Added
zuckerbot_upload_ad_asset
60 tool updates
v0.4.4- First observed
zuckerbot_activate_campaign - First observed
zuckerbot_ad_accounts - First observed
zuckerbot_analyse_account_history - First observed
zuckerbot_approve_campaign_strategy - First observed
zuckerbot_audit_account - First observed
zuckerbot_billing_status - First observed
zuckerbot_capi_status - First observed
zuckerbot_capi_test - First observed
zuckerbot_create_campaign - First observed
zuckerbot_create_campaign_from_spec - First observed
zuckerbot_create_custom_conversion - First observed
zuckerbot_create_full_campaign - First observed
zuckerbot_create_lookalike_audience - First observed
zuckerbot_create_portfolio - First observed
zuckerbot_create_seed_audience - First observed
zuckerbot_creative_analysis - First observed
zuckerbot_creative_cross_analysis - First observed
zuckerbot_creative_qa - First observed
zuckerbot_delete_audience - First observed
zuckerbot_enrich_business - First observed
zuckerbot_generate_briefs - First observed
zuckerbot_generate_campaign_brief - First observed
zuckerbot_get_account_insights - First observed
zuckerbot_get_audience_status - First observed
zuckerbot_get_campaign - First observed
zuckerbot_get_campaign_insights - First observed
zuckerbot_get_capi_config - First observed
zuckerbot_get_creative_status - First observed
zuckerbot_get_launch_credentials - First observed
zuckerbot_get_performance - First observed
zuckerbot_get_portfolio - First observed
zuckerbot_launch_campaign - First observed
zuckerbot_launch_portfolio - First observed
zuckerbot_lead_forms - First observed
zuckerbot_list_audiences - First observed
zuckerbot_list_business_context - First observed
zuckerbot_list_custom_conversions - First observed
zuckerbot_meta_pages - First observed
zuckerbot_meta_status - First observed
zuckerbot_pause_campaign - First observed
zuckerbot_pixels - First observed
zuckerbot_portfolio_performance - First observed
zuckerbot_preview_campaign - First observed
zuckerbot_quickstart - First observed
zuckerbot_rebalance_portfolio - First observed
zuckerbot_recommend_campaign_structure - First observed
zuckerbot_redeem_license - First observed
zuckerbot_refresh_audience - First observed
zuckerbot_research_competitors - First observed
zuckerbot_research_market - First observed
zuckerbot_research_reviews - First observed
zuckerbot_rotate_webhook_secret - First observed
zuckerbot_send_capi_event - First observed
zuckerbot_set_capi_config - First observed
zuckerbot_suggest_angles - First observed
zuckerbot_sync_conversion - First observed
zuckerbot_tag_creative - First observed
zuckerbot_update_portfolio - First observed
zuckerbot_upload_business_context - First observed
zuckerbot_upload_creative
TDQS
There are several near-parallel tool names for the same action family: three create_campaign variants, two generate_briefs tools, and multiple performance/insights/creative-analysis tools. The long descriptions help, but agents still face a real risk of selecting create_campaign instead of create_full_campaign or create_campaign_from_spec, and generate_campaign_brief versus generate_briefs is especially easy to confuse.
All tools consistently share the zuckerbot_ prefix and use snake_case, which is helpful. However, conventions are not uniform: some read endpoints use list_*, some are bare plural nouns like zuckerbot_pixels or zuckerbot_lead_forms, and spellings are mixed such as analyse_account_history vs creative_analysis.
68 tools is an extreme surface for one MCP server, far beyond what an agent can reasonably scan and disambiguate in context. Even though the broader domain is large, this number should be split into focused vertical servers rather than one monoolithic toolset.
The set covers a impressive sweep: setup, audit, research, planning, briefs, campaign creation, launch, monitoring, audiences, creative assets, CAPI and portfolios. But there are notable lifecycle dead ends: no resume for paused objects, no update/delete for campaigns or ads in the server, and several tools explicitly report they are not currently available.
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.
Google Ads, Meta Ads & GA4 MCP server - 250+ tools for campaigns, creatives, audiences & reports.
AI agents that manage paid ads on Meta, LinkedIn, and Google Ads from any MCP client.
Google & Meta Ads management with 100+ tools. Audit, create, and optimize campaigns.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage Facebook and Instagram advertising via the Meta Marketing API. It provides comprehensive tools for campaign lifecycle management, performance analytics, audience targeting, and creative optimization.21199MIT
- 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
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to manage Facebook and Instagram advertising campaigns through the Meta Marketing API. Supports full campaign lifecycle management, performance analytics, audience targeting, and creative optimization.-
- AlicenseNot gradedqualityDmaintenanceComprehensive Meta Ads MCP server providing 77 tools for full campaign lifecycle management, enabling AI assistants to control Meta advertising operations through natural language.219MIT
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/DatalisHQ/zuckerbot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server