Tools & Connectors
Marketing & Ads
Marketo, Iterable, Braze, Google Ads, Meta Ads, and other marketing toolsets.
#Marketing & ads
Marketing-automation, lifecycle-messaging, and paid-media connectors.
Every connector follows the standard @toolset / @toolify shape and
the agent-ready toolset pattern (compact summaries by default, opt-in
raw IDs, tolerant write inputs).
#Agent-ready behavior (overview)
List tools across this category return compact summaries with stable
display refs (campaign_ref, list_ref, template_ref,canvas_ref, account_ref, ad_set_ref, ad_ref, creative_ref,segment_ref, audience_ref, ad_group_ref). Raw provider IDs
(numeric Marketo IDs, Iterable list IDs, Braze campaign UUIDs, Metaact_.../campaign IDs, LinkedIn account URNs, TikTok numeric IDs,
Google Ads resource names) are hidden by default and exposed viainclude_ids=True when a follow-up tool (get_*, update_*,delete_*, trigger_campaign, add_*, remove_*) needs them.
Write tools that take an identifier accept either the raw ID or the
dict from the matching list tool. This includes Marketotrigger_campaign / add_leads_to_list / remove_leads_from_list,
Iterable add_subscribers / remove_subscribers, Brazetrigger_campaign / trigger_canvas, Meta update_campaign /delete_campaign, LinkedIn get_campaign / update_campaign,
TikTok update_campaign / update_campaign_status.
Destructive tools across this group (require user confirmation):delete_leads, remove_leads_from_list (Marketo); delete_user,remove_subscribers (Iterable); delete_users (Braze);delete_campaign (Meta). The TikTok update_campaign_status tool
(used to pause / archive campaigns) is a regular write -- agents
should still confirm pause / archive intent with the user before
flipping the status of a running campaign.
#MarketoToolSet
from maivn_tools import MarketoToolSet connector = MarketoToolSet( munchkin_id="123-ABC-456", access_token=secrets["MARKETO_TOKEN"],)Token exchange against the Marketo Identity service is left to the
caller. Tools: get_lead_by_filter, create_or_update_leads,delete_leads (destructive), list_programs, list_campaigns,trigger_campaign, list_static_lists, add_leads_to_list,remove_leads_from_list (destructive), create_bulk_lead_export.
Agent-ready behavior
list_campaigns: summary withcampaign_ref, name, type, program
name, active state, workspace. Raw numeric campaign IDs hidden;
opt in withinclude_ids=True(needed bytrigger_campaign).list_static_lists: summary withlist_ref, name, program name,
workspace, created/updated. Opt in for the raw list ID (needed byadd_leads_to_list/remove_leads_from_list).- Tolerant inputs:
trigger_campaign,add_leads_to_list,remove_leads_from_listaccept a numeric ID, a campaign/list dict
from the matching list tool, or a list of such. - Destructive:
delete_leads,remove_leads_from_list. Confirm
before invoking.
#IterableToolSet
from maivn_tools import IterableToolSet connector = IterableToolSet(api_key=secrets["ITERABLE_KEY"])Tools: update_user, get_user, delete_user (destructive),track_event, track_purchase, list_lists, add_subscribers,remove_subscribers (destructive), list_campaigns, list_templates.
Agent-ready behavior
list_lists: summary withlist_ref, name, list type, size,
created. Opt in withinclude_ids=Truefor the numericlist_id
(needed byadd_subscribers/remove_subscribers).list_campaigns: summary withcampaign_ref, name, type, status,
send size, created. Opt in forcampaign_id.list_templates: summary withtemplate_ref, name, type,
created. Opt in fortemplate_id.- Tolerant inputs:
add_subscribers,remove_subscribersaccept a
numeric list ID or a list dict fromlist_lists(include_ids=True). - Destructive:
delete_user,remove_subscribers. Confirm before
invoking.
#BrazeToolSet
from maivn_tools import BrazeToolSet connector = BrazeToolSet( rest_endpoint="https://rest.iad-01.braze.com", api_key=secrets["BRAZE_KEY"],)Tools: track_users, export_user_ids, delete_users (destructive),send_messages, trigger_campaign, trigger_canvas,list_campaigns, list_canvases, subscribe_users, export_segment.
Agent-ready behavior
list_campaigns: summary withcampaign_ref, name, tags, created,
last edited. Rawcampaign_idhidden; opt in withinclude_ids=True(needed bytrigger_campaign).list_canvases: summary withcanvas_ref, name, tags, created,
last edited. Opt in forcanvas_id(needed bytrigger_canvas).- Tolerant inputs:
trigger_campaignandtrigger_canvasaccept a
raw UUID or the dict from the matching list tool. - Destructive:
delete_users. Confirm before invoking.
#GoogleAdsToolSet
from maivn_tools import GoogleAdsToolSet connector = GoogleAdsToolSet( access_token=token, developer_token=secrets["GADS_DEVELOPER_TOKEN"], login_customer_id="111-222-3333", api_version="v17",)Tools: list_accessible_customers, search (GAQL), search_stream,mutate_campaigns, mutate_ad_groups, mutate_ad_group_ads,mutate_campaign_budgets, upload_click_conversions,upload_offline_user_data.
Agent-ready behavior
- Google Ads is GAQL-first -- there are no fixed list tools, so no
_refsummaries.search/search_streamreturn the raw Google
Ads response (rows of resource names + selected fields). Resource
names (e.g.customers/.../campaigns/...) are the canonical
identifier the mutate tools take, so they are kept in results.
#MetaAdsToolSet
from maivn_tools import MetaAdsToolSet connector = MetaAdsToolSet(access_token=secrets["FB_AD_TOKEN"])Tools: list_ad_accounts, get_ad_account, list_campaigns,create_campaign, update_campaign, delete_campaign (destructive),list_ad_sets, list_ads, get_insights, list_custom_audiences.
Agent-ready behavior
list_ad_accounts: summary withaccount_ref, name, account
status, currency, timezone, business name. Rawact_...IDs hidden;
opt in withinclude_ids=True.list_campaigns: summary withcampaign_ref, name, objective,
status, daily/lifetime budget,updated_time. Opt in forcampaign_id(needed byupdate_campaign,delete_campaign,get_insights).list_ad_sets: summary withad_set_ref, name, status,
optimization goal, billing event,updated_time. Opt in for the
raw ID.list_ads: summary withad_ref, name, status, creative name,updated_time. Opt in for the raw ID.list_custom_audiences: summary withaudience_ref, name,
approximate count, subtype, retention days. Opt in for the raw ID.- Tolerant inputs:
update_campaign,delete_campaign,get_insightsaccept a raw ID or a resource dict from the matching
list tool. - Destructive:
delete_campaign. Confirm before invoking (also
removes ad sets and ads).
camps = connector.list_campaigns(account_id="act_123", include_ids=True)connector.update_campaign(camps["campaigns"][0], status="PAUSED")#LinkedInAdsToolSet
from maivn_tools import LinkedInAdsToolSet connector = LinkedInAdsToolSet(access_token=secrets["LI_ADS_TOKEN"])Tools: list_ad_accounts, get_ad_account, list_campaigns,get_campaign, update_campaign, list_creatives, ad_analytics,list_dmp_segments, add_users_to_dmp_segment.
Agent-ready behavior
list_ad_accounts: summary withaccount_ref, name, status,
currency, type. Raw account URN hidden; opt in withinclude_ids=True.list_campaigns: summary withcampaign_ref, name, status, type,
cost type, daily budget. Opt in for the raw campaign ID (needed byget_campaign,update_campaign,ad_analytics).list_creatives: summary withcreative_ref, status, intended
status, last modified. Opt in for the raw ID.list_dmp_segments: summary withsegment_ref, name, audience
count, source platform. Opt in for the raw ID (needed byadd_users_to_dmp_segment).
#TikTokAdsToolSet
from maivn_tools import TikTokAdsToolSet connector = TikTokAdsToolSet(access_token=secrets["TTAD_TOKEN"])Tools: list_advertisers, get_advertiser_info, list_campaigns,create_campaign, update_campaign, update_campaign_status,list_ad_groups, list_ads, get_reports, list_audiences.
Agent-ready behavior
list_campaigns: summary withcampaign_ref, name, objective,
status, budget,modify_time. Raw numeric campaign IDs hidden;
opt in withinclude_ids=True(needed byupdate_campaign,update_campaign_status).list_ad_groups: summary withad_group_ref, ad group name,
status, optimization goal, budget. Opt in for the raw ID.list_ads: summary withad_ref, ad name, status, creative
material. Opt in for the raw ID.list_audiences: summary withaudience_ref, audience name, type,
approximate count. Opt in for the raw ID.- Tolerant inputs:
update_campaign,update_campaign_statusaccept
raw IDs or campaign dicts fromlist_campaigns(include_ids=True). update_campaign_statusis the pause / archive control -- it is
not flaggeddestructive=Truebecause TikTok allows reactivation,
but pausing or archiving a live campaign has billing / pacing
implications. Confirm with the user before flipping the status of
an active campaign.