All 160 MCP tools
Generated from the server's own tools/list response on
2026-09-05. If the server gains a tool, this page has it on the
next build. Nothing here is maintained by hand.
160 shown
Audiences and targeting 39
archive_audience
Destructive
Archive (delete) a custom audience from the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
custom_audience_id |
integer | The numeric ID of the custom audience to archive. | |
audience_name |
string | The name of the custom audience to archive. If provided without custom_audience_id, the tool will search for the audience by name to resolve the ID. |
create_audience_from_segment
Writes
Create a new custom audience based on a segment from the insights/attribution tool.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
segment_id |
integer | required | The ID of the segment from list_segments tool. Use list_segments to find available segment IDs. |
name |
string | required | Name for the new audience. Must be unique and descriptive. Example: 'High Intent Accounts - 30 Days' |
lookback_window |
integer | required | Number of days to look back in the segment results. Range: 1 to 365 days. Example: 30 for last 30 days, 90 for last quarter, 365 for last year. |
create_bombora_audience
Writes
Create Bombora buyer intent audiences on the Metadata platform.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required) |
topics |
array | required | Array of buyer intent topics (required). Use get_intent_topics to retrieve available topics. Example: ['Pardot', 'Salesforce'] |
industries |
array | Industry IDs for company targeting (optional). Valid range: 1-148. Example: [4, 96] | |
employees |
array | Employee count ranges for company targeting (optional). Valid values: 'FROM_1_TO_10', 'FROM_10_TO_50', 'FROM_50_TO_200', 'FROM_200_TO_500', 'FROM_500_TO_1000', 'FROM_1000_TO_5000', 'FROM_5000_TO_10000', 'OVER_10000' | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
location_state_ids |
array | State IDs for geographic targeting (optional). Valid US State IDs: 1 (Alabama), 2 (Alaska), 3 (Arizona), 4 (Arkansas), 5 (California), 6 (Colorado), 7 (Connecticut), 8 (Delaware), 9 (Florida), 10 (Georgia), 11 (Hawaii), 12 (Idaho), 13 (Illinois), 14 (Indiana), 15 (Iowa), 16 (Kansas), 17 (Kentucky), | |
job_title_includes |
array | Free text keywords for job titles to include (optional). Example: ['Software Engineer', 'Manager'] | |
job_title_excludes |
array | Free text keywords for job titles to exclude (optional). Example: ['Senior', 'Lead'] | |
job_function_include_ids |
array | Job function IDs to include (optional). Valid IDs: 1 (Marketing), 2 (Sales), 3 (Customer Service), 4 (Finance), 5 (HR), 6 (PR), 7 (Media), 8 (Design), 9 (Engineering), 10 (Operations), 11 (Legal), 12 (Education), 13 (Health), 14 (Real Estate), 15 (Accounting), 16 (Administrative), 17 (Business Devel | |
job_function_exclude_ids |
array | Job function IDs to exclude (optional). Valid IDs: 1-28 as listed above | |
seniority_include_ids |
array | Seniority level IDs to include (optional). Valid IDs: 2 (Manager), 3 (Director), 4 (VP), 5 (CXO), 6 (Unpaid), 7 (Training), 8 (Senior), 9 (Owner), 10 (Entry), 11 (Partner). Example: [10, 7] for Entry and Training | |
seniority_exclude_ids |
array | Seniority level IDs to exclude (optional). Valid IDs: 2-11 as listed above | |
contacts_per_company_limit |
integer | Maximum number of contacts to target per company (optional). Example: 20 |
create_csv_upload_linkedin_native_audience
Writes
Create a **CSV Upload - LinkedIn Native** audience (platform `customAudienceType=NATIVE_TARGETING_CSV`).
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
audience_name |
string | required | Name for the new audience (required). |
companies |
object | Inline map of company names to website URLs (optional). MUTUALLY EXCLUSIVE with `companies_source_csv_url`. Example: {"Acme Corp": "https://acme.com"} | |
companies_source_csv_url |
string | Public URL of a CSV with header EXACTLY `companyname,companywebsite` (case-insensitive). Use when the user attached a CSV to the chat — the URL comes via `AudienceBrief.attached_file_urls`. MUTUALLY EXCLUSIVE with `companies`. | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
employees |
array | LinkedIn employee count ranges for audience targeting. Valid values: 1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, +10001. Example: ['201-500', '501-1000'] | |
revenues |
array | LinkedIn revenue ranges for audience targeting. Valid values: Under $1M, $1M-$10M, $10M-$100M, $100M-$1B, $1B+. Example: ['$1M-$10M', '$10M-$100M'] | |
company_names |
array | Free-text company names (resolved to LinkedIn company IDs). Example: ['Metadata', 'Google'] | |
job_titles |
array | Free-text job titles (resolved to LinkedIn job-title IDs). Example: ['Software Engineer', 'Product Manager'] | |
skills |
array | Free-text professional skills (resolved to LinkedIn skill IDs). Example: ['HubSpot', 'Salesforce'] |
create_facebook_native_criteria_audience
Writes
Create a Facebook native criteria audience using Facebook-supported targeting criteria.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required). |
industries |
array | Facebook native industry categories for audience targeting. Valid values: Administrative Services, Architecture and Engineering, Arts, Entertainment, Sports and Media, Business and Finance, Business decision maker titles and interests, Cleaning and Maintenance Services, Community and Social Services | |
countries |
array | List of country names to target. Each must be a valid country name (e.g., ['United States', 'Brazil']). Resolved to platform country IDs before submission. | |
job_titles |
array | Free-text job title strings for targeting. Example: ['Software Engineer', 'Senior Developer', 'Product Owner'] | |
interests |
array | Free-text interest strings for targeting. Example: ['Java', 'Python', 'Cloud Computing', 'Machine Learning'] | |
min_age |
integer | required | Minimum age for audience targeting. Must be between 21 and 65, and less than or equal to max_age. |
max_age |
integer | required | Maximum age for audience targeting. Must be between 21 and 65, and greater than or equal to min_age. |
estimate_only |
boolean | If true, do NOT create the audience — only estimate its size and return the expected contact count. Use this when the user wants to preview Facebook audience size before committing. Defaults to false (audience is created). |
create_firmographic_audience
Writes
Create B2B company firmographic audiences for targeted advertising campaigns.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required) |
industries |
array | Industry IDs for firmographic/technographic filtering (optional). Valid IDs: 1=Defense & Space, 3=Computer Hardware, 4=Computer Software, 5=Computer Networking, 6=Internet, 7=Semiconductors, 8=Telecommunications, 9=Law Practice, 10=Legal Services, 11=Management Consulting, 12=Biotechnology, 13=Medic | |
employees |
array | Employee count ranges. Valid enum values: LESS_THAN_10 (0-9), FROM_10_TO_50 (10-49), FROM_50_TO_200 (50-199), FROM_200_TO_500 (200-499), FROM_500_TO_1000 (500-999), FROM_1000_TO_5000 (1,000-4,999), FROM_5000_TO_10000 (5,000-9,999), OVER_10000 (10,000+) | |
revenue |
array | Revenue ranges. Valid enum values: LESS_THAN_1M ($0-$1M), FROM_1M_TO_10M ($1M-$10M), FROM_10M_TO_50M ($10M-$50M), FROM_50M_TO_100M ($50M-$100M), FROM_100M_TO_200M ($100M-$200M), FROM_200M_TO_500M ($200M-$500M), FROM_500M_TO_1000M ($500M-$1B), OVER_1000M ($1B+) | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
location_state_ids |
array | State IDs for geographic targeting (optional). Valid US State IDs: 1 (Alabama), 2 (Alaska), 3 (Arizona), 4 (Arkansas), 5 (California), 6 (Colorado), 7 (Connecticut), 8 (Delaware), 9 (Florida), 10 (Georgia), 11 (Hawaii), 12 (Idaho), 13 (Illinois), 14 (Indiana), 15 (Iowa), 16 (Kansas), 17 (Kentucky), | |
job_title_includes |
array | Free text keywords for job titles to include (optional). Example: ['Software Engineer', 'Manager'] | |
job_title_excludes |
array | Free text keywords for job titles to exclude (optional). Example: ['Senior', 'Lead'] | |
job_function_include_ids |
array | Job function IDs to include (optional). Valid IDs: 1 (Marketing), 2 (Sales), 3 (Customer Service), 4 (Finance), 5 (HR), 6 (PR), 7 (Media), 8 (Design), 9 (Engineering), 10 (Operations), 11 (Legal), 12 (Education), 13 (Health), 14 (Real Estate), 15 (Accounting), 16 (Administrative), 17 (Business Devel | |
job_function_exclude_ids |
array | Job function IDs to exclude (optional). Valid IDs: 1-28 as listed above | |
seniority_include_ids |
array | Seniority level IDs to include (optional). Valid IDs: 2 (Manager), 3 (Director), 4 (VP), 5 (CXO), 6 (Unpaid), 7 (Training), 8 (Senior), 9 (Owner), 10 (Entry), 11 (Partner). Example: [10, 7] for Entry and Training | |
seniority_exclude_ids |
array | Seniority level IDs to exclude (optional). Valid IDs: 2-11 as listed above | |
contacts_per_company_limit |
integer | Maximum number of contacts to target per company (optional). Example: 20 | |
estimate_only |
boolean | If true, do NOT create the audience — only estimate its size and return the counts. Use this when the user wants to preview how many companies/contacts match the criteria before committing. Defaults to false (audience is created). |
create_g2_intent_dynamic_audience
Writes
Create a **G2 Intent (Dynamic)** audience (platform `customAudienceType=DYNAMIC_G2_CONTACT`).
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required, max 50 characters). |
intent_days |
integer | required | Days to look back for G2 intent signals (required, 1-365). |
buying_stages |
array | Buying stages to target. The platform REQUIRES at least one; if the user did not specify, ASK them before calling — do NOT default. | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
location_state_ids |
array | State IDs for geographic targeting (optional). Valid US State IDs: 1 (Alabama), 2 (Alaska), 3 (Arizona), 4 (Arkansas), 5 (California), 6 (Colorado), 7 (Connecticut), 8 (Delaware), 9 (Florida), 10 (Georgia), 11 (Hawaii), 12 (Idaho), 13 (Illinois), 14 (Indiana), 15 (Iowa), 16 (Kansas), 17 (Kentucky), | |
job_title_includes |
array | Free text keywords for job titles to include (optional). Example: ['Software Engineer', 'Manager'] | |
job_title_excludes |
array | Free text keywords for job titles to exclude (optional). Example: ['Senior', 'Lead'] | |
job_function_include_ids |
array | Job function IDs to include (optional). Valid IDs: 1 (Marketing), 2 (Sales), 3 (Customer Service), 4 (Finance), 5 (HR), 6 (PR), 7 (Media), 8 (Design), 9 (Engineering), 10 (Operations), 11 (Legal), 12 (Education), 13 (Health), 14 (Real Estate), 15 (Accounting), 16 (Administrative), 17 (Business Devel | |
job_function_exclude_ids |
array | Job function IDs to exclude (optional). Valid IDs: 1-28 as listed above | |
seniority_include_ids |
array | Seniority level IDs to include (optional). Valid IDs: 2 (Manager), 3 (Director), 4 (VP), 5 (CXO), 6 (Unpaid), 7 (Training), 8 (Senior), 9 (Owner), 10 (Entry), 11 (Partner). Example: [10, 7] for Entry and Training | |
seniority_exclude_ids |
array | Seniority level IDs to exclude (optional). Valid IDs: 2-11 as listed above | |
contacts_per_company_limit |
integer | Maximum number of contacts to target per company (optional). Example: 20 |
create_g2_intent_linkedin_native_dynamic_audience
Writes
Create a **G2 Intent - LinkedIn Native (Dynamic)** audience (platform `customAudienceType=DYNAMIC_G2`).
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required, max 50 characters). |
intent_days |
integer | required | Days to look back for G2 intent signals (required, 1-365). |
buying_stages |
array | Buying stages to target. The platform REQUIRES at least one; if the user did not specify, ASK them before calling — do NOT default. | |
employees |
array | LinkedIn employee count ranges for audience targeting. Valid values: 1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, +10001. Example: ['201-500', '501-1000'] | |
revenues |
array | LinkedIn revenue ranges for audience targeting. Valid values: Under $1M, $1M-$10M, $10M-$100M, $100M-$1B, $1B+. Example: ['$1M-$10M', '$10M-$100M'] | |
company_names |
array | Free-text company names to target (resolved server-side to LinkedIn company IDs). Example: ['Metadata', 'Google', 'Salesforce'] | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
job_titles |
array | Free-text job titles (resolved to LinkedIn job-title IDs). Example: ['Software Engineer', 'Product Manager'] | |
skills |
array | Free-text professional skills (resolved to LinkedIn skill IDs). Example: ['HubSpot', 'Salesforce', 'Python'] |
create_g2_intent_static_audience
Writes
Create a **G2 Intent (Static)** audience (platform `customAudienceType=G2_ABM_CONTACT`).
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required, max 50 characters). |
intent_days |
integer | required | Days to look back for G2 intent signals (required, 1-365). |
buying_stages |
array | Buying stages to target. The platform REQUIRES at least one; if the user did not specify, ASK them before calling — do NOT default. | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
location_state_ids |
array | State IDs for geographic targeting (optional). Valid US State IDs: 1 (Alabama), 2 (Alaska), 3 (Arizona), 4 (Arkansas), 5 (California), 6 (Colorado), 7 (Connecticut), 8 (Delaware), 9 (Florida), 10 (Georgia), 11 (Hawaii), 12 (Idaho), 13 (Illinois), 14 (Indiana), 15 (Iowa), 16 (Kansas), 17 (Kentucky), | |
job_title_includes |
array | Free text keywords for job titles to include (optional). Example: ['Software Engineer', 'Manager'] | |
job_title_excludes |
array | Free text keywords for job titles to exclude (optional). Example: ['Senior', 'Lead'] | |
job_function_include_ids |
array | Job function IDs to include (optional). Valid IDs: 1 (Marketing), 2 (Sales), 3 (Customer Service), 4 (Finance), 5 (HR), 6 (PR), 7 (Media), 8 (Design), 9 (Engineering), 10 (Operations), 11 (Legal), 12 (Education), 13 (Health), 14 (Real Estate), 15 (Accounting), 16 (Administrative), 17 (Business Devel | |
job_function_exclude_ids |
array | Job function IDs to exclude (optional). Valid IDs: 1-28 as listed above | |
seniority_include_ids |
array | Seniority level IDs to include (optional). Valid IDs: 2 (Manager), 3 (Director), 4 (VP), 5 (CXO), 6 (Unpaid), 7 (Training), 8 (Senior), 9 (Owner), 10 (Entry), 11 (Partner). Example: [10, 7] for Entry and Training | |
seniority_exclude_ids |
array | Seniority level IDs to exclude (optional). Valid IDs: 2-11 as listed above | |
contacts_per_company_limit |
integer | Maximum number of contacts to target per company (optional). Example: 20 |
create_linkedin_native_criteria_audience
Writes
Create a LinkedIn native criteria audience using LinkedIn-supported targeting criteria.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required, must be shorter than 50 characters). |
job_titles |
array | Free-text job title strings for targeting. Example: ['Software Engineer', 'Product Manager'] | |
skills |
array | Free-text skill strings for targeting. Example: ['HubSpot', 'Salesforce', 'Python'] | |
company_names |
array | Free-text company name strings for targeting. Example: ['Metadata', 'Google', 'Salesforce'] | |
employees |
array | LinkedIn employee count ranges for audience targeting. Valid values: 1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, +10001. Example: ['201-500', '501-1000'] | |
revenues |
array | LinkedIn revenue ranges for audience targeting. Valid values: Under $1M, $1M-$10M, $10M-$100M, $100M-$1B, $1B+. Example: ['$1M-$10M', '$10M-$100M'] | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
estimate_only |
boolean | If true, do NOT create the audience — only estimate its size and return the expected contact count. Use this when the user wants to preview LinkedIn audience size before committing. Defaults to false (audience is created). |
create_marketing_automation_contacts_audience
Writes
Create a Marketing-Automation-contacts custom audience (platform customAudienceType MA_CONTACTS_STATIC or MA_CONTACTS_DYNAMIC) from a provider library list.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
custom_audience_name |
string | required | Audience display name. Must not contain '/'. |
library_list_id |
integer | required | The library list id from list_marketing_automation_lists. |
provider |
string | required | The Marketing-Automation provider that owns the list. one of: HUBSPOT, MARKETO |
variant |
string | required | STATIC = snapshot (MA_CONTACTS_STATIC); DYNAMIC = refreshing (MA_CONTACTS_DYNAMIC). Ask the user if unspecified. one of: STATIC, DYNAMIC |
list_name |
string | Optional: the source list's own name, from list_marketing_automation_lists. |
create_reddit_target_group
Writes
Create a new Reddit target group with name and targeting criteria (communities, interests, keywords, location).
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | The name for the new Reddit target group. Must be unique, descriptive, and UNDER 50 characters — the platform rejects 50+ character names with a 400. |
targeting |
object | required | Complete Reddit targeting configuration with include/exclude rules. LOCATION must be the first include block. All references must come from search_reddit_criteria. |
create_retargeting_audience
Writes
Create a new retargeting audience on the Metadata platform from native channel audiences.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
audience_data |
object | required | Complete audience object from get_retargeting_audiences response. Should contain: id, name, type, subtype, channel, matchCount, externalAccountId, and other relevant fields. |
create_salesforce_contacts_audience
Writes
Create a Salesforce-contacts custom audience (platform customAudienceType SFDC_CONTACTS_STATIC or SFDC_CONTACTS_DYNAMIC) from a Salesforce mixed-criteria.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience display name. |
criteria_id |
integer | required | The Salesforce mixed-criteria id from list_salesforce_mixed_criteria. |
variant |
string | required | STATIC = snapshot (SFDC_CONTACTS_STATIC); DYNAMIC = refreshing (SFDC_CONTACTS_DYNAMIC). Ask the user if unspecified. one of: STATIC, DYNAMIC |
create_segment
Writes
Create a new segment with insights criteria.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Descriptive, unique segment name. |
criteria |
object | required | Criteria object with operator and match fields. |
create_target_group
Writes
Create a new target group with name and targeting criteria.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | The name for the new target group. Must be unique, descriptive, and UNDER 50 characters — the platform rejects 50+ character names with a 400. |
channel |
string | required | The advertising channel for the target group. Only LINKEDIN is currently supported. one of: LINKEDIN |
targeting |
object | Complete targeting configuration with include/exclude rules... |
create_technographic_audience
Writes
Creates B2B audiences based on technology stack, software usage, and firmographic attributes.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Audience name (required). Maximum 50 characters. |
technologies |
array | required | Array of technology names to target (required). Example: ['Salesforce', 'HubSpot', 'Marketo'] |
industries |
array | Industry IDs for firmographic/technographic filtering (optional). Valid IDs: 1=Defense & Space, 3=Computer Hardware, 4=Computer Software, 5=Computer Networking, 6=Internet, 7=Semiconductors, 8=Telecommunications, 9=Law Practice, 10=Legal Services, 11=Management Consulting, 12=Biotechnology, 13=Medic | |
employees |
array | Employee count ranges for firmographic filtering (optional). Valid enum values: LESS_THAN_10 (0-9), FROM_10_TO_50 (10-49), FROM_50_TO_200 (50-199), FROM_200_TO_500 (200-499), FROM_500_TO_1000 (500-999), FROM_1000_TO_5000 (1,000-4,999), FROM_5000_TO_10000 (5,000-9,999), OVER_10000 (10,000+). Example: | |
revenue |
array | Revenue ranges for firmographic filtering (optional). Valid enum values: LESS_THAN_1M ($0-$1M), FROM_1M_TO_10M ($1M-$10M), FROM_10M_TO_50M ($10M-$50M), FROM_50M_TO_100M ($50M-$100M), FROM_100M_TO_200M ($100M-$200M), FROM_200M_TO_500M ($200M-$500M), FROM_500M_TO_1000M ($500M-$1B), OVER_1000M ($1B+). | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
location_state_ids |
array | State IDs for geographic targeting (optional). Valid US State IDs: 1 (Alabama), 2 (Alaska), 3 (Arizona), 4 (Arkansas), 5 (California), 6 (Colorado), 7 (Connecticut), 8 (Delaware), 9 (Florida), 10 (Georgia), 11 (Hawaii), 12 (Idaho), 13 (Illinois), 14 (Indiana), 15 (Iowa), 16 (Kansas), 17 (Kentucky), | |
job_title_includes |
array | Free text keywords for job titles to include (optional). Example: ['Software Engineer', 'Manager'] | |
job_title_excludes |
array | Free text keywords for job titles to exclude (optional). Example: ['Senior', 'Lead'] | |
job_function_include_ids |
array | Job function IDs to include (optional). Valid IDs: 1 (Marketing), 2 (Sales), 3 (Customer Service), 4 (Finance), 5 (HR), 6 (PR), 7 (Media), 8 (Design), 9 (Engineering), 10 (Operations), 11 (Legal), 12 (Education), 13 (Health), 14 (Real Estate), 15 (Accounting), 16 (Administrative), 17 (Business Devel | |
job_function_exclude_ids |
array | Job function IDs to exclude (optional). Valid IDs: 1-28 as listed above | |
seniority_include_ids |
array | Seniority level IDs to include (optional). Valid IDs: 2 (Manager), 3 (Director), 4 (VP), 5 (CXO), 6 (Unpaid), 7 (Training), 8 (Senior), 9 (Owner), 10 (Entry), 11 (Partner). Example: [10, 7] for Entry and Training | |
seniority_exclude_ids |
array | Seniority level IDs to exclude (optional). Valid IDs: 2-11 as listed above | |
contacts_per_company_limit |
integer | Maximum number of contacts to target per company (optional). Example: 20 | |
estimate_only |
boolean | If true, do NOT create the audience — only estimate its size and return the counts. Use this when the user wants to preview how many companies/contacts match the criteria before committing. Defaults to false (audience is created). |
estimate_target_group
Read
Estimate audience size for target group criteria before creating.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
channel |
string | required | Channel to estimate for. LINKEDIN (default) takes criteria ids from search_target_group_criteria; REDDIT takes them from search_reddit_criteria and is estimated the same way (PRD-31759). Omit for LinkedIn. one of: LINKEDIN, REDDIT |
targeting |
object | Complete targeting configuration with include/exclude rules. Structure: { "include": [ { "criteria": [{"type": str, "data": object}], "audiences": [] } ], "exclude": {"criteria": [], "audiences": []} } All criteria IDs/references must come from search_target_group_criteria tool. |
find_lookalike_companies
Read
Find companies similar to one or more seed domains (for audience expansion).
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
domains |
array | required | Seed company domains, e.g. ['metadata.io']. |
limit |
integer | Max lookalikes to return (default 10). |
get_abm_account_lists
Read
Get account lists from the Metadata ABM Lists library.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
filename |
string | Filter by account list filename (supports partial matching) | |
page |
integer | Page number for pagination (0-based) | |
size |
integer | Number of results per page | |
sort |
string | Sort criteria (e.g., 'createdDate,desc', 'name,asc', 'accountsCount,desc') | |
status |
string | Filter by status (e.g., READY, PROCESSING, ERROR) | |
type |
string | Filter by list type (e.g., CSV, WEBSITE_RETARGETING) |
get_audience_details
Read
Custom audience information from Metadata platform: configurations, targeting criteria, size metrics, performance.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
page |
integer | Page number for pagination (0-based) | |
size |
integer | Number of results per page | |
sort |
string | Sort criteria (e.g., 'creationDate,desc', 'name,asc', 'audienceSize,desc') | |
name |
string | required | Filter by audience name (supports partial matching) |
get_deep_audience_details
Read
Get detailed information about audiences including criteria and advanced configuration.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
audience_ids |
array | required | Array of audience IDs to retrieve detailed information for. Example: [42828, 42829, 42831] |
get_intent_topics
Read
Get available intent topics for BOMBOORA audience creation.
Returns data. Safe to call freely.
Takes no arguments.
get_matched_audiences
Read
Get matched audiences (custom audiences) from the Campaign Wizard based on audience type and targeting options.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
type |
array | required | Array of audience targeting types to filter by. If omitted, searches all targeting types. |
channel |
string | The advertising channel to filter campaigns by one of: LINKEDIN, FACEBOOK, GOOGLE_ADS, INSTAGRAM, TWITTER, YOUTUBE, REDDIT, MICROSOFT_ADS |
|
page |
integer | Page number for pagination (0-indexed) | |
sort |
string | Sort field and direction in format 'field,direction'. Common fields: createdDate. Direction: asc or desc. | |
size |
integer | Number of results per page |
get_retargeting_audiences
Read
Get all available retargeting audiences for a specific advertising channel.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
channel |
string | required | The advertising channel to fetch retargeting audiences for one of: GOOGLE_ADS, LINKEDIN, FACEBOOK |
get_segment_criteria
Read
Get full criteria object for a segment by ID or name.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
segment_id |
integer | Segment ID (fastest lookup). | |
segment_name |
string | Segment name (fuzzy matching, case-insensitive). |
list_marketing_automation_lists
Read
List a Marketing-Automation provider's contact library lists — the selectable source for creating a Marketing-Automation-contacts audience.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
provider |
string | required | The Marketing-Automation provider to list lists for. one of: HUBSPOT, MARKETO |
list_type |
string | Optional list-type filter. If omitted, the provider's own list types are queried and merged (HubSpot: STATIC_LIST + ACTIVE_LIST; Marketo: all three). one of: SMART_LIST, STATIC_LIST, ACTIVE_LIST |
|
name |
string | Optional list-name filter (partial match). |
list_salesforce_mixed_criteria
Read
List the account's saved Salesforce "mixed criteria" (contact-list criteria) — the selectable source for creating a Salesforce-contacts audience.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
qualified |
boolean | When true, keep only criteria whose generated filter matches qualified-signal fields. |
list_segments
Read
List pre-saved segments (reusable filter configurations).
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | Optional fuzzy search by name. | |
sort |
string | Sort format: field,direction. Default: name,asc |
list_target_groups
Read
List and search target groups in Metadata platform.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | Optional name filter for searching target groups (partial matching, case-insensitive). Example: 'engineer' matches 'Engineers EMEA', 'Senior Engineers', etc. | |
sort |
string | Sort criteria. Options: 'createdDate,desc' (newest first), 'createdDate,asc' (oldest first), 'name,asc' (A-Z), 'name,desc' (Z-A). Default: 'createdDate,desc' |
remove_audiences_from_campaign
Destructive
Remove specific audiences from one or more channels in an existing campaign.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the campaign |
channel_audiences |
object | required | Map of channel type to list of audience names to remove. Example: {"FACEBOOK": ["Audience A"], "LINKEDIN": ["Audience B"]} |
remove_target_groups_from_campaign
Destructive
Remove targeting groups from one or more channels in an existing campaign.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the campaign |
channel_target_groups |
object | required | Map of channel type to list of targeting group names to remove. Example: {"LINKEDIN": ["Tech Decision Makers"]} |
retrieve_target_group_by_id
Read
Get detailed target group information by ID.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
target_group_id |
integer | required | The unique ID of the target group to retrieve. Must be a positive integer. If you don't have the ID, use list_target_groups to search by name first. |
search_reddit_criteria
Read
Get available Reddit targeting criteria and their reference values (externalId + name) for target group creation.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
criteria_type |
string | required | Type of Reddit criteria to search. communities/interests/keywords require search_terms; locations returns countries/states (search_terms optional). one of: communities, interests, keywords, locations |
search_terms |
array | Search keywords (min 2 characters). Required for communities/interests/keywords. Example: ['technology'] |
search_target_group_criteria
Read
Get available criteria and their supported values (names and IDs) for target group creation/updates.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
channel |
string | required | The advertising channel for which to retrieve criteria. Only LINKEDIN is supported. one of: LINKEDIN |
criteria_type |
string | Type of targeting criteria to retrieve or search. List-based (returns predefined options): - age-ranges: Age range segments - company-categories: Company type classifications - company-growth-rates: Company growth classifications - revenues: Company revenue ranges - employees: Employee count ranges one of: age-ranges, company-categories, company-growth-rates, revenues, employees, industry-taxonomy, jobFunctions, seniority, followed-companies, locations, job-title, member-groups |
|
search_terms |
array | Array of search keywords for search-based criteria (job-title, member-groups, interests, traits). Example: ['engineer', 'developer'] | |
reference_type |
string | Specific reference type for search operations (LinkedIn only). Auto-determined from criteria_type and channel if not provided. one of: LINKEDIN_JOB_TITLES, LINKEDIN_MEMBER_GROUPS, BUYER_INTENT_INDUSTRIES |
|
exact_match |
boolean | Whether to require exact matches in search (default: true). Set to false for broader/fuzzy matching. |
unarchive_audience
Writes
Unarchive (restore) a previously archived custom audience on the Metadata platform.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
custom_audience_id |
integer | The numeric ID of the custom audience to unarchive. | |
audience_name |
string | The name of the custom audience to unarchive. If provided without custom_audience_id, the tool will search for the audience by name to resolve the ID. |
update_target_group
Destructive
Update existing target group with new name and/or targeting criteria.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
target_group_id |
integer | required | The unique ID of the target group to update. Must be a positive integer. Use list_target_groups to find the ID by name. |
name |
string | required | REQUIRED: Target group name. CRITICAL - This is a PUT request so you MUST provide the name even if not changing it. Use retrieve_target_group_by_id to get the current name if you don't have it. |
targeting |
object | Updated targeting configuration (optional). Structure must match create_target_group format. Only update criteria that have isModifiable=true in the current configuration. All criteria IDs/references must come from search_target_group_criteria tool. REQUIRED: Must estimate this targeting first and v |
upload_account_list_csv_audience
Writes
Upload a list of company ACCOUNTS (name + website) as an Account List CSV and create a FIRMOGRAPHIC_INCLUDE audience on the Metadata platform, optionally overlaid with platform-…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
audience_name |
string | required | Name for the new audience (required). |
companies |
object | Inline map of company names to website URLs (optional). Example: {"Acme Corp": "https://acme.com", "Globex": "https://globex.com"}. MUTUALLY EXCLUSIVE with `companies_source_csv_url` — provide exactly one. | |
companies_source_csv_url |
string | Public URL of a CSV file with header EXACTLY `companyname,companywebsite` (case-insensitive). The MCP server downloads, validates, and parses the file. Use this when the user attached a CSV to the chat — the URL is surfaced via `AudienceBrief.attached_file_urls`. MUTUALLY EXCLUSIVE with `companies`. | |
location_country_ids |
array | Country IDs for geographic targeting (optional). Valid IDs: 1 (Afghanistan), 2 (Albania), 3 (Algeria), 4 (American Samoa), 5 (Andorra), 6 (Angola), 7 (Anguilla), 8 (Antarctica), 9 (Antigua and Barbuda), 10 (Argentina), 11 (Armenia), 12 (Aruba), 13 (Australia), 14 (Austria), 15 (Azerbaijan), 16 (Baha | |
location_state_ids |
array | State IDs for geographic targeting (optional). Valid US State IDs: 1 (Alabama), 2 (Alaska), 3 (Arizona), 4 (Arkansas), 5 (California), 6 (Colorado), 7 (Connecticut), 8 (Delaware), 9 (Florida), 10 (Georgia), 11 (Hawaii), 12 (Idaho), 13 (Illinois), 14 (Indiana), 15 (Iowa), 16 (Kansas), 17 (Kentucky), | |
job_title_includes |
array | Free text keywords for job titles to include (optional). Example: ['Software Engineer', 'Manager'] | |
job_title_excludes |
array | Free text keywords for job titles to exclude (optional). Example: ['Senior', 'Lead'] | |
job_function_include_ids |
array | Job function IDs to include (optional). Valid IDs: 1 (Marketing), 2 (Sales), 3 (Customer Service), 4 (Finance), 5 (HR), 6 (PR), 7 (Media), 8 (Design), 9 (Engineering), 10 (Operations), 11 (Legal), 12 (Education), 13 (Health), 14 (Real Estate), 15 (Accounting), 16 (Administrative), 17 (Business Devel | |
job_function_exclude_ids |
array | Job function IDs to exclude (optional). Valid IDs: 1-28 as listed above | |
seniority_include_ids |
array | Seniority level IDs to include (optional). Valid IDs: 2 (Manager), 3 (Director), 4 (VP), 5 (CXO), 6 (Unpaid), 7 (Training), 8 (Senior), 9 (Owner), 10 (Entry), 11 (Partner). Example: [10, 7] for Entry and Training | |
seniority_exclude_ids |
array | Seniority level IDs to exclude (optional). Valid IDs: 2-11 as listed above | |
contacts_per_company_limit |
integer | Maximum number of contacts to target per company (optional). Example: 20 |
upload_contact_list_csv_audience
Writes
Upload a list of individual CONTACTS (people) as a Contact List CSV and create a CONTACT_LIST audience on the Metadata platform.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
audience_name |
string | required | Name for the new contact list audience (required). |
contacts |
array | Inline array of contact objects (optional). Each object represents one person/contact with fields: email (required), firstname, lastname, jobtitle, employeecompany, country, appleidfa, googleaid. Minimum 300 contacts, maximum 300,000 contacts. MUTUALLY EXCLUSIVE with `contacts_source_csv_url` — prov | |
contacts_source_csv_url |
string | Public URL of a contacts CSV file with header EXACTLY `email,firstname,lastname,jobtitle,employeecompany,country,appleidfa,googleaid` (case-insensitive). The MCP server downloads, validates, and uploads the file. Use this when the user attached a CSV to the chat — the URL is surfaced via `AudienceBr |
Campaigns and budgets 27
add_and_edit_campaign_elements
Destructive
Add new elements and edit existing properties of a **Precision Optimization (1×1×1 / METADATA)** marketing campaign.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_data |
object | required | Campaign data with fields to edit and/or elements to add |
add_and_edit_native_campaign_elements
Destructive
Add elements to, and edit campaign-level fields of, an existing **Channel-First / Native (N×N×N)** campaign — the one built with `create_native_structure_campaign` (channel.stru…
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_data |
object | required | Native (N×N×N) campaign edit payload: campaignId + optional campaign-level fields + per-channel `containers[]` (append) and optional `target_groups[]`. |
check_campaign_launch_readiness
Read
Check whether a draft campaign is ready to launch, per channel.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The wizard campaign ID to check launch readiness for |
connect_channel
Writes
Get the OAuth redirect URL to connect a specific advertising channel to the Metadata platform.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
channel |
string | required | The channel to connect. Must be one of: linkedin, meta (for Facebook/Instagram), google, reddit, x (for Twitter) one of: linkedin, meta, google, reddit, x, facebook, instagram, twitter |
acknowledge_data_access |
boolean | Set true to confirm the person you are acting for asked to connect this channel. The response is an OAuth authorization URL that starts a credential grant into their Metadata account. Without this the call is refused. |
create_budget_group
Writes
Create or update advertising budget and spending allocation.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
data |
object | required | Budget group configuration |
create_campaign
Writes
Create multi-channel advertising campaigns for LinkedIn, Facebook, Instagram, Google Ads, Reddit, and Microsoft Ads using the platform's "Precision Optimization" (1×1×1) model —…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_data |
object | required | Complete campaign configuration data |
create_native_structure_campaign
Writes
Create a multi-channel campaign using the platform's "Channel First Structure" (N×N×N) — the UI also labels it "Native Structure" / "Platform-First Structure".
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_data |
object | required | Complete Channel First / Native Structure (N×N×N) campaign configuration. Each channel takes a `containers` list; each container groups one audience with an `ad_offers` list of {ad, offer} pairs. |
create_update_offer
Destructive
Create or update Lead Gen or Landing Page offers in Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
offer_type |
string | required | Type of offer to create one of: Lead Gen, Landing Page |
data |
object | required | Offer configuration data. Required fields depend on offer_type and channel - see description for details. |
disconnect_channel
Destructive
Disconnect a specific advertising channel from the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
channel |
string | required | The channel to disconnect. Must be one of: reddit, facebook, linkedin, twitter, google, instagram one of: reddit, facebook, linkedin, twitter, google, instagram |
duplicate_campaign
Writes
Duplicate (copy) an existing campaign into a NEW DRAFT campaign.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The wizard/campaign ID of the campaign to duplicate. Must be in status Launched, Launching, Editing, or Draft. |
name |
string | Name for the new (copied) campaign. Must be unique on the account and <= 255 chars. Omit to auto-generate '<original name>_copy_<timestamp>'. |
find_offer_url
Read
Locate the BEST specific landing-page URL for a marketing offer on a given domain.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company website URL or domain. Examples: 'snowflake.com', 'www.servicenow.com' |
offer_type |
string | required | Type of offer content to locate. Drives which paths are probed and which keywords score higher. one of: case_study, demo, whitepaper, roi_calculator, guide, report, ebook, webinar |
topic |
string | Optional topic keywords to bias scoring (e.g., 'fintech', 'servicenow integration', 'data warehousing'). Improves hit rate when the domain has many offers of the same type. |
get_budget_group
Read
Get configuration and settings for a budget group (NOT performance data).
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | The name of the budget group to search for. Example: 'Brand' |
get_campaign_by_wizard_id
Read
Get full campaign details by its wizard campaign ID, including channels, audiences, ads, and budget configuration.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The wizard campaign ID to retrieve details for |
get_campaign_targeting_locations
Read
Where a campaign actually TARGETS, by channel, with the platform's location ids resolved to country and state names.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_ids |
array | Wizard campaign ids to read. Omit to scan the account. | |
country_names |
array | Filter to campaigns targeting these countries, e.g. ["Germany", "Austria"]. | |
max_campaigns |
integer | Cap on campaigns read when scanning (default 25, max 100). |
get_offer
Read
Get offer information by name or list all offers.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | The name of the offer to search for. Example: 'AI Marketing Audit Demo'. If omitted, returns a list of all available offers. | |
offer_id |
integer | Exact offer id. PREFER THIS over `name` whenever you have an id: a name lookup returns the first search match, so offers sharing a prefix (a template name plus a random suffix, which is how offers get named here) can resolve to the wrong one silently. Takes precedence when both are given. |
launch_campaign
Destructive
LAUNCHES REAL MARKETING CAMPAIGNS WITH REAL BUDGET SPEND 🚨 KEYWORDS: launch, start, activate, go live, campaign, begin, advertising, spend, marketing PREREQUISITE: Before runni…
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the draft campaign to launch |
list_budget_groups
Read
Browse and list all available budget groups in the Metadata platform with customizable sorting.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
sort_by |
string | Field to sort budget groups by. Default: totalActiveExperiments one of: totalActiveExperiments, monthlyCap, averageDailyBudgetPerExperiment, spent, totalBudget, endDate, startDate, leads, cpl |
|
sort_order |
string | Sort order - 'asc' (ascending) or 'desc' (descending). Default: desc one of: asc, desc |
|
page |
integer | Page number for pagination (0-based). Default: 0 | |
size |
integer | Number of results per page. Default: 10 |
list_wizard_campaigns
Read
List wizard (Metadata-native) campaigns for the current account with pagination, sorting, and experiment-status filtering.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
page |
integer | 0-based page index. Default: 0 | |
size |
integer | Results per page. Default: 25 | |
sort_by |
string | Field to sort by. Default: createdDate one of: createdDate, startDate, endDate, name, budget, spent, leads, cpl, cpc, ctr, impressions, clicks |
|
sort_order |
string | Sort order. Default: desc one of: asc, desc |
|
status |
string | Campaign-level status filter. Comma-separated subset of Draft, Launched, Finished. Omit to include all three. Combine with experiment_statuses to mirror the UI tabs (e.g. Active tab = status=Launched + experiment_statuses=Active,WithoutSpend). | |
experiment_statuses |
string | Experiment-level status filter. Comma-separated subset of Active, WithoutSpend, Paused, Completed, Failed. Omit to include all five. | |
visibility |
string | Optional: filter by campaign visibility. Omit to include all. one of: VISIBLE, ARCHIVED |
|
name |
string | Optional: server-side name substring filter. |
manage_campaign
Destructive
Manage a campaign by pausing or restarting it.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the campaign to manage |
action |
string | required | The action to perform: 'pause' to stop the campaign, 'restart' to resume it one of: pause, restart |
manage_experiment
Destructive
Pause or restart a whole experiment (a launched channel campaign inside a wizard campaign).
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
experiment_id |
integer | required | The experiment ID to pause or restart (experimentId from search_experiments). |
action |
string | required | The action to perform: 'pause' to stop the experiment, 'restart' to resume it one of: pause, restart |
confirm_budget_impact |
boolean | Restart only. Set true ONLY after the user explicitly confirmed the budget-group impact returned by a previous manage_experiment call with status='requires_confirmation'. | |
auto_pause_ignore_historical_data |
boolean | Restart only. When the experiment was auto-paused for low performance, true tells the optimizer to ignore the historical performance data that caused the pause. |
remove_channels_from_campaign
Destructive
Disable one or more entire channels from an existing campaign.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the campaign |
channels |
array | required | List of channels to disable from the campaign. Example: ["FACEBOOK", "GOOGLE_ADS"] |
remove_offers_from_campaign
Destructive
Remove offers — Lead Gen forms OR Landing Pages — from one or more channels in an existing campaign.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the campaign |
channel_offers |
object | required | Map of channel type to list of offer names (Lead Gen form or Landing Page) to remove. Example: {"FACEBOOK": ["Demo Form"], "GOOGLE_ADS": ["Pricing LP"]} |
search_campaigns_by_names
Read
Search for campaigns by name to get campaign details, IDs, and status.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_names |
array | required | Array of campaign names or partial names to search for (case-insensitive, partial matching) |
search_experiment_recipes
Read
Find proven CAMPAIGN CONFIGURATIONS to build from — combinations of channel, ad format, audience type, bid strategy and budget band that have run together successfully across mu…
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
query |
string | required | Natural-language description of the campaign you are building, e.g. "lead gen campaign targeting IT decision makers", "top of funnel awareness push for a new product launch". |
channel |
any | Optional exact filter — "linkedin", "facebook", "google_ads", "instagram". Omit to search every channel. | |
ad_format |
any | Optional exact filter — "image", "video", "document", "carousel", "text". | |
audience_type |
any | Optional exact filter, e.g. "firmographic_include", "linkedin_retargeting", "native_targeting_dynamic". | |
bid_strategy |
any | Optional exact filter, e.g. "auto_bid", "manual_bid", "metadata_bid_agent". | |
num_results |
integer | How many recipes to return (default 5). |
search_experiments
Read
Search for experiments by name, status, and budget group with flexible filtering.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
search_name |
string | The experiment or campaign name to search for (partial, case-insensitive matching). Optional - omit to skip name filtering. | |
budget_group_ids |
array | Optional array of budget group IDs to filter experiments. Only returns experiments that belong to these budget groups. | |
launched_experiment_statuses |
array | Optional array of experiment statuses to filter by. Valid values: Active, WithoutSpend, Paused, Completed, Failed, Disconnected | |
page |
integer | Page number for pagination (default: 0) | |
size |
integer | Number of results per page (default: 5) | |
sort |
string | Sort criteria in format 'field,direction' (e.g., 'name,asc') |
update_experiments_daily_budgets
Destructive
Update daily budget allocations for one or more experiments in the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
budgets |
object | required | Dictionary mapping experiment IDs to new daily budget values. Keys are experiment IDs (integers or strings), values are budget amounts (numbers or strings with comma/dot separators). Example: {'12345': 100.50, '12346': '150,75'} |
update_reddit_channel_settings
Destructive
Update the Reddit channel settings of an existing DRAFT wizard campaign: native objective, allow comments, placements (feed/conversations), conversion pixel, and (for manual-bid…
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the wizard campaign |
objective |
string | Reddit native objective. IMPRESSIONS = Brand awareness and Reach; CLICKS = Traffic (the only objective allowed on Lead Gen campaigns); VIDEO_VIEWABLE_IMPRESSIONS_6S = Video Views 6s (video-only channels). one of: IMPRESSIONS, CLICKS, VIDEO_VIEWABLE_IMPRESSIONS_6S |
|
allow_comments |
boolean | Allow Redditors to comment on the promoted post. Platform default is true. | |
placements |
object | Where the ads serve. At least one placement must stay selected; conversations is forced off when the channel has video ads. | |
conversion_pixel_id |
string | Reddit conversion pixel id (created in Reddit Ads Manager). Empty string clears the pixel. | |
bid_amount |
number | Manual bid amount, applied only when the effective objective uses MANUAL_BID (IMPRESSIONS / Video Views). |
Ads and creative 27
archive_ad
Destructive
Archive (soft-delete) one or more ads on the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
ids |
array | required | Ad id(s) to archive. At least one integer required; pass multiple to archive in bulk. |
create_update_carousel_ad
Destructive
Create OR update a CAROUSEL ad on Reddit (Reddit only).
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
adName |
string | required | Ad name. Required, max 50 chars. |
headline |
string | required | Headline shared across all cards. Required, max 300. |
cards |
array | required | 2 to 6 carousel cards. Each card needs a distinct image (no duplicates). |
text |
string | Optional body text. Max 2000. | |
thumbnailLibraryId |
integer | Optional thumbnail image library id. | |
completionStatus |
string | DRAFT (default) persists locally without publishing; COMPLETED finalizes the ad. one of: DRAFT, COMPLETED |
|
id |
integer | Include to UPDATE an existing carousel ad; omit to CREATE. |
create_update_convo_ad
Destructive
Create or update a LinkedIn Conversation Ad ("convo ad") — a branching in-message chat where each step contains a message bubble and a list of button actions that drive the conv…
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
id |
integer | Existing convo ad ID — include to UPDATE; omit to CREATE. | |
name |
string | required | Ad name in the platform library (max 50 chars). |
senderId |
string | required | LinkedIn sender ID. MUST come from get_linkedin_senders. |
senderName |
string | required | Display name matching senderId from get_linkedin_senders. |
headlineText |
string | required | Subject line shown above the message thread. |
bannerCreativeLibraryId |
integer | Optional: imageLibraryId of the banner image. Upload first via upload_image_creative. | |
completionStatus |
string | Defaults to DRAFT. one of: DRAFT, COMPLETED |
|
flowId |
integer | LinkedIn convo flow version. Defaults to 7 — keep the default unless told otherwise. | |
templateId |
integer | LinkedIn convo template ID. Defaults to 1 — keep the default unless told otherwise. | |
steps |
array | required | Ordered list of conversation steps. MUST include stepId=1 as the entry. |
create_update_document_ad
Destructive
Create a new or update an existing LinkedIn Document Ad on the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
id |
integer | Existing Document Ad ID — include to UPDATE; omit to CREATE. | |
name |
string | required | Ad name in the platform library (max 50 characters). |
libraryId |
integer | required | Integer id of the DOCUMENT creative in the library (contentType=DOCUMENT). Get it from search_library_creatives_by_name(contentTypes="DOCUMENT"). NOT an image/video id. |
headline |
string | required | Headline shown with the document (max 200 characters). |
text |
string | required | Introductory text shown with the document (max 3000 characters). |
ctaType |
string | Call-to-action. Defaults to UNLOCK_FULL_DOCUMENT (the document-gate CTA). one of: UNLOCK_FULL_DOCUMENT |
|
maxPreviewPages |
integer | How many document pages are previewable before the unlock gate. Defaults to 1. | |
completionStatus |
string | Defaults to DRAFT. Use COMPLETED only when every required field is final. one of: DRAFT, COMPLETED |
create_update_google_ads_ad
Destructive
Create a new or update an existing Google Ads text ad on the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
id |
integer | The existing ad ID to update. If omitted, a new ad will be created. | |
name |
string | required | The name/label for the ad in Metadata platform (max 50 characters) |
headlines |
array | required | List of headline texts for the Google Ads ad (minimum 3, maximum 15 headlines, each max 30 characters) |
descriptions |
array | required | List of description texts for the Google Ads ad (2 to 4 descriptions). CRITICAL #1 FAILURE MODE: each description MUST be ≤ 90 characters — this is enforced by maxLength schema validation AND by server-side truncation. Going over 90 means either (a) the call is rejected before it runs, or (b) the de |
create_update_image_ad
Destructive
Create OR update an IMAGE (or GIF) ad on Facebook, Instagram, LinkedIn, and/or Reddit.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
ads_data |
array | required | Array of IMAGE ads to create or update. Each item targets one or more of FB/IG/LinkedIn/Reddit; the platform creates one ad row per (ad, channel). |
create_update_linkedin_message_ad
Destructive
Create a new or update an existing LinkedIn Message Ad on the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
id |
integer | Existing Message Ad ID — include to UPDATE; omit to CREATE. | |
name |
string | required | Ad name in the platform library (max 50 characters). |
senderId |
string | required | LinkedIn sender ID. MUST come from get_linkedin_senders. Do not invent. |
senderName |
string | required | Display name matching senderId, also from get_linkedin_senders. |
headlineText |
string | required | Message subject line shown in the recipient's inbox (max 60 characters). |
messageText |
string | required | Message body (max 2000 characters). Supports LinkedIn personalization macros — ONLY %FIRSTNAME%, %LASTNAME%, %COMPANYNAME%, %JOBTITLE%, %INDUSTRY%. Any other %...% token is rejected by the platform validator. |
actionText |
string | required | Call-to-action button label (max 20 characters). |
bannerCreativeLibraryId |
integer | Optional: imageLibraryId of the banner image shown above the message. Upload the image first via upload_image_creative and pass the returned ID. Omit to skip the banner. | |
completionStatus |
string | Defaults to DRAFT. Use COMPLETED only when every required field is final. one of: DRAFT, COMPLETED |
create_update_microsoft_ads_ad
Destructive
Create a new or update an existing Microsoft Ads (Bing) text ad on the Metadata platform.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
id |
integer | The existing ad ID to update. If omitted, a new ad will be created. | |
name |
string | required | The name/label for the ad in Metadata platform (max 50 characters) |
headlines |
array | required | List of headline texts for the Microsoft Ads ad (minimum 3, maximum 15 headlines, each max 30 characters). Every headline must be DISTINCT — the platform rejects the ad if two share the same text — and must not contain '!'. |
descriptions |
array | required | List of description texts for the Microsoft Ads ad (2 to 4 descriptions — 2 is the platform minimum, a single-description ad is rejected). Each description MUST be 90 characters or fewer and MUST be distinct from the others. Count every character (incl. spaces/punctuation/emoji); target 70-85 chars |
create_update_video_ad
Destructive
Create OR update a VIDEO ad on Facebook, Instagram, LinkedIn, and/or Reddit.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
ads_data |
array | required | Array of VIDEO ads to create or update. Each item targets one or more of FB/IG/LinkedIn/Reddit; the platform creates one ad row per (ad, channel). |
edit_brand_creative
Destructive
Edit existing creative image using AI-powered editing while preserving brand consistency.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
image_source |
string | required | URL of the creative image to edit. Must be a valid accessible image URL (PNG, JPG, WebP). Can be a URL returned by a previous generation or edit. |
edit_instruction |
string | required | Natural language description of the desired edit(s). Can include multiple changes in one request. Examples: 'Replace the robot with a dashboard', 'Change headline to BOOST ROI and make CTA say GET STARTED', 'Add a +50% ROI badge in the corner' |
domain |
string | required | Company domain for brand context. Used to fetch brand DNA for consistency. Examples: 'metadata.io', 'bloomreach.com' |
fetch_creative_details
Read
Get detailed information for specific creative assets by their IDs.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
creative_id |
integer | creative id to be query |
fix_flexible_creative
Destructive
Apply a free-text AI edit to a flexible creative's BACKGROUND image and return the edited image URL.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
image_source |
string | required | URL of the background image to edit (PNG/JPG/WebP). Typically the flexible creative's current background. |
edit_instruction |
string | required | Natural-language description of the fix(es). Can combine several changes in one request. |
domain |
string | required | Company domain for brand context (e.g. 'metadata.io'). |
generate_brand_creative
Writes
Generate branded advertising images and designs using AI and company Brand DNA.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company domain to extract brand DNA from. Examples: 'docebo.com', 'metadata.io', 'bloomreach.com'. Do not include protocol (http/https). |
headline |
string | required | Primary headline text to display in the creative. Keep to 25 characters or fewer for optimal rendering (hard cap 40 — the image model truncates or garbles longer text). Used to select aligned reference ads and guide visual hierarchy. Examples: 'Boost ROI by 30%', 'AI-Powered Marketing', 'Drive More |
instructions |
string | required | Natural language instructions describing the desired creative. Will be enhanced with brand DNA patterns including proven layouts, CTAs, colors, and tones. Examples: 'Create a professional B2B ad with clean design', 'Generate announcement for new AI feature launch', 'Design case study visual with mod |
platform |
string | Target platform for the creative. Each platform has specific dimensions, text limits, and best practices that will be automatically applied. Default: 'linkedin' one of: linkedin, facebook, instagram, display, general |
|
include_logo |
boolean | Whether to include a logo overlay on the generated creative. Set to false to get the raw creative without any logo. Default: true | |
include_cta |
boolean | Whether to render a call-to-action (button or styled text link) in the creative. Set to false for surfaces that must not contain a CTA, e.g. stills that seed video ads, where the channel's ad unit provides the real CTA. Default: true | |
logo_position |
string | Force a specific logo position instead of using AI-recommended placement. If not provided, an AI model analyzes the creative to find the optimal position. one of: top-left, top-right, bottom-left, bottom-right |
|
logo_size_percent |
number | Logo width as a percentage of the image width (e.g., 15 means the logo occupies 15% of the image width). If not provided, the AI recommends an optimal size. Typical range: 10-30. | |
logo_url |
string | Optional direct URL to a logo image (e.g. the URL of a logo the user just uploaded in chat). When set, THIS logo is overlaid for this creative instead of the brand kit's logo or the one from Brandfetch. Use it when the user says things like 'use this logo' or 'use the logo I uploaded'. The uploaded | |
use_website_background |
boolean | Use the brand website's background color as the creative's dominant background; brand primary colors then appear as accents (CTA button, shapes, highlights). Default: true. Set false when the user wants a brand-colored or model-chosen background instead. Silently ignored when the brand kit has no re |
generate_brand_kit
Writes
Analyze a company's brand from their website and extract brand identity.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company website URL or domain |
brand_name |
string | Optional brand name override | |
sample_ad_urls |
array | Optional ad image URLs to analyze (max 5) | |
force_regenerate |
boolean | If True, regenerate brand kit even if one already exists. Default: False |
generate_flexible_brand_creative
Writes
Generate an EDITABLE, layered brand creative: a clean AI background scene (no baked text) plus AI-placed, editable text/CTA/logo layers.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company domain for brand DNA (e.g. 'metadata.io'). No protocol. |
instructions |
string | required | Natural-language direction for the background scene and overall creative (e.g. 'clean B2B scene for an AI analytics launch'). |
platform |
string | Target platform (sets the default aspect ratio). Default: 'linkedin'. one of: linkedin, facebook, instagram, reddit, display, general |
|
aspect_ratio |
string | Canvas shape, overriding the one 'platform' implies. Pass this whenever the user names a size or shape: '1:1' for square (e.g. 1080x1080), '16:9' for wide/landscape, '9:16' for a full-height story, '4:5' for portrait. Omit to keep the platform's default shape. one of: 1:1, 16:9, 9:16, 4:5 |
|
headline |
string | Headline copy to place as an editable layer. | |
subheadline |
string | Optional subheadline copy. | |
body |
string | Optional supporting body copy. Pass ONLY when the user explicitly asked for body copy — extra layers crowd the layout. | |
cta |
string | Optional call-to-action button text (e.g. 'Learn more'). | |
disclaimer |
string | Optional fine-print/disclaimer copy. Pass ONLY when the user explicitly asked for a disclaimer. | |
include_logo |
boolean | Add a brand logo layer (resolved from the brand kit). Default: true. |
get_ad_details
Read
Get complete details and configuration for one or more ads from the Metadata platform.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
ids |
object | required | Ad ID(s) to get details for. Can be: single integer (182124) or comma-separated string ('182124,182123'). |
get_brand_kit
Read
Retrieve current brand kit configuration for a company.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company website URL or domain. Examples: 'metadata.io', 'www.bloomreach.com', 'https://example.com' |
regenerate_flexible_background
Destructive
Regenerate ONLY the background scene of a flexible creative, keeping the editable text/logo layers untouched.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company domain for brand DNA (e.g. 'metadata.io'). No protocol. |
instructions |
string | required | Direction for the new background scene. |
platform |
string | Target platform (sets the default aspect ratio). Default: 'linkedin'. one of: linkedin, facebook, instagram, reddit, display, general |
|
aspect_ratio |
string | Pass the creative's own canvas.aspect_ratio so the new background keeps its shape. Omitting it on a non-default canvas reshapes the creative and the existing layers no longer fit. one of: 1:1, 16:9, 9:16, 4:5 |
|
image_source |
string | Optional URL of the current background to guide a same-style regeneration (image-to-image). Omit for a fresh scene. | |
background_hex |
string | Optional 6-digit hex to pin the dominant background color (e.g. '#0A2540'). |
remove_ad_from_campaign
Destructive
Remove specific ads (ad groups) from one or more channels in an existing campaign.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the campaign |
channel_ads |
object | required | Map of channel type to list of ad names to remove. Example: {"LINKEDIN": ["Ad A"], "FACEBOOK": ["Ad B"]} |
render_flexible_creative
Writes
Flatten a layered flexible-creative document into a final PNG (rendered from the SAME layout the editor shows) and upload it to the creatives library.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
design |
object | required | The layered creative document to flatten (canvas, background, layers, brand) — the same JSON the editor edits. |
name |
string | Optional library name for the rendered image. Omit it and one is derived from the doc as `<brand-domain>-<channel>-<width>x<height>.png`, which is normally what you want. Must end in a file extension. | |
upload_to_library |
boolean | Push the rendered PNG to the creatives library. Default: true. | |
archive_library_image_id |
string | Optional. The library image id this save supersedes (the creative's previous render). Archived on the platform ONLY after the new upload succeeds, so re-saving an editable creative retires the old PNG instead of piling up dead library images. Never affects an ad already built from it. |
search_ads_by_names
Read
Search for ads by name in the Metadata platform library, with pagination.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
ad_names |
array | required | Array of ad names or partial names to search for (case-insensitive, partial matching) |
page |
integer | Zero-based page index (default: 0). Page numbering starts at 0. | |
size |
integer | Results per page (default: 25, recommended max: 25). Larger windows blow LLM token budgets — only request more when the caller actually needs it. | |
sort |
string | Spring sort clause, e.g. 'createdDate,desc' (default), 'id,desc', or 'name,asc'. | |
status |
string | Which status bucket to return. 'active' (default) is the prior active-only behaviour. 'archived' returns ONLY archived (soft-deleted) ads, which is what you need to find an ad's id for unarchive_ad. 'all' returns both active and archived in one response. Maps to the platform's status query param sem one of: active, archived, all |
search_library_creatives_by_name
Read
Search or list creative assets in the library by name, across ALL content types — images, videos, GIFs and documents.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
creativeName |
string | Name or partial name of the creative to search for. Supports partial matching and is case-insensitive. Omit to list all creatives. | |
page |
integer | Zero-based page index (default: 0). | |
size |
integer | Results per page (default: 10, recommended max: 10). Larger windows blow LLM token budgets — only request more when the caller actually needs it. | |
contentTypes |
string | Filter by content types (comma-separated). Supported values: IMAGE,VIDEO,GIF,DOCUMENT. Example: IMAGE,VIDEO or IMAGE%2CVIDEO%2CGIF%2CDOCUMENT |
unarchive_ad
Writes
Unarchive (restore) one or more previously archived ads.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
ids |
array | required | Ad id(s) to unarchive. At least one integer required; pass multiple to restore in bulk. |
update_brand_kit
Destructive
Update existing brand kit with brand DNA parameters.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
company_url |
string | required | Company website URL or domain (e.g. 'ambient.ai'). |
long_description |
string | Company description for marketing use. | |
logo_url |
string | Direct URL to a single company logo image (back-compat; prefer logo_urls). Setting a permanent brand logo requires elevated Metadata permissions. | |
logo_urls |
array | One or more direct URLs to logo images to set as the brand's permanent logo(s). Each uploaded logo is automatically expanded into clean, persisted variants (transparent, high-res, and both a light and dark version when the mark is a single color) so generated creatives have multiple usable options. | |
remove_old_logos |
boolean | When true (default), replace the brand's existing logos with the provided ones; when false, append to them. | |
search_keywords |
array | SEO/search keywords for the brand. | |
website_background |
string | 6-digit hex color (e.g. '#FFFFFF') of the brand website's background. generate_brand_creative uses it as the default dominant background for ads (use_website_background). Set it when the user wants ads to match their site's background or the auto-detected value is wrong. | |
colors |
array | Legacy flat color list. Each: {hex (with #), type, name?}. | |
fonts |
array | Legacy flat font list. Each: {name, type}. | |
primary_colors |
array | Primary color palette. | |
accent_colors |
array | Accent color palette. | |
extended_palette |
array | Extended grayscale palette. | |
semantic_colors |
array | Semantic/status colors. | |
primary_font |
string | Primary font family name. | |
primary_font_usage |
string | Primary font usage description. | |
secondary_font |
string | Secondary/display font family name. | |
secondary_font_usage |
string | Secondary font usage description. | |
headline_font |
string | Headline font family. | |
headline_weight |
string | Headline font weight. | |
headline_size |
string | Headline font size range. | |
headline_case |
string | Headline text case rule. | |
headline_linespace |
string | Headline line spacing. | |
headline_letterspace |
string | Headline letter spacing. | |
eyebrow_font |
string | Eyebrow font family. | |
eyebrow_weight |
string | Eyebrow font weight. | |
eyebrow_case |
string | Eyebrow text case rule. | |
eyebrow_linespace |
string | Eyebrow line spacing. | |
eyebrow_letterspace |
string | Eyebrow letter spacing. | |
subtitle_font |
string | Subtitle font family. | |
subtitle_weight |
string | Subtitle font weight. | |
subtitle_linespace |
string | Subtitle line spacing. | |
subtitle_letterspace |
string | Subtitle letter spacing. | |
body_font |
string | Body text font family. | |
body_weight |
string | Body text font weight. | |
body_size |
string | Body text font size. | |
body_linespace |
string | Body text line spacing. | |
body_letterspace |
string | Body text letter spacing. | |
cta_font |
string | CTA/button font family. | |
cta_weight |
string | CTA/button font weight. | |
cta_size |
string | CTA/button font size. | |
cta_linespace |
string | CTA/button line spacing. | |
cta_letterspace |
string | CTA/button letter spacing. | |
logo_on_dark |
string | Logo color rule on dark backgrounds. | |
logo_on_light |
string | Logo color rule on light backgrounds. | |
logo_clear_space |
string | Logo clear space rule. | |
logo_misuse |
array | List of logo misuse rules. | |
button_shape |
string | Button shape description. | |
button_background |
string | Button background style. | |
button_text_color |
string | Button text color rule. | |
button_text_weight |
string | Button text weight. | |
button_text_case |
string | Button text case. | |
button_padding |
string | Button padding. | |
standard_ctas |
array | Standard CTA labels. | |
cta_placement |
string | CTA placement guidance. | |
tagline |
string | Primary brand tagline. | |
tagline_variants |
array | Alternative taglines. | |
tagline_placement |
string | Tagline placement guidance. | |
visual_motifs |
array | Brand visual motifs. | |
promotional_elements |
array | Promotional proof points. | |
tone |
string | Brand tone description. | |
value_propositions |
array | Core value propositions. | |
headline_formulas |
array | Headline writing patterns. | |
proof_points |
array | Evidence/social proof items. | |
product_names |
object | Product name mapping (e.g. {platform: 'X', vlm: 'Y'}). | |
content_hierarchy_order |
array | Content element ordering. | |
content_hierarchy_spacing |
string | Section spacing guidance. | |
content_hierarchy_text_max_width |
string | Max text block width. | |
photography_style |
string | Photography style description. | |
photography_subjects |
array | Recommended photo subjects. | |
photography_treatment |
string | Photo treatment rules. | |
photography_avoid |
string | Photography anti-patterns. | |
dos |
array | Brand 'do' rules. | |
donts |
array | Brand 'don't' rules. | |
primary_layouts |
array | Layout system definitions. | |
channel_linkedin |
object | LinkedIn channel config. | |
channel_facebook |
object | Facebook channel config. | |
channel_display |
object | Display ads channel config. |
update_meta_placements
Destructive
Set the channel-level Meta placement default of an existing DRAFT wizard campaign's Facebook or Instagram channel: automatic placements (Meta decides where ads serve) or a manua…
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the wizard campaign |
channel |
string | required | Which campaign channel to edit. Meta placements only exist on Facebook and Instagram channels. one of: FACEBOOK, INSTAGRAM |
mode |
string | required | AUTO = automatic placements (Meta decides, clears the manual set). MANUAL = serve only on the placements listed in `placements`. one of: AUTO, MANUAL |
placements |
array | Placement codes to serve on. Required when mode=MANUAL (at least one); ignored for AUTO. Companion rules apply — see the tool description. |
upload_image_creative
Writes
Upload images directly to Metadata platform library to create image creatives.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
images |
array | required | Array of image URLs to upload to platform |
names |
array | Optional library name per image, positional against `images`. Pass one whenever you know what the creative is: without it the name is taken from the URL, which for a generated creative is an opaque key like `brand_creative_20260814_211126_66d8a83e.png` and leaves the user unable to tell their creati |
upload_video_creative
Writes
Upload videos directly to the Metadata platform library to create video creatives.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
videos |
array | required | Array of video URLs to upload to the platform library. |
thumbnail_library_id |
integer | Optional existing imageLibraryId to attach as the video's platform thumbnail. |
Ad extensions 18
add_extensions_to_native_campaign
Writes
Attach existing library extensions (sitelinks, callouts, etc.) to a native-structure Google Ads / Microsoft Ads campaign, so they actually serve when the campaign launches.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The wizard campaign id. |
channel |
string | required | Search channel. Ad extensions are a search-channel-only concept. one of: GOOGLE_ADS, MICROSOFT_ADS |
extension_ids |
array | required | Internal library extension ids from list_extensions. These are the `id` field, NOT `externalId` (the ad platform's own id). |
create_google_business_logo_extension
Writes
Attach the business logo to a Google Ads text ad for brand recognition.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
image_library_id |
integer | required | |
business_name |
string | ||
domain_name |
string |
create_google_callout_extension
Writes
Add a short non-clickable selling-point snippet (callout) that appears beneath a Google Ads ad — short trust-builder phrases like "Free Shipping", "24/7 Support", "Money-Back Gu…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
callout_text |
string | required | Callout snippet. 1-25 characters. |
create_google_image_extension
Writes
Attach visual imagery (1-20 product / lifestyle shots) to a Google Ads text ad to lift click-through.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
image_library_ids |
array | required | 1-20 image-library IDs. |
alternative_text |
string | ||
display_text |
string | ||
destination_url |
string |
create_google_lead_form_extension
Writes
Add an inline lead-capture form attached to a Google Ads ad — prospects submit their email plus optional contact and work info without leaving the SERP.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
headline |
string | required | |
business_name |
string | required | |
description |
string | ||
email_lead_form_user_input_types |
array | required | |
contact_lead_form_user_input_types |
array | ||
work_lead_form_user_input_types |
array | ||
privacy_policy_url |
string | required | |
post_submit_headline |
string | required | |
post_submit_description |
string | required | |
post_submit_call_to_action_type |
string | required | one of: VISIT_SITE, DOWNLOAD, LEARN_MORE, SHOP_NOW |
url |
string | Optional thank-you-page URL. | |
call_to_action_type |
string | required | one of: APPLY_NOW, BOOK_NOW, CONTACT_US, DOWNLOAD, GET_INFO, GET_OFFER, GET_QUOTE, GET_STARTED, JOIN_NOW, LEARN_MORE, REGISTER, REQUEST_DEMO |
call_to_action_description |
string | required |
create_google_price_extension
Writes
Add a price-list shown beneath a Google Ads ad — 3-8 tiles, each with a plan/product name, a short description, a USD amount, and a billing unit.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
price_qualifier |
string | required | Price qualifier shown before the price. one of: UNSPECIFIED, FROM, UP_TO, AVERAGE |
price_offerings |
array | required | 3-8 price offerings. |
create_google_promotion_extension
Writes
Add a time-bound promotional offer (sale, discount, promo code) that shows under a Google Ads ad — flag a holiday occasion, pick the discount style (% off or $ off), optionally…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
occasion |
string | required | one of: NONE, BACK_TO_SCHOOL, BLACK_FRIDAY, BOXING_DAY, CARNIVAL, CHINESE_NEW_YEAR, CHRISTMAS, CYBER_MONDAY, DIWALI, EASTER, EID_AL_ADHA, EID_AL_FITR |
url |
string | required | |
item |
string | required | |
category_type |
string | required | one of: MONETARY, UP_TO_MONETARY, PERCENT, UP_TO_PERCENT |
category_amount |
number | USD amount; supply when category_type is MONETARY or UP_TO_MONETARY. | |
category_percent |
number | Percent (≤100); supply when category_type is PERCENT or UP_TO_PERCENT. | |
details_type |
string | required | one of: NONE, ON_ORDERS_OVER, PROMO_CODE |
details_promo_code |
string | Promo code; supply when details_type is PROMO_CODE. | |
details_amount |
number | Threshold USD amount; supply when details_type is ON_ORDERS_OVER. | |
start_date |
string | required | ISO-8601 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'". Future or present. |
end_date |
string | required | ISO-8601 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'". Future or present. |
create_google_sitelink_extension
Writes
Add an extra clickable shortcut (sitelink) that appears beneath a Google Ads ad — helpful deep-links like "See Pricing", "Book a Demo", or "Contact Sales" with two short descrip…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
url |
string | required | Destination URL the sitelink points to (non-blank). |
link_text |
string | required | Visible link text. 1-25 characters. |
description1 |
string | required | First description line. 1-35 characters. |
description2 |
string | required | Second description line. 1-35 characters. |
create_google_structured_snippet_extension
Writes
Add a labeled list of offerings (structured snippet) shown beneath a Google Ads ad — a category header plus 3-10 short items, e.g.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
header |
string | required | Snippet header. 1-25 characters. |
values |
array | required | 3-10 snippet values, each 1-25 characters. |
create_microsoft_business_logo_extension
Writes
Attach the business logo to a Microsoft Ads (Bing) text ad for brand recognition.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
image_library_id |
integer | required | |
business_name |
string | ||
domain_name |
string |
create_microsoft_callout_extension
Writes
Add a short non-clickable selling-point snippet (callout) that appears beneath a Microsoft Ads (Bing) ad — short trust-builder phrases like "Free Shipping", "24/7 Support", "Mon…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
callout_text |
string | required | Callout snippet. 1-25 characters. |
create_microsoft_image_extension
Writes
Attach visual imagery (1-20 product / lifestyle shots) to a Microsoft Ads (Bing) text ad to lift click-through.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
image_library_ids |
array | required | 1-20 image-library IDs. |
alternative_text |
string | ||
display_text |
string | ||
destination_url |
string |
create_microsoft_price_extension
Writes
Add a price-list shown beneath a Microsoft Ads (Bing) ad — 3-8 tiles, each with a plan/product name, a short description, a USD amount, and a billing unit.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
price_qualifier |
string | required | Price qualifier shown before the price. one of: UNSPECIFIED, FROM, UP_TO, AVERAGE |
price_offerings |
array | required | 3-8 price offerings. |
create_microsoft_promotion_extension
Writes
Add a time-bound promotional offer (sale, discount, promo code) that shows under a Microsoft Ads (Bing) ad — flag a holiday occasion, pick the discount style (% off or $ off), o…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
occasion |
string | required | one of: NONE, BACK_TO_SCHOOL, BLACK_FRIDAY, BOXING_DAY, CARNIVAL, CHINESE_NEW_YEAR, CHRISTMAS, CYBER_MONDAY, DIWALI, EASTER, EID_AL_ADHA, EID_AL_FITR |
url |
string | required | |
item |
string | required | |
category_type |
string | required | one of: MONETARY, UP_TO_MONETARY, PERCENT, UP_TO_PERCENT |
category_amount |
number | USD amount; supply when category_type is MONETARY or UP_TO_MONETARY. | |
category_percent |
number | Percent (≤100); supply when category_type is PERCENT or UP_TO_PERCENT. | |
details_type |
string | required | one of: NONE, ON_ORDERS_OVER, PROMO_CODE |
details_promo_code |
string | Promo code; supply when details_type is PROMO_CODE. | |
details_amount |
number | Threshold USD amount; supply when details_type is ON_ORDERS_OVER. | |
start_date |
string | required | ISO-8601 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'". Future or present. |
end_date |
string | required | ISO-8601 "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'". Future or present. |
create_microsoft_sitelink_extension
Writes
Add an extra clickable shortcut (sitelink) that appears beneath a Microsoft Ads (Bing) ad — helpful deep-links like "See Pricing", "Book a Demo", or "Contact Sales" with two sho…
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
url |
string | required | Destination URL the sitelink points to (non-blank). |
link_text |
string | required | Visible link text. 1-25 characters. |
description1 |
string | required | First description line. 1-35 characters. |
description2 |
string | required | Second description line. 1-35 characters. |
create_microsoft_structured_snippet_extension
Writes
Add a labeled list of offerings (structured snippet) shown beneath a Microsoft Ads (Bing) ad — a category header plus 3-10 short items, e.g.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
header |
string | required | Snippet header. 1-25 characters. |
values |
array | required | 3-10 snippet values, each 1-25 characters. |
list_extensions
Read
List the account's Google Ads / Microsoft Ads library extensions (sitelinks, callouts, snippets, etc.) with their internal ids.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
channel |
string | required | Search channel. Ad extensions are a search-channel-only concept. one of: GOOGLE_ADS, MICROSOFT_ADS |
types |
array | Optional extension-type filter, e.g. ["SITELINK"]. | |
name |
string | Optional name filter. Names are auto-derived by the platform, not user-chosen, so prefer filtering by `types`. | |
page |
integer | 0-based page index. Defaults to 0. | |
size |
integer | Page size. Defaults to 50. |
remove_extensions_from_native_campaign
Destructive
Detach extensions from a native-structure Google Ads / Microsoft Ads campaign.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The wizard campaign id. |
channel |
string | required | Search channel. Ad extensions are a search-channel-only concept. one of: GOOGLE_ADS, MICROSOFT_ADS |
extension_ids |
array | required | Internal library extension ids from list_extensions. These are the `id` field, NOT `externalId` (the ad platform's own id). |
Paid search 18
add_keywords_to_negative_lists
Writes
Add keywords to one or more existing Google Ads negative keyword lists.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
negativeListIds |
array | required | IDs of the existing negative keyword lists to extend (from list_negative_keywords_list). |
keywords |
array | required | Keywords to add to every list in negativeListIds. Each item is either a plain string or {text, match_type}. |
match_type |
string | Default match type, used when an item is a plain string or an object that omits match_type. Default PHRASE. one of: EXACT, PHRASE, BROAD |
|
channel |
string | Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which. one of: GOOGLE_ADS, MICROSOFT_ADS |
add_negative_keyword_lists_to_live_campaigns
Writes
Attach existing Google Ads negative keyword lists to campaigns that are ALREADY LAUNCHED — a live edit that syncs through to Google.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
campaignIds |
array | required | Wizard campaign ids of the LIVE (already launched) campaigns to update. Pass every campaign the user named in one call. Draft campaigns are skipped with a reason. |
listNames |
array | Names of existing negative keyword lists to attach. Matched exactly (case-insensitive) against the account library; an unmatched name is reported, never substituted. | |
listIds |
array | IDs of existing negative keyword lists to attach, as returned by list_negative_keywords_list. Can be combined with listNames. | |
mode |
string | 'add' (default) merges with the lists already on the campaign. 'replace' makes the campaign's negative lists exactly the ones requested, detaching the rest — only for an explicit user request. one of: add, replace |
|
channel |
string | Ad channel scope. Only GOOGLE_ADS is supported — the platform's live-edit endpoint is Google-only. one of: GOOGLE_ADS |
create_keywords
Writes
Create one or more positive keywords in the Metadata platform library.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
keywords |
array | required | Array of keyword strings to create. Example: ["goku", "ssj", "ssj1"] |
create_negative_keywords_list
Writes
Create a new negative keywords list in the Metadata platform with Google Ads integration.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | required | Name of the negative keywords list (string). Example: "Competitor Brands", "Low Intent Keywords" |
keywords |
array | required | Array of keyword strings to block. Example: ["raichu", "blastoise", "charizard"] |
match_type |
string | required | Match type for all keywords. Options: EXACT (exact match), PHRASE (phrase match), BROAD (broad match). Example: 'EXACT' one of: EXACT, PHRASE, BROAD |
channel |
string | Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which. one of: GOOGLE_ADS, MICROSOFT_ADS |
delete_negative_keyword_lists
Destructive
Permanently delete one or more entire Google Ads negative keyword lists, only when the user has explicitly asked.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
listIds |
array | required | IDs of the negative keyword lists to delete (from list_negative_keywords_list). |
channel |
string | Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which. one of: GOOGLE_ADS, MICROSOFT_ADS |
duplicate_negative_keywords_list
Writes
Duplicate (copy) a negative keyword list from one search channel to the other: Google Ads to Microsoft Ads (Bing), or Microsoft Ads to Google Ads.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
sourceListId |
integer | required | Id of the negative keyword list to copy, as returned by list_negative_keywords_list. |
sourceChannel |
string | Channel the source list lives on. Default GOOGLE_ADS. one of: GOOGLE_ADS, MICROSOFT_ADS |
|
targetChannel |
string | Channel to create the copy on. Must differ from sourceChannel. Default MICROSOFT_ADS. one of: GOOGLE_ADS, MICROSOFT_ADS |
|
name |
string | Optional name for the new list. Defaults to "<source name> (<target>)", e.g. "Competitor Brands (Microsoft)". | |
dryRun |
boolean | When true, preview the copy (keyword count + BROAD-to-PHRASE conversions) without creating the list. |
experiments_keywords_stats
Read
Keyword performance data from active experiments with date range filtering.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
startDate |
string | required | Start date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: '2025-01-01T00:00:00.000Z' |
endDate |
string | required | End date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: '2025-12-31T23:59:59.999Z' |
get_negative_keywords_list_details
Read
Fetch the keywords inside a single Google Ads negative keyword list.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
listId |
integer | required | ID of the negative keyword list (from list_negative_keywords_list). |
text |
string | Optional substring filter on keyword text. | |
page |
integer | 0-based page index. Default 0. | |
size |
integer | Rows per page. Default 25, max 100. | |
sort |
string | Sort criteria in format '<field>,<direction>'. Default 'text,asc'. | |
channel |
string | Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which. one of: GOOGLE_ADS, MICROSOFT_ADS |
list_experiment_keywords
Read
Search and browse keywords running in experiments with simplified response data.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
keywordOrExperimentName |
string | required | Search term to filter results by keyword name or experiment name. |
page |
integer | Page number for pagination (0-based). Default is 0. | |
size |
integer | Number of items per page. Default is 10. |
list_keywords
Read
List and search keywords with filtering, sorting, and pagination options.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
object | Optional keyword name(s) to search for. Can be a single string or array of strings. Supports partial matching. Omit to list all keywords. | |
archived |
boolean | Filter by archived status. Set to false to show active keywords (default), true to include archived keywords. | |
page |
integer | Page number for pagination (0-based indexing). Default is 0 for the first page. | |
size |
integer | Number of items per page (default: 25, recommended: 25-100). | |
sort |
string | Sort criteria in format: field,direction. Options: avgMonthlySearches, lowerPageBid, higherPageBid, name, modifiedDate. Direction: desc (descending) or asc (ascending). Default: modifiedDate,desc one of: avgMonthlySearches,desc, avgMonthlySearches,asc, lowerPageBid,desc, lowerPageBid,asc, higherPageBid,desc, higherPageBid,asc, name,desc, name,asc, modifiedDate,desc, modifiedDate,asc |
list_negative_keywords_list
Read
List and search negative keywords lists by name filter.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
object | Optional negative keywords list name(s) to search for. Can be a single string or array of strings. Supports partial matching. Omit to list all negative keywords lists. | |
channel |
string | Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which. one of: GOOGLE_ADS, MICROSOFT_ADS |
list_search_terms
Read
Review the Google Ads search terms report with filtering, sorting, and pagination.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
searchTerm |
string | Optional substring filter on the search term text. | |
experiment |
string | Optional experiment name substring filter. | |
keyword |
string | Optional matched-keyword substring filter. | |
matchType |
array | Optional subset of match types to include. | |
startDate |
string | Optional ISO-8601 timestamp lower bound (e.g. 2026-06-01T00:00:00.000Z). | |
endDate |
string | Optional ISO-8601 timestamp upper bound (e.g. 2026-06-30T23:59:59.999Z). | |
page |
integer | 0-based page index. Default 0. | |
size |
integer | Rows per page. Default 12 (kept small to limit chat-context tokens), max 100. | |
sort |
string | Sort criteria in format '<field>,<direction>'. Default 'clicks,desc'. Sortable fields: searchTerm, matchType, experiment, addedExcluded, keyword, impressions, clicks, ctr, averageCpc, spent, conversions, costPerConversion. | |
channel |
string | Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which. one of: GOOGLE_ADS, MICROSOFT_ADS |
pause_experiment_keyword
Destructive
Pause a specific keyword running in an experiment.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
keywordExternalId |
integer | required | The external ID of the keyword to pause. |
wizExperimentId |
integer | required | The experiment ID where the keyword is running. |
remove_keywords_from_campaign
Destructive
Remove Google Ads keyword groups and/or negative keyword list attachments from a campaign's GOOGLE_ADS channel.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the campaign |
channel_id |
integer | Optional fast-path: numeric id of the GOOGLE_ADS channel on this campaign. When provided, the tool skips the full-campaign GET and fetches only this channel's keyword list. Use it when you already have the id from a recent campaign read; omit it and the tool resolves the channel by type. | |
channel_keywords |
object | Map of channel type to list of positive keyword group names to remove. Only GOOGLE_ADS is supported. Example: {"GOOGLE_ADS": ["CRM Keywords"]} | |
channel_negative_keyword_lists |
object | Map of channel type to list of negative keyword list names to detach from the channel. Only GOOGLE_ADS is supported. Example: {"GOOGLE_ADS": ["Competitor Brands"]} |
remove_keywords_from_negative_list
Destructive
Remove keywords from a single existing Google Ads negative keyword list, matched by text.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
listId |
integer | required | ID of the negative keyword list (from list_negative_keywords_list). |
keywords |
array | required | Exact keyword texts to remove. Case-sensitive whole-text match. |
channel |
string | Ad channel scope. Both search channels are supported. These are PER-CHANNEL resources: GOOGLE_ADS and MICROSOFT_ADS hold separate sets, and one is invisible to the other. Defaults to GOOGLE_ADS when the user does not say which. one of: GOOGLE_ADS, MICROSOFT_ADS |
restart_experiment_keyword
Writes
Restart a specific paused keyword in an experiment.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
keywordExternalId |
integer | required | The external ID of the keyword to restart. |
wizExperimentId |
integer | required | The experiment ID where the keyword is running. |
set_search_channel_final_url_suffix
Destructive
Set or clear the Final URL Suffix on a wizard campaign's search channel (Google Ads or Microsoft Ads).
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the wizard campaign. |
channel |
string | required | Which search channel on the campaign to update. Final URL Suffix is only supported on these two. one of: GOOGLE_ADS, MICROSOFT_ADS |
final_url_suffix |
string | required | Tracking suffix appended to every final URL on this channel. Format: key=value pairs separated by `&`. Allowed characters: A–Z a–z 0–9 . _ ~ = & { } - or %XX percent-encoded. Pass empty string "" to clear. |
set_search_channel_locations
Destructive
Set the geographic targeting of a wizard campaign's search channel (Google Ads or Microsoft Ads) — which countries/states the campaign serves in, and which countries to exclude.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
campaign_id |
integer | required | The unique identifier of the wizard campaign. |
channel |
string | required | Which search channel on the campaign to update. Geo targeting is set per channel and only these two carry it. one of: GOOGLE_ADS, MICROSOFT_ADS |
countries |
array | Country NAMES to target, e.g. ["United States", "Canada"]. REPLACES the channel's current countries. Pass [] to clear (targets all locations). Omit to leave unchanged. | |
states |
array | US state NAMES to target, e.g. ["Texas", "California"]. REPLACES the channel's current states. Pass [] to clear. Omit to leave unchanged. US states only. | |
excluded_countries |
array | Country NAMES the campaign must NOT serve in, e.g. ["India"]. REPLACES the channel's current exclusions. Pass [] to clear them all. Omit to leave unchanged. Country-level only — states cannot be excluded. |
Analytics and attribution 16
account_funnel_reports
Read
Account-level funnel performance across stages.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
startDate |
string | required | Start date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: '2025-01-01T00:00:00.000Z' |
endDate |
string | required | End date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: '2025-12-31T23:59:59.999Z' |
reportTab |
string | required | Funnel stage to analyze. Options: REACHED (default), ENGAGED, CONVERTED, MQL, OPPS, WON one of: REACHED, ENGAGED, CONVERTED, MQL, OPPS, WON |
page |
integer | Page number for pagination (0-based) | |
size |
integer | Number of results per page. Default: 15, Max: 10000 — raise it to pull the full funnel set in one call. | |
sort |
string | Sort criteria. Examples: 'impressions,desc' (default), 'engagement,desc', 'conversions,desc' | |
type |
string | Report type. Currently only SOCIAL is supported one of: SOCIAL |
account_level_stats
Read
Account-level statistics and channel breakdown for a timeframe.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
timeframe |
string | Timeframe for data aggregation. MONTH=monthly breakdown, QUARTER=quarterly breakdown, WEEK=weekly breakdown, YEAR=yearly breakdown. DO NOT use this parameter when providing startDate and endDate. one of: QUARTER, WEEK, YEAR |
|
startDate |
string | Start date for custom date range in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Must be used together with endDate. Do NOT provide timeframe when using this. Example: 2025-07-01T00:00:00.000Z | |
endDate |
string | End date for custom date range in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Must be used together with startDate. Do NOT provide timeframe when using this. Example: 2025-09-30T00:00:00.000Z |
account_list_performance
Read
Account list information with engagement metrics and statistics.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
page |
integer | Page number for pagination (0-based). Example: page=0 for the first page. | |
size |
integer | Number of results per page. Default: 25; raise it (up to 10000) to pull every account list in one call. | |
sort |
string | Sorting criteria. Examples: 'triggeredAmount,desc', 'engagedAccounts,desc', 'influencedAmount,desc'. Format: field,direction where direction is 'asc' or 'desc'. | |
channels |
string | Comma-separated channel names (e.g., 'LINKEDIN,FACEBOOK,INSTAGRAM,GOOGLE_ADS'). Leave empty for all channels. | |
startDate |
string | Start date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: 2025-01-01T00:00:00.000Z. Optional for custom date ranges. | |
endDate |
string | End date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: 2025-01-31T23:59:59.999Z. Optional for custom date ranges. |
budget_group_performance
Read
Performance statistics for a specific budget group by name.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
budget_group_name |
string | required | Name of the budget group to analyze (required). The tool will automatically look up the budget group ID. Example: 'Brand Awareness', 'ToFu', 'Lead Gen Q4' |
startDate |
string | Start date for analysis in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.SSSZ, e.g., '2025-01-01T00:00:00.000Z'). Optional - if not provided, no start date filter is applied. | |
endDate |
string | End date for analysis in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.SSSZ, e.g., '2025-12-15T23:59:59.999Z'). Optional - if not provided, no end date filter is applied. | |
excludeExperimentName |
string | Experiment name to exclude from results. Useful for filtering out specific experiments from the analysis. | |
page |
integer | Page number for pagination (0-based). Use for paginating through large result sets. | |
size |
integer | Number of experiments per page. Default is 10. Use larger values (up to 10000) for comprehensive analysis — pull the whole set rather than a sample. | |
sort |
string | Sort criteria for experiments. Format: field,field,direction. Examples: 'experimentId,name,asc', 'spent,desc', 'cpl,asc' |
deep_funnel_stats
Read
Comprehensive funnel conversion analysis: funnel conversions, ROI statistics, experiment performance.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
funnel_id |
integer | required | The funnel ID to analyze. Example: 35 |
startDate |
string | Start date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: '2025-01-01T00:00:00.000Z' | |
endDate |
string | End date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: '2025-12-31T23:59:59.999Z' | |
opportunityModel |
string | Opportunity attribution model. Options: ALL (default), TRIGGERED, INFLUENCED one of: ALL, TRIGGERED, INFLUENCED |
demographic_country_stats
Read
Performance metrics grouped by Country.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
fromMonth |
string | Start date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: 2025-01-01T00:00:00.000Z. Required for custom date ranges. | |
toMonth |
string | End date in ISO 8601 format (YYYY-MM-DDTHH:mm:ss.sssZ). Example: 2025-01-31T23:59:59.999Z. Required for custom date ranges. | |
channels |
string | Comma-separated channel names (e.g., 'LINKEDIN,FACEBOOK,INSTAGRAM,GOOGLE_ADS'). Leave empty for all channels. | |
page |
integer | Page number for pagination (0-based). Example: page=0 for the first page. | |
size |
integer | Number of results per page. Default: 250; raise it (up to 10000) to pull every country in one call. | |
sort |
string | Sorting criteria. Examples: 'spend,desc' (default), 'leads,desc', 'cpl,asc', 'impressions,desc'. Format: field,direction where direction is 'asc' or 'desc'. | |
groupType |
string | Grouping type - currently only COUNTRY is supported for geographic breakdown. one of: COUNTRY |
experiment_performance_stats
Read
Experiment-level performance statistics from Metadata.io Experiments API.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
metrics |
array | List of metrics for secondary ordering when question involves multiple metrics (e.g., ['cpl', 'ctr', 'leads']). Only include when analyzing more than one metric simultaneously. Do NOT include for single metric questions. | |
minSpend |
number | Minimum spend threshold. REQUIRED for all campaigns except Brand Awareness. Use for Lead Generation and when campaign type is unspecified. | |
minLeads |
integer | Minimum leads threshold. REQUIRED for Lead Generation campaigns. Do NOT use for Brand Awareness campaigns. | |
minCpl |
integer | Minimum cost per lead threshold (whole dollars). REQUIRED for Lead Generation campaigns. Do NOT use for Brand Awareness campaigns. | |
minAudienceSize |
integer | Minimum audience size to filter experiments | |
minClicks |
integer | Minimum clicks threshold. REQUIRED for Brand Awareness campaigns only. Do NOT use for Lead Generation campaigns. | |
minCpc |
integer | Minimum cost per click threshold (whole dollars). Do NOT use for Lead Generation or unspecified campaign types. | |
size |
integer | Number of results to return. RULES: size=1 for 'top' singular questions, size=requested number for 'top X' questions, size=50 for plural questions (e.g. 'campaigns'), size=30+ for multiple metrics analysis, size=15 as default when not specified. Raise it freely for full-dataset analytics — there is | |
sort |
string | Sorting parameter. CRITICAL RULES: 'cpl2Score,desc' for Lead Generation or unspecified campaigns, 'cpc2Score,desc' for Brand Awareness, 'triggeredAmount,desc' for ROI/pipeline questions, 'oppsAmount,desc' for influenced pipeline, 'conversionRate,desc' for conversion rate, 'internalStatus,desc' for a | |
goals |
string | Campaign goal type. RULES: 'CPL' for Lead Generation campaigns, 'CTR' for Brand Awareness campaigns. Do NOT include for unspecified campaign types. When multiple metrics involved, use only the first metric's corresponding goal. one of: CPL, CTR |
|
name |
object | Experiment name filter, matched as ONE substring per request. Use 'name' field (NOT experimentName) for specific experiment questions. Can be a single string or an array of strings for multiple experiments; an array is queried one name per request and the results are merged. Do NOT add additional pa | |
campaignName |
object | Campaign name filter. Use when question is about specific campaign(s). Can be single string or array ['campaign1', 'campaign2'] for multiple campaigns. Do NOT include additional parameters when filtering by specific campaign name. | |
audienceName |
string | Filter by target audience name (e.g., 'WTS EMEA Jan25_EMEAPitchbook') | |
offerName |
string | Filter by specific offer name (e.g., 'AMER_ZO_EN_HBR Reimagining Work'). Use this field when question mentions specific offers. | |
adName |
string | Filter by specific ad name (e.g., 'Sifted_WorkShift_Ad5_Beige'). Use 'adName' field when question asks about specific ad names. | |
audienceTypes |
string | Comma-separated list of audience types (e.g., 'Spotlight Retargeting Contacts (Dynamic),Technographic (Aberdeen)') | |
imageLibraryName |
string | Filter by creative/image name (e.g., 'JP - Square-Ad15.png'). Use 'imageLibraryName' field when question asks about specific creative names. | |
offerTypes |
array | Offer types filter. RULES: ['LP'] for lead gen forms/landing pages questions, ['LP', 'LG'] as default when offer types mentioned. LP=Landing Pages, LG=Lead Gen forms. Should NOT be empty when included. | |
channels |
array | Marketing channels to include | |
visibilities |
array | Visibility status filter | |
launchedExperimentStatuses |
array | Filter experiments by launch status. DEFAULT when omitted: successfully-launched experiments only (Active, WithoutSpend, Paused, Completed) — Failed and Disconnected are EXCLUDED, because a failed/non-launched experiment has 0 leads and is a non-starter, not a 'bottom performer'. Pass values explici | |
timeFrame |
string | Timeframe aggregation. CRITICAL RULES: Use ONLY for WEEK or QUARTER questions. NEVER use 'YEAR' - use startDate/endDate instead. If timeFrame is included, DO NOT add startDate or endDate parameters under any circumstances. one of: WEEK, QUARTER |
|
startDate |
string | Start date in ISO 8601 format (e.g., '2024-10-18T00:00:00.000Z'). CRITICAL: Do NOT include if timeFrame parameter is used. Use last year of data if period cannot be inferred from question. For specific campaigns/experiments without timeframe, omit this parameter. | |
endDate |
string | End date in ISO 8601 format. Must end on last hour of date (e.g., '2024-11-21T23:59:59.999Z'). CRITICAL: Do NOT include if timeFrame parameter is used. For specific campaigns/experiments without timeframe, omit this parameter. |
get_account_opportunities_insights
Read
Get opportunities for domain(s) with status filtering and pagination.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
domains |
array | required | Domain strings. E.g., ['metadata.io'] |
status |
array | Filter by status. Omit for all. | |
startDate |
string | ISO 8601 format. E.g., '2025-01-01T00:00:00.000Z' | |
endDate |
string | ISO 8601 format. | |
page |
integer | 0-based page number. | |
size |
integer | Items per page (default 25, max 10000). Raise it to pull the full set in one call. | |
sort |
string | Sort field. Default: lastTouchDate one of: lastTouchDate, status, name, amount |
get_account_summary_insights
Read
Get comprehensive account details for specific domain(s).
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
domains |
array | required | Domain strings. E.g., ['metadata.io'] |
get_converted_leads_summary
Read
Fast aggregate summary of the account's converted leads (Smart Leads) — counts and rates only, no lead rows.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
statuses |
array | Lead statuses to include. The platform Leads tab defaults to ACTIVE. Omit to include all. | |
campaignName |
string | Filter by campaign name (partial match). | |
experimentName |
string | Filter by experiment name (partial match). | |
customAudienceName |
string | Filter by targeted audience name (partial match). | |
adName |
string | Filter by the ad (library) name that captured the leads (partial match). | |
offerName |
string | Filter by the offer name tied to the leads' experiments. | |
jobTitle |
string | Filter by lead job title (partial match). | |
email |
string | Filter by lead email (partial match). | |
firstName |
string | Filter by lead first name (partial match). | |
lastName |
string | Filter by lead last name (partial match). | |
businessEmails |
array | Filter by exact business email addresses (OR within the list). | |
modifiedBy |
string | Filter by the platform user email who last modified the leads (partial match). | |
companies |
array | Filter by exact company names. | |
countries |
array | Filter by exact lead country names. | |
channels |
array | Filter by acquisition channel(s). | |
audienceTypes |
array | Filter by audience type of the leads' experiments (e.g. FIRMOGRAPHIC_INCLUDE, CONTACT_LIST, BUYER_INTENT, NATIVE_LINKEDIN). | |
contentTypes |
array | Data-completeness filter: only leads that HAVE this content. | |
qualityTypes |
array | Quality-signal filter (opportunities, MQL date/score). | |
keyword |
string | Filter by the exact search keyword that captured the leads. | |
matchTypes |
array | Filter by keyword match type (search channels). | |
startDate |
string | Leads created on/after this date. ISO 8601; date-only is accepted. | |
endDate |
string | Leads created on/before this date. ISO 8601; date-only is accepted. | |
isFullyEnriched |
boolean | true = only fully enriched leads; false = only not fully enriched. | |
isAutoUpdated |
boolean | true = only auto-enriched leads. | |
isManuallyUpdate |
boolean | true = only manually enriched/edited leads (platform parameter name is 'isManuallyUpdate'). | |
syncMA |
boolean | true = only leads synced to marketing automation; false = only unsynced. | |
ids |
array | Restrict the summary to specific lead IDs. | |
tagIds |
array | Filter by tag IDs on the leads' experiments. |
get_insights_report
Read
Query account journey insights with filtering, sorting, and pagination.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
accountName |
string | Filter by account/company name. | |
startDate |
string|null | ISO 8601 format or null. E.g., '2025-01-01T00:00:00.000Z' | |
endDate |
string|null | ISO 8601 format or null. | |
criteria |
object|null | Criteria object: {"operator":"AND","match":[{field,operator,type,value}]}. Use get_segment_criteria for saved segments. | |
page |
integer | 0-based page number. | |
sort |
string | Sort format: field,direction. Default: lastTouchDate,desc one of: timeInJourney,desc, timeInJourney,asc, revenue,desc, revenue,asc, oppCreatedAmount,desc, oppCreatedAmount,asc, highIntentDetails,desc, highIntentDetails,asc, engagementScoreClassificationDelta,desc, engagementScoreClassificationDelta,asc, engagementScoreClassification,desc, engagementScoreClassification,asc |
performance_metrics
Read
Granular performance metrics for ads, audiences, creatives, offers, target groups, keywords.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
launchedExperimentStatuses |
array | Filter Performance Metrics by experiment launch statuses only. | |
page |
integer | Page number to retrieve (0-based indexing) | |
size |
integer | Number of results per page. Default 100; raise it freely (up to 10000) for comprehensive full-dataset analysis. | |
sort |
string | Sorting criteria (e.g., 'spent,desc', 'cpl,asc', 'experimentId,spent,desc') | |
ids |
array | Set of IDs to filter by | |
experimentIds |
array | Set of experiment IDs to filter by | |
startDate |
string | startDate in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ), e.g., `startDate=2025-06-12T14:30:00.123Z`). | |
endDate |
string | endDate in ISO 8601 format (YYYY-MM-DDThh:mm:ssZ), e.g., `startDate=2025-06-12T14:30:00.123Z`). | |
oppsStartDate |
string | Start date for opportunities data in ISO 8601 format | |
oppsEndDate |
string | End date for opportunities data in ISO 8601 format | |
adName |
string | Filter by specific ad name | |
keyword |
string | Filter by specific keyword | |
campaignName |
string | Filter by specific campaign name | |
creativeName |
string | Filter by specific creative name | |
customAudienceName |
string | Filter by specific custom audience name | |
offerName |
string | Filter by specific offer name | |
experimentName |
string | Filter by specific experiment name | |
budgetGroupName |
string | Filter by specific budget group name | |
channels |
array | Filter by marketing channels | |
goals |
array | Filter by campaign goals | |
audienceTypes |
array | Filter by audience types | |
offerTypes |
array | Filter by offer types. LG=Lead Gen forms, LP=Landing Pages | |
visibilities |
array | Filter by visibility status | |
adFormats |
array | Filter by ad format types. Applied to ads endpoint automatically. | |
minSpend |
number | Minimum spend threshold | |
maxSpend |
number | Maximum spend threshold | |
minLeads |
integer | Minimum number of leads threshold | |
maxLeads |
integer | Maximum number of leads threshold | |
minCpl |
number | Minimum cost per lead threshold | |
maxCpl |
number | Maximum cost per lead threshold | |
minAudienceSize |
integer | Minimum audience size threshold | |
maxAudienceSize |
integer | Maximum audience size threshold | |
usedInActiveExperiments |
boolean | Filter for ingredients used in active experiments only | |
tags |
array | Set of tag IDs to filter by | |
accountTagIds |
array | Set of account tag IDs to filter by | |
showWithSpend |
boolean | Show only experiments/ingredients with spend data | |
experimentList |
string | Experiment list filter | |
customFieldIds |
string | Custom field IDs to include | |
skipCustomFields |
boolean | Skip custom fields in response | |
endpoint |
string | Specific endpoint to query. If not specified, will be auto-determined from query context. Use 'customAudience/group' for target groups. one of: ads, customAudience, customAudience/group, offer, creative, keywords |
query_metadata_analytics_account
Read
Query the caller's own account CONTEXT from the Metadata.io knowledge base — a rolled-up summary (firmographic, recent 90-day campaign history, open drafts, per-experiment perfo…
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
question |
string | required | Natural-language question about the caller's account. |
query_metadata_analytics_benchmarks
Read
Query the Metadata.io marketing knowledge base for cross-account industry benchmarks and priors.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
question |
string | required | Natural-language question. Should describe a COHORT (industry × size × channel × format / audience), not a specific company. |
conversation_id |
any | Optional. Pass the value returned from a prior `_benchmarks` call to keep the query context warm. The two knowledge-base tools never share conversation_ids — pass only IDs returned by `_benchmarks` here. |
search_insights_criteria_fields
Read
Discover available fields for building insights filter criteria.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
search_keywords |
array | required | Keywords to search for fields (3-10 recommended). E.g., ['page', 'url', 'visit'] |
website_engagement_stats
Read
Website visitor engagement metrics: session data, page views, visitor behavior analytics.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
dateRange |
string | required | Timeframe for engagement data. Options: YESTERDAY, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_MONTH, MONTH_TO_DATE (default), LIFETIME. REQUIRED parameter. one of: YESTERDAY, LAST_7_DAYS, LAST_14_DAYS, LAST_30_DAYS, LAST_MONTH, MONTH_TO_DATE, LIFETIME |
page |
integer | Page number for pagination (0-based). Example: page=0 for the first page. | |
size |
integer | Number of results per page. Default: 15; raise it (up to 10000) to pull the full engagement set in one call. | |
sort |
string | Sorting criteria. Examples: 'sessions,desc' (default), 'pageViews,desc', 'uniqueVisitors,desc', 'conversionRate,desc'. Format: field,direction where direction is 'asc' or 'desc'. |
Account and access 10
connect_crm
Writes
Get the OAuth redirect URL to connect a specific CRM system to the Metadata platform.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
crm |
string | required | The CRM system to connect. Must be one of: salesforce, hubspot one of: salesforce, hubspot |
acknowledge_data_access |
boolean | Set true to confirm the person you are acting for asked to connect this CRM. The response is an OAuth authorization URL that starts a credential grant into their Metadata account. Without this the call is refused. |
create_topup_link
Destructive
Get a secure payment link the account owner can use to add AI credits.
Deletes, archives, launches or moves budget. Confirm intent before calling.
Takes no arguments.
get_account_details
Read
Current user and account information.
Returns data. Safe to call freely.
Takes no arguments.
get_credit_balance
Read
Get the current Metadata AI credit balance for the account this token belongs to.
Returns data. Safe to call freely.
Takes no arguments.
get_credit_transactions
Read
Get recent AI credit movements for the account this token belongs to, newest first.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
page |
integer | Zero-based page number. Defaults to 0 (most recent). | |
size |
integer | Rows per page, 1-100. Defaults to 25. |
get_integrations_status
Read
Get comprehensive integration connection status for all channels, martech platforms, and CRM systems in the Metadata platform.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
platformName |
string | Filter by specific platform name (e.g., 'Facebook', 'LinkedIn', 'Salesforce', 'HubSpot') |
get_payment_status
Read
Check whether a specific credit payment has settled onto the account's ledger.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
reference_id |
string | required | The payment's reference, as reported when the purchase was made (e.g. 'maxio:txn:987654'). Found on the transaction row in get_credit_transactions. |
impersonate_account
Writes
Switch the active Metadata account context to another account so every later tool call operates on THAT account.
Creates or changes something in the account.
| Parameter | Type | Notes | |
|---|---|---|---|
account_id |
string | required | ID of the Metadata account to switch into. |
list_user_accounts
Read
List accounts the current user has access to, with optional name filtering.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
name |
string | Partial account name to search for. Optional for regular users (acts as a filter); required for super users (acts as the search query against the whole platform). |
stop_impersonation
Writes
Switch back from a client account to your own default Metadata account.
Creates or changes something in the account.
Takes no arguments.
Utilities 5
enrich_company_domain
Read
Enrich a company DOMAIN with firmographics (industry, employee range, location).
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company domain, e.g. 'metadata.io'. |
find_privacy_url
Read
Locate the privacy-policy URL for a given website domain.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
domain |
string | required | Company website URL or domain. Examples: 'metadata.io', 'www.bloomreach.com', 'https://example.com' |
get_current_date
Read
Return the REAL current date and time (UTC).
Returns data. Safe to call freely.
Takes no arguments.
resolve_visitor_ip
Read
Deanonymize a website visitor IP to the COMPANY that owns it.
Returns data. Safe to call freely.
| Parameter | Type | Notes | |
|---|---|---|---|
ip |
string | required | The visitor's IP address (IPv4 or IPv6). |
set_landing_subdomain
Destructive
Set the subdomain this account's generated landing pages are served from.
Deletes, archives, launches or moves budget. Confirm intent before calling.
| Parameter | Type | Notes | |
|---|---|---|---|
subdomain |
string | required | The subdomain label only, without any zone suffix or scheme ("zoom", not "zoom.ad.live"). Empty string releases the current claim. |
Machine-readable
Agents should read /developers/tools.json
rather than this page: same 160 tools, full JSON Schema for every argument, one request.