Saltearse al contenido

Campaigns MCP tools

Esta página aún no está disponible en tu idioma.

Use this reference to find a tool and its inputs. Connect an MCP client before calling tools. Tool visibility depends on discovery and permissions.

For actions that send messages, spend credits, delete data, or start execution, review the intended records and confirm the action before proceeding. Obtain IDs from a prior result; do not invent them. A registered tool does not guarantee that its supporting service is available in every organization.

g8_gtm_archive_campaign_ad

Permanently stop ONE ad. This cannot be undone. Archive, not hard delete: Google’s remove and LinkedIn’s archive are both one-way, so the ad is kept with status “archived” and the spend it already incurred stays attributable. It can never serve again - to stop an ad you may want back later, pause it with set_campaign_ad_status. Refused on a campaign’s LAST remaining ad: a campaign serving nothing is not a state graph8 will leave you in. Pause or delete the campaign instead. Always confirm with the user before calling this. Args: campaign_id: ad campaign id from list_ad_campaigns. ad_id: graph8 ad id from list_campaign_ads, not platform_ad_id.

Inputs

InputRequiredTypeDescription
campaign_idYesintegerSee the schema below for constraints and defaults.
ad_idYesintegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "integer"
},
"ad_id": {
"title": "Ad Id",
"type": "integer"
}
},
"required": [
"campaign_id",
"ad_id"
],
"title": "archive_campaign_adArguments",
"type": "object"
}

g8_gtm_archive_icp

Archive a Studio ICP (soft delete - sets status to archived). The archived ICP drops out of the default get_icps listing but is reversible in the Studio UI. Use get_icps first to find the icp_id. Args: icp_id: ICP ID (UUID) from get_icps.

Inputs

InputRequiredTypeDescription
icp_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"icp_id": {
"title": "Icp Id",
"type": "string"
}
},
"required": [
"icp_id"
],
"title": "archive_icpArguments",
"type": "object"
}

g8_gtm_archive_persona

Archive a Studio buyer persona (soft delete - sets status to archived). The archived persona drops out of the default get_personas listing but is reversible in the Studio UI. Use get_personas first to find the persona_id. Args: persona_id: Persona ID (UUID) from get_personas.

Inputs

InputRequiredTypeDescription
persona_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"persona_id": {
"title": "Persona Id",
"type": "string"
}
},
"required": [
"persona_id"
],
"title": "archive_personaArguments",
"type": "object"
}

g8_gtm_attach_audience

Attach (or detach) a saved list to a campaign as its audience. Launch reads the campaign’s audience to enroll contacts. Idempotent - attaching the same list twice is a no-op. Args: campaign_id: Campaign to update. list_id: List to attach (must exist in this org). Pass None to detach the current audience.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
list_idNostring / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"list_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "List Id"
}
},
"required": [
"campaign_id"
],
"title": "attach_audienceArguments",
"type": "object"
}

g8_gtm_create_campaign

Create a new campaign with full Studio “Convert to Campaign” parity. By default mirrors Studio’s UI flow and dispatches a doc-generator so copy is ready in ~60-90s; the campaign starts in ‘copy_in_progress’ and flips to ‘active’ once docs generate. Sequence editing: the campaign owns a native sequence after create. To shape its steps, use the campaign-scoped step tools (g8_gtm_get_campaign_sequence, g8_gtm_create_campaign_step, g8_gtm_update_campaign_step, g8_gtm_delete_campaign_step). Do NOT call the standalone g8_create_sequence for a campaign you just created - that produces a free-floating sequence the launch endpoint never reads. To attach an audience after create, call g8_gtm_attach_audience. To launch, call g8_gtm_launch_campaign(campaign_id, dry_run=True) first. Args: name: Campaign name (required). Max 255 chars. category: Campaign category. Default “Outbound”. Max 100 chars. brief: Campaign brief. core_concept: Core concept text. primary_hook: Primary hook / angle copy. target_persona: Target persona id or descriptor. Max 200 chars. goal: Campaign goal. Max 255 chars. audience_list_id: Optional list id to attach as the audience in the same call. Must already exist in this org or create fails 404. target_channels: Channels the campaign will use, e.g. [“email”], [“email”,“linkedin”]. Drives which copy docs are generated. Defaults to [“email”]. secondary_hooks: Additional hook variations to seed the campaign idea with (used by the doc-generator for copy variants). auto_generate_documents: When True (default), runs the doc-generator and makes the campaign visible in the Studio workbench. Set False ONLY for a bare draft (no copy, not renderable in the Studio dashboard) - keep the default unless you must opt out.

Inputs

InputRequiredTypeDescription
nameYesstringSee the schema below for constraints and defaults.
categoryNostringSee the schema below for constraints and defaults.
briefNostring / nullSee the schema below for constraints and defaults.
core_conceptNostring / nullSee the schema below for constraints and defaults.
primary_hookNostring / nullSee the schema below for constraints and defaults.
target_personaNostring / nullSee the schema below for constraints and defaults.
goalNostring / nullSee the schema below for constraints and defaults.
audience_list_idNostring / nullSee the schema below for constraints and defaults.
target_channelsNoarray / nullSee the schema below for constraints and defaults.
secondary_hooksNoarray / nullSee the schema below for constraints and defaults.
auto_generate_documentsNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"category": {
"default": "Outbound",
"title": "Category",
"type": "string"
},
"brief": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Brief"
},
"core_concept": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Core Concept"
},
"primary_hook": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Primary Hook"
},
"target_persona": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Target Persona"
},
"goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Goal"
},
"audience_list_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Audience List Id"
},
"target_channels": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Target Channels"
},
"secondary_hooks": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Secondary Hooks"
},
"auto_generate_documents": {
"default": true,
"title": "Auto Generate Documents",
"type": "boolean"
}
},
"required": [
"name"
],
"title": "create_campaignArguments",
"type": "object"
}

g8_gtm_create_campaign_ads

Add one ad, or several at once, to a paid ad campaign. SPENDS REAL MONEY. On a campaign that is already launched the new ad goes live immediately and starts consuming that campaign’s budget. On a draft campaign it is persisted and created when the campaign launches. Confirm with the user before calling this on a launched campaign. Partial success is expected on a fan-out: one creative rejected on policy does not stop its siblings. Read results per ad and check status (“ok” or “partial”); never report a clean success off the envelope alone. There is no per-ad budget or bid to set here: budget is campaign level. Args: campaign_id: ad campaign id from list_ad_campaigns. name, headline, primary_text, description, cta, destination_url, creative_image_url, creative_image_url_square, creative_image_url_portrait, logo_image_url, copy_assets, source_ad_creative_id: the single ad to add. copy_assets carries multi-asset copy, for example {“rsa_headlines”: […], “rsa_descriptions”: […]}. ads: add several at once, 1 to 20 entries, each a dict using the same field names as above. When given it REPLACES the flat single-ad fields rather than adding to them. Unknown keys are rejected by the API rather than silently ignored.

Inputs

InputRequiredTypeDescription
campaign_idYesintegerSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
headlineNostring / nullSee the schema below for constraints and defaults.
primary_textNostring / nullSee the schema below for constraints and defaults.
descriptionNostring / nullSee the schema below for constraints and defaults.
ctaNostring / nullSee the schema below for constraints and defaults.
destination_urlNostring / nullSee the schema below for constraints and defaults.
creative_image_urlNostring / nullSee the schema below for constraints and defaults.
creative_image_url_squareNostring / nullSee the schema below for constraints and defaults.
creative_image_url_portraitNostring / nullSee the schema below for constraints and defaults.
logo_image_urlNostring / nullSee the schema below for constraints and defaults.
copy_assetsNoobject / nullSee the schema below for constraints and defaults.
source_ad_creative_idNostring / nullSee the schema below for constraints and defaults.
adsNoarray / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "integer"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"headline": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Headline"
},
"primary_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Primary Text"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"cta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Cta"
},
"destination_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Destination Url"
},
"creative_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Creative Image Url"
},
"creative_image_url_square": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Creative Image Url Square"
},
"creative_image_url_portrait": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Creative Image Url Portrait"
},
"logo_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Logo Image Url"
},
"copy_assets": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Copy Assets"
},
"source_ad_creative_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Source Ad Creative Id"
},
"ads": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Ads"
}
},
"required": [
"campaign_id"
],
"title": "create_campaign_adsArguments",
"type": "object"
}

g8_gtm_create_campaign_document

Create a new campaign document. Default status is “completed” since MCP-authored docs are usually ready to use. The launch checklist counts only completed docs; “draft” keeps the doc out of the checklist until you flip it via update_campaign_document. Args: campaign_id: Campaign UUID. file_type: Document type (e.g. campaign_brief, sequence, email_copy). display_name: Human-readable document name. content: Markdown / text body. folder_path: Optional folder path for organizing. status: “completed” (default) or “draft”. structured_data: Optional structured payload (e.g. parsed sequence steps, persona JSON).

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
file_typeYesstringSee the schema below for constraints and defaults.
display_nameYesstringSee the schema below for constraints and defaults.
contentNostringSee the schema below for constraints and defaults.
folder_pathNostring / nullSee the schema below for constraints and defaults.
statusNostringSee the schema below for constraints and defaults.
structured_dataNoobject / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"file_type": {
"title": "File Type",
"type": "string"
},
"display_name": {
"title": "Display Name",
"type": "string"
},
"content": {
"default": "",
"title": "Content",
"type": "string"
},
"folder_path": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Folder Path"
},
"status": {
"default": "completed",
"title": "Status",
"type": "string"
},
"structured_data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Structured Data"
}
},
"required": [
"campaign_id",
"file_type",
"display_name"
],
"title": "create_campaign_documentArguments",
"type": "object"
}

g8_gtm_create_campaign_step

Add a step to a campaign sequence. The backend validates (channel, mode) against this matrix; a pair outside it returns 400 (no auto-coercion): - email -> email - phone -> call, voicemail - sms -> sms - social -> connect_note, dm, comment, reply - voice_ai -> call mode is the channel sub-type, not a manual/ai_generated toggle. Args: campaign_id: Campaign to attach the step to. Must already exist; the backend scaffolds the sequence on the first create_campaign_step. name: Human-readable step name (free text). channel: One of the keys in the matrix above. mode: A mode allowed for channel per the matrix above. day: Day offset from campaign start (integer, can be 0). platform: Optional sub-platform identifier (e.g. “linkedin” for channel=‘social’). angle_id: Messaging angle identifier. Default “angle_1”. cta_type: Call-to-action category. Default “soft_ask”. personalization_level: low | medium | high. Default “medium”. constraints: Free-form dict; for email/sms steps this holds subject and body ({“subject”: ”…”, “body”: ”…”}). condition: Optional sequence-flow condition (e.g. “no_reply”). stop_on_reply: Halt sequence for this contact on reply. Default True.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
nameYesstringSee the schema below for constraints and defaults.
channelYesstringSee the schema below for constraints and defaults.
modeYesstringSee the schema below for constraints and defaults.
dayYesintegerSee the schema below for constraints and defaults.
platformNostring / nullSee the schema below for constraints and defaults.
angle_idNostringSee the schema below for constraints and defaults.
cta_typeNostringSee the schema below for constraints and defaults.
personalization_levelNostringSee the schema below for constraints and defaults.
constraintsNoobject / nullSee the schema below for constraints and defaults.
conditionNostring / nullSee the schema below for constraints and defaults.
stop_on_replyNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"channel": {
"title": "Channel",
"type": "string"
},
"mode": {
"title": "Mode",
"type": "string"
},
"day": {
"title": "Day",
"type": "integer"
},
"platform": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Platform"
},
"angle_id": {
"default": "angle_1",
"title": "Angle Id",
"type": "string"
},
"cta_type": {
"default": "soft_ask",
"title": "Cta Type",
"type": "string"
},
"personalization_level": {
"default": "medium",
"title": "Personalization Level",
"type": "string"
},
"constraints": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Constraints"
},
"condition": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Condition"
},
"stop_on_reply": {
"default": true,
"title": "Stop On Reply",
"type": "boolean"
}
},
"required": [
"campaign_id",
"name",
"channel",
"mode",
"day"
],
"title": "create_campaign_stepArguments",
"type": "object"
}

g8_gtm_create_icp

Create a Studio ICP (Ideal Customer Profile) manually. The write counterpart of get_icps. This is a manual create (no AI scoring); fit/opportunity/readiness scores stay empty until the ICP is regenerated in Studio. The new ICP is created with status “active”. Args: name: ICP name/title. website_url: The org website this ICP belongs to. description: Freeform ICP description. Optional. firmographics: Firmographic criteria dict (industry, size, geo, …). Optional. tech_stack: Technology-signal dict. Optional. buying_signals: List of buying-intent signals. Optional. estimated_market_size: Estimated addressable-market count. Optional.

Inputs

InputRequiredTypeDescription
nameYesstringSee the schema below for constraints and defaults.
website_urlYesstringSee the schema below for constraints and defaults.
descriptionNostring / nullSee the schema below for constraints and defaults.
firmographicsNoobject / nullSee the schema below for constraints and defaults.
tech_stackNoobject / nullSee the schema below for constraints and defaults.
buying_signalsNoarray / nullSee the schema below for constraints and defaults.
estimated_market_sizeNointeger / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"name": {
"title": "Name",
"type": "string"
},
"website_url": {
"title": "Website Url",
"type": "string"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"firmographics": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Firmographics"
},
"tech_stack": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Tech Stack"
},
"buying_signals": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Buying Signals"
},
"estimated_market_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Estimated Market Size"
}
},
"required": [
"name",
"website_url"
],
"title": "create_icpArguments",
"type": "object"
}

g8_gtm_create_persona

Create a Studio buyer persona manually. The write counterpart of get_personas. This is a manual create (no AI); the persona is created with status “active”. Use for adding a persona you already know about without running Studio’s AI persona generation. Args: title: Persona title (e.g. “Director of Marketing Operations”). website_url: The org website this persona belongs to. priority: Display priority (lower sorts first). Defaults to 1. confidence: Confidence label (e.g. “high”/“medium”/“low”). Defaults to “medium”. why_target: Why this persona is worth targeting. Optional. key_signals: List of buying/intent signals. Optional. expected_receptivity: Expected-receptivity note. Optional. campaign_approach: Recommended campaign approach. Optional. recommended_goal: Recommended campaign goal. Optional. source: Origin label for the persona. Defaults to “manual”.

Inputs

InputRequiredTypeDescription
titleYesstringSee the schema below for constraints and defaults.
website_urlYesstringSee the schema below for constraints and defaults.
priorityNointeger / nullSee the schema below for constraints and defaults.
confidenceNostring / nullSee the schema below for constraints and defaults.
why_targetNostring / nullSee the schema below for constraints and defaults.
key_signalsNoarray / nullSee the schema below for constraints and defaults.
expected_receptivityNostring / nullSee the schema below for constraints and defaults.
campaign_approachNostring / nullSee the schema below for constraints and defaults.
recommended_goalNostring / nullSee the schema below for constraints and defaults.
sourceNostring / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"title": {
"title": "Title",
"type": "string"
},
"website_url": {
"title": "Website Url",
"type": "string"
},
"priority": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"confidence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Confidence"
},
"why_target": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Why Target"
},
"key_signals": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Key Signals"
},
"expected_receptivity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Expected Receptivity"
},
"campaign_approach": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Campaign Approach"
},
"recommended_goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Recommended Goal"
},
"source": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Source"
}
},
"required": [
"title",
"website_url"
],
"title": "create_personaArguments",
"type": "object"
}

g8_gtm_create_pipeline

Create a new pipeline with default stages seeded for the target. For an AI-grounded pipeline based on the org’s context, prefer suggest_pipeline_from_context then create_pipeline_from_suggestion. Args: name: Pipeline name. target: Default stage shape. One of: prospects_revenue (default, AE/new-logo), prospects_meeting (SDR meeting-booking), customers_revenue (CSM expansion/renewal). blank: When True, skip per-target defaults and seed 2 placeholder stages to customize manually (build-from-scratch path).

Inputs

InputRequiredTypeDescription
nameNostringSee the schema below for constraints and defaults.
targetNostringSee the schema below for constraints and defaults.
blankNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"name": {
"default": "Sales Pipeline",
"title": "Name",
"type": "string"
},
"target": {
"default": "prospects_revenue",
"title": "Target",
"type": "string"
},
"blank": {
"default": false,
"title": "Blank",
"type": "boolean"
}
},
"title": "create_pipelineArguments",
"type": "object"
}

g8_gtm_create_pipeline_from_suggestion

Persist a PipelineSuggestion (possibly edited) as a real pipeline. Validates evidence keys, sanitizes channel scripts, and creates the pipeline + stages atomically. No dedup: every call creates a new pipeline, so do not post the same draft twice. Args: suggestion: Dict from suggest_pipeline_from_context (or equivalent). Shape: {name, rationale, context_sources: […], stages: [ {name, probability, stage_type, color, required_elements, recommended_elements, channel_scripts, rationale}]}.

Inputs

InputRequiredTypeDescription
suggestionYesobjectSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"suggestion": {
"additionalProperties": true,
"title": "Suggestion",
"type": "object"
}
},
"required": [
"suggestion"
],
"title": "create_pipeline_from_suggestionArguments",
"type": "object"
}

g8_gtm_create_stage

Add a new stage to a pipeline. Args: pipeline_id: Pipeline to add the stage to. name: Stage name. probability: Win probability percent (0-100). stage_type: One of: open, won, lost. color: Hex color for the stage. required_elements: Evidence keys gating advance; subset of list_stage_evidence_library. Unknown keys dropped server-side. recommended_elements: Nice-to-have evidence keys; same vocabulary. channel_scripts: Optional dict with keys call/email/linkedin (any subset); each value is markdown talk track. Empty values dropped.

Inputs

InputRequiredTypeDescription
pipeline_idYesstringSee the schema below for constraints and defaults.
nameYesstringSee the schema below for constraints and defaults.
probabilityNointegerSee the schema below for constraints and defaults.
stage_typeNostringSee the schema below for constraints and defaults.
colorNostringSee the schema below for constraints and defaults.
required_elementsNoarray / nullSee the schema below for constraints and defaults.
recommended_elementsNoarray / nullSee the schema below for constraints and defaults.
channel_scriptsNoobject / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"pipeline_id": {
"title": "Pipeline Id",
"type": "string"
},
"name": {
"title": "Name",
"type": "string"
},
"probability": {
"default": 0,
"title": "Probability",
"type": "integer"
},
"stage_type": {
"default": "open",
"title": "Stage Type",
"type": "string"
},
"color": {
"default": "#6B7280",
"title": "Color",
"type": "string"
},
"required_elements": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Required Elements"
},
"recommended_elements": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Recommended Elements"
},
"channel_scripts": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Channel Scripts"
}
},
"required": [
"pipeline_id",
"name"
],
"title": "create_stageArguments",
"type": "object"
}

g8_gtm_delete_campaign_document

Delete a campaign document.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
document_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"document_id": {
"title": "Document Id",
"type": "string"
}
},
"required": [
"campaign_id",
"document_id"
],
"title": "delete_campaign_documentArguments",
"type": "object"
}

g8_gtm_delete_campaign_step

Remove a step from the campaign sequence.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
step_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"step_id": {
"title": "Step Id",
"type": "string"
}
},
"required": [
"campaign_id",
"step_id"
],
"title": "delete_campaign_stepArguments",
"type": "object"
}

g8_gtm_delete_pipeline

Delete a pipeline. Fails if the pipeline has deals or is the only one.

Inputs

InputRequiredTypeDescription
pipeline_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"pipeline_id": {
"title": "Pipeline Id",
"type": "string"
}
},
"required": [
"pipeline_id"
],
"title": "delete_pipelineArguments",
"type": "object"
}

g8_gtm_delete_stage

Delete a stage. Fails if the stage has deals or the pipeline would drop below 2 stages.

Inputs

InputRequiredTypeDescription
pipeline_idYesstringSee the schema below for constraints and defaults.
stage_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"pipeline_id": {
"title": "Pipeline Id",
"type": "string"
},
"stage_id": {
"title": "Stage Id",
"type": "string"
}
},
"required": [
"pipeline_id",
"stage_id"
],
"title": "delete_stageArguments",
"type": "object"
}

g8_gtm_get_ad_images

List ad image creatives for one campaign. Returns every ad image that hasn’t been marked hidden.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
}
},
"required": [
"campaign_id"
],
"title": "get_ad_imagesArguments",
"type": "object"
}

g8_gtm_get_campaign

Get campaign details. Optionally fetch the full editable payload. Default (full=False): returns just the campaign row + documents. full=True: returns campaign + audience + ALL documents (with content) + sequence + step_catalog + linked_sequences + is_launched in one round trip. Use when about to edit a campaign and you need the full state.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
fullNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"full": {
"default": false,
"title": "Full",
"type": "boolean"
}
},
"required": [
"campaign_id"
],
"title": "get_campaignArguments",
"type": "object"
}

g8_gtm_get_campaign_document

Get the full content of a campaign document.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
document_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"document_id": {
"title": "Document Id",
"type": "string"
}
},
"required": [
"campaign_id",
"document_id"
],
"title": "get_campaign_documentArguments",
"type": "object"
}

g8_gtm_get_campaign_ideas

List saved campaign ideas.

Inputs

InputRequiredTypeDescription
favoritedNoboolean / nullSee the schema below for constraints and defaults.
limitNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"favorited": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Favorited"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "get_campaign_ideasArguments",
"type": "object"
}

g8_gtm_get_campaign_metrics

Get campaign execution metrics - sequence status + email counters. Returns email_metrics (sent/opened/replied/…), plus is_running and sequence_count. Each campaign carries a metric_status: - available: measured, reconciles with send receipts - zero: measured, both analytics and send receipts confirm nothing sent - stale: send receipts prove sends the analytics rollup hasn’t counted yet (pipeline lag) - report the receipt count, do NOT call it an outage - unknown: analytics were unreachable - metrics are NOT zero - missing: campaign has no launched sequences yet Read reconciliation (rollup vs receipt counts + note) and measured_range before drawing any conclusion about delivery. Args: campaign_id: Campaign to read metrics for. days: Lookback window (1-365). Default 30.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
daysNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"days": {
"default": 30,
"title": "Days",
"type": "integer"
}
},
"required": [
"campaign_id"
],
"title": "get_campaign_metricsArguments",
"type": "object"
}

g8_gtm_get_campaign_sequence

Get the campaign sequence and step catalog.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
}
},
"required": [
"campaign_id"
],
"title": "get_campaign_sequenceArguments",
"type": "object"
}

g8_gtm_get_company_profile

Read the org’s company profile - the source Studio generation reads. Check this FIRST when Studio documents describe the wrong company. Self-serve orgs that signed up without a domain carry graph8’s own profile, which is why their ICP, personas and campaigns come out aimed at graph8’s buyers.

Inputs

InputRequiredTypeDescription
NoneNoNo user-supplied inputs.
Complete input schema
{
"properties": {},
"title": "get_company_profileArguments",
"type": "object"
}

g8_gtm_get_deliverability_metrics

Deliverability capacity / sends / placement / warmup for this org. Read-only fleet health snapshot - the same signals the internal admin Deliverability dashboard shows, scoped to your org: * fleet_usable_capacity / fleet_idle_capacity / fleet_idle_mailboxes / fleet_sends / utilization - ramp-aware sending capacity over the window, SPLIT into usable (mailboxes on a live sequence) vs idle (no live sequence). utilization = sends / usable capacity, so idle mailboxes don’t inflate the denominator. * mailboxes_above_floor / below_floor / untested - honest per-mailbox inbox placement vs the 0.70 floor (the trustworthy placement signal; a raw org-average inbox% is misleading and intentionally not returned). * warmup_avg_health / warmup_stale_count - avg warmup health across freshly-synced, actively-warming mailboxes, plus how many have a stale/untracked health signal. Args: days: Trailing window in days (1-30, default 7). mailbox_id: Optional. When set, also returns a mailbox slice with that mailbox’s daily_capacity, sends, inbox_rate, warmup_score, and lifecycle_state.

Inputs

InputRequiredTypeDescription
daysNointegerSee the schema below for constraints and defaults.
mailbox_idNointeger / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"days": {
"default": 7,
"title": "Days",
"type": "integer"
},
"mailbox_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Mailbox Id"
}
},
"title": "get_deliverability_metricsArguments",
"type": "object"
}

g8_gtm_get_global_context

Read the org’s Studio Global Context documents - the written GTM foundation. USE THIS TOOL to answer ANY question about what the organization has documented about itself. This is the single source of truth for the org’s go-to-market context. Reach for it whenever the user asks about: - target audience / who we sell to / buyers -> category “audience” - ideal customer profile / ICP -> category “targeting” - personas -> category “targeting” - brand brief / brand voice / style / compliance -> category “brand” - pricing / offer / packaging / proof -> category “offer” - messaging / value props / elevator pitch / positioning / narrative -> category “messaging” - market insights / competitors / TAM research -> category “market” If you are unsure which category holds the answer, OMIT category to pull every document, then read the relevant ones. Each document carries category, title, status, updated_at, and (when include_content=True, the default) the full content body so you can answer what the document actually SAYS - not just list its title. Args: category: Filter to one category - one of brand, audience, messaging, market, offer, targeting, data. Omit to return every category (recommended when the user’s question could span more than one). include_content: When True (default) each document includes its body text in content so you can read and quote it. Pass False only for a cheap title-and-status listing where the body is not needed. limit: Max documents to return (1-200). Default 50. For STRUCTURED, scored persona/ICP records (firmographics, fit scores, pinned flags) use g8_get_personas / g8_get_icps instead - those read the dedicated cb_personas / cb_icps tables rather than the narrative docs.

Inputs

InputRequiredTypeDescription
categoryNostring / nullSee the schema below for constraints and defaults.
include_contentNobooleanSee the schema below for constraints and defaults.
limitNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Category"
},
"include_content": {
"default": true,
"title": "Include Content",
"type": "boolean"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "get_global_contextArguments",
"type": "object"
}

g8_gtm_get_icps

List ICPs available for campaign targeting.

Inputs

InputRequiredTypeDescription
statusNostring / nullSee the schema below for constraints and defaults.
limitNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "get_icpsArguments",
"type": "object"
}

g8_gtm_get_mailbox_warmup

Get live warmup analytics for a single mailbox. Hits the configured warmup provider over HTTP - slow (~300-800ms). For a cheap bulk read of which mailboxes have warmup configured, use list_mailboxes and inspect warmup_status / warmup_provider first. Returns {success, warmup_enabled, provider, analytics, warmup_settings}. Provider-specific fields inside analytics: * Instantly: health_score, inbox_rate, daily_stats * SmartLead: reputation, daily_stats When warmup isn’t configured, returns warmup_enabled=false, provider=null. Args: mailbox_id: Integer mailbox ID (from list_mailboxes).

Inputs

InputRequiredTypeDescription
mailbox_idYesintegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"mailbox_id": {
"title": "Mailbox Id",
"type": "integer"
}
},
"required": [
"mailbox_id"
],
"title": "get_mailbox_warmupArguments",
"type": "object"
}

g8_gtm_get_personas

List personas available for campaign targeting.

Inputs

InputRequiredTypeDescription
statusNostring / nullSee the schema below for constraints and defaults.
limitNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "get_personasArguments",
"type": "object"
}

g8_gtm_get_pipeline

Get one pipeline by ID, including all stages and their checklist + scripts.

Inputs

InputRequiredTypeDescription
pipeline_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"pipeline_id": {
"title": "Pipeline Id",
"type": "string"
}
},
"required": [
"pipeline_id"
],
"title": "get_pipelineArguments",
"type": "object"
}

g8_gtm_hide_ad_image

Hide one ad creative from the campaign’s grid. Drops the image from future listings (data is retained). Idempotent - hiding an already-hidden image is a no-op that still succeeds.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
image_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"image_id": {
"title": "Image Id",
"type": "string"
}
},
"required": [
"campaign_id",
"image_id"
],
"title": "hide_ad_imageArguments",
"type": "object"
}

g8_gtm_launch_campaign

Launch a campaign to begin real outbound execution. Call with dry_run=True first to get a confirmation preview (audience size, active mailbox count, per-step snippets), then dry_run=False to send. A failed or incomplete preflight blocks confirmation. If no sender is given, the first active email mailbox is auto-attached; pass sender_mailbox_ids to choose explicitly. The response surfaces channels_attached listing which mailbox(es) were attached. The four pre-launch pickers (agents, schedule, appointment) are all optional. Args: campaign_id: Campaign to launch (from g8_gtm_list_campaigns). dry_run: When True, return a confirmation preview instead of launching. sender_mailbox_ids: Explicit sender mailbox IDs (from g8_gtm_list_mailboxes; each must be active + non-archived). Omit to auto-pick the first active email mailbox. textual_agent_name: Sender persona for email/social steps (from g8_list_agents). Pass the same value as voice_agent_name for the common one-agent-all-channels case. voice_agent_name: Sender persona for phone/SMS steps (from g8_list_agents). schedule_id: Send-window + timezone (from g8_list_schedules). appointment_id: Calendar booking link to attach (from g8_list_event_types).

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
dry_runNobooleanSee the schema below for constraints and defaults.
sender_mailbox_idsNoarray / nullSee the schema below for constraints and defaults.
textual_agent_nameNostring / nullSee the schema below for constraints and defaults.
voice_agent_nameNostring / nullSee the schema below for constraints and defaults.
schedule_idNostring / nullSee the schema below for constraints and defaults.
appointment_idNointeger / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"dry_run": {
"default": false,
"title": "Dry Run",
"type": "boolean"
},
"sender_mailbox_ids": {
"anyOf": [
{
"items": {
"type": "integer"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Sender Mailbox Ids"
},
"textual_agent_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Textual Agent Name"
},
"voice_agent_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Voice Agent Name"
},
"schedule_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Schedule Id"
},
"appointment_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Appointment Id"
}
},
"required": [
"campaign_id"
],
"title": "launch_campaignArguments",
"type": "object"
}

g8_gtm_list_ad_campaigns

List the org’s PAID ad campaigns (Google, LinkedIn), or read one. Paid advertising, not outbound sequences: use list_campaigns for those. Each row is the budget and targeting unit, with ad_count creatives inside it. Creative text and images live on the ads, so read them with list_campaign_ads. Args: platform: optional filter, “google” or “linkedin”. campaign_id: optional. Read just this ad campaign. The result is a collection either way, holding one entry.

Inputs

InputRequiredTypeDescription
platformNostring / nullSee the schema below for constraints and defaults.
campaign_idNointeger / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"platform": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Platform"
},
"campaign_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Campaign Id"
}
},
"title": "list_ad_campaignsArguments",
"type": "object"
}

g8_gtm_list_campaign_ads

List the ads inside one paid ad campaign, or read a single ad. Always returns a collection, even for a campaign holding exactly one ad. A campaign launched before per-ad control existed returns its single implicit ad, promoted to a real slot on first read so you get a stable id to act on. Act on an ad by its graph8 id, never by platform_ad_id: the platform handle changes every time a creative is replaced, the graph8 id does not. Args: campaign_id: ad campaign id from list_ad_campaigns. ad_id: optional. Read just this ad, still as a one-item collection. include_archived: include ads already archived. Ignored with ad_id.

Inputs

InputRequiredTypeDescription
campaign_idYesintegerSee the schema below for constraints and defaults.
ad_idNointeger / nullSee the schema below for constraints and defaults.
include_archivedNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "integer"
},
"ad_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Ad Id"
},
"include_archived": {
"default": false,
"title": "Include Archived",
"type": "boolean"
}
},
"required": [
"campaign_id"
],
"title": "list_campaign_adsArguments",
"type": "object"
}

g8_gtm_list_campaign_documents

List document metadata for a campaign.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
}
},
"required": [
"campaign_id"
],
"title": "list_campaign_documentsArguments",
"type": "object"
}

g8_gtm_list_campaigns

List campaigns in your organization.

Inputs

InputRequiredTypeDescription
pageNointegerSee the schema below for constraints and defaults.
limitNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"page": {
"default": 1,
"title": "Page",
"type": "integer"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "list_campaignsArguments",
"type": "object"
}

g8_gtm_list_intelligence_data

List documents in the Intelligence bucket of Studio Global Docs. ~16 doc types per org: website_scrape, company_enrichment, competitor_discovery, company_keywords, product_inventory, organic_keywords, paid_keywords, … Args: data_type: Filter by data_type. Omit to return every type. include_content: When True, include the raw data blob per row (large; default False returns metadata only). limit: Max rows (1-200). Default 50.

Inputs

InputRequiredTypeDescription
data_typeNostring / nullSee the schema below for constraints and defaults.
include_contentNobooleanSee the schema below for constraints and defaults.
limitNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"data_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Data Type"
},
"include_content": {
"default": false,
"title": "Include Content",
"type": "boolean"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "list_intelligence_dataArguments",
"type": "object"
}

g8_gtm_list_kb_documents

List all documents in the GTM knowledge base.

Inputs

InputRequiredTypeDescription
NoneNoNo user-supplied inputs.
Complete input schema
{
"properties": {},
"title": "list_kb_documentsArguments",
"type": "object"
}

g8_gtm_list_mailboxes

List sending mailboxes - or SENDING DOMAINS - for this org. Use before launching a campaign to confirm the org has at least one connection_status=‘active’ mailbox. Three shapes: - default: every mailbox the caller can see. - mailbox_id: just that one, as a one-entry list. The single read is the ONLY one that carries allows_nurture and warmup_enabled; in exchange it omits source, team fields and the warmup_provider/warmup_status/smartlead_warmup_enabled trio the list carries. Read both when you need all of it. - by_domain=True: the org’s sending DOMAINS instead - the containers mailboxes live in - with provider_connected (the gate for buying mailboxes on a domain) and mailbox_count. include_archived and connection_status do not apply to domains, and limit is clamped to 100 by that route. Args: limit: Max rows to return (1-500; domains clamp to 100). Default 100. include_archived: Include archived mailboxes. Default False. connection_status: Filter by status (active | paused | disconnected | expired | …). mailbox_id: Read exactly this mailbox. by_domain: Return sending domains rather than mailboxes. page: 1-indexed page, domains only.

Inputs

InputRequiredTypeDescription
limitNointegerSee the schema below for constraints and defaults.
include_archivedNobooleanSee the schema below for constraints and defaults.
connection_statusNostring / nullSee the schema below for constraints and defaults.
mailbox_idNointeger / nullSee the schema below for constraints and defaults.
by_domainNobooleanSee the schema below for constraints and defaults.
pageNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"limit": {
"default": 100,
"title": "Limit",
"type": "integer"
},
"include_archived": {
"default": false,
"title": "Include Archived",
"type": "boolean"
},
"connection_status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Connection Status"
},
"mailbox_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Mailbox Id"
},
"by_domain": {
"default": false,
"title": "By Domain",
"type": "boolean"
},
"page": {
"default": 1,
"title": "Page",
"type": "integer"
}
},
"title": "list_mailboxesArguments",
"type": "object"
}

g8_gtm_list_pipelines

List all deal pipelines for your organization, with stages. Each stage includes required_elements (must-have evidence keys that gate advance), recommended_elements (nice-to-haves), and channel_scripts (markdown talk tracks per channel: call/email/linkedin).

Inputs

InputRequiredTypeDescription
NoneNoNo user-supplied inputs.
Complete input schema
{
"properties": {},
"title": "list_pipelinesArguments",
"type": "object"
}

g8_gtm_list_research_reports

List documents in the Research bucket of Studio Global Docs. 6 report types per org: buyer_psychology, competitive_teardown, gtm_channel, industry_analyst, review_sentiment, voice_of_customer. Args: report_type: Filter by report_type. Omit to return every type. include_content: When True, include the structured content and rendered markdown (large; default False returns metadata only). limit: Max rows (1-200). Default 50.

Inputs

InputRequiredTypeDescription
report_typeNostring / nullSee the schema below for constraints and defaults.
include_contentNobooleanSee the schema below for constraints and defaults.
limitNointegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"report_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Report Type"
},
"include_content": {
"default": false,
"title": "Include Content",
"type": "boolean"
},
"limit": {
"default": 50,
"title": "Limit",
"type": "integer"
}
},
"title": "list_research_reportsArguments",
"type": "object"
}

g8_gtm_list_stage_evidence_library

List the 8 canonical evidence keys + human-readable labels. Call before constructing required_elements / recommended_elements so you know the vocabulary. Keys not in this list are silently dropped at write time.

Inputs

InputRequiredTypeDescription
NoneNoNo user-supplied inputs.
Complete input schema
{
"properties": {},
"title": "list_stage_evidence_libraryArguments",
"type": "object"
}

g8_gtm_patch_campaign_full

Atomic deep-update of a campaign in one round trip. Equivalent to update_campaign with deep-update kwargs. Exposed separately so agents searching “patch” or “deep update” discover it. Args: campaign_id: Campaign to patch. name/brief/core_concept/primary_hook/target_persona/category/goal: Campaign fields. Provided fields are updated; omit to leave unchanged. audience_list_id: Attach this list as the audience. detach_audience: Set True to clear the audience. Mutually exclusive with audience_list_id. documents: Per-document patches. Each item: {id?, file_type?, display_name?, folder_path?, status?, content?, structured_data?}. With id -> update; without id (and file_type + display_name present) -> create. sequence_steps: If provided, REORDERS / re-times the existing sequence. Each item {step_id, day, condition?, stop_on_reply?}; every step_id MUST already exist (use create_campaign_step to add, delete_campaign_step to remove). Omit to leave ordering alone; pass [] to clear the sequence (step bodies are retained). linked_sequence_ids: Existing sequence IDs to bind to this campaign. Skips already-linked IDs; does NOT modify launch audit rows. unlink_sequence_ids: Sequence IDs to unlink; audit rows are never touched. Returns the post-patch payload - same shape as get_campaign(full=True).

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
briefNostring / nullSee the schema below for constraints and defaults.
core_conceptNostring / nullSee the schema below for constraints and defaults.
primary_hookNostring / nullSee the schema below for constraints and defaults.
target_personaNostring / nullSee the schema below for constraints and defaults.
categoryNostring / nullSee the schema below for constraints and defaults.
goalNostring / nullSee the schema below for constraints and defaults.
audience_list_idNostring / nullSee the schema below for constraints and defaults.
detach_audienceNobooleanSee the schema below for constraints and defaults.
documentsNoarray / nullSee the schema below for constraints and defaults.
sequence_stepsNoarray / nullSee the schema below for constraints and defaults.
linked_sequence_idsNoarray / nullSee the schema below for constraints and defaults.
unlink_sequence_idsNoarray / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"brief": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Brief"
},
"core_concept": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Core Concept"
},
"primary_hook": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Primary Hook"
},
"target_persona": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Target Persona"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Category"
},
"goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Goal"
},
"audience_list_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Audience List Id"
},
"detach_audience": {
"default": false,
"title": "Detach Audience",
"type": "boolean"
},
"documents": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Documents"
},
"sequence_steps": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Sequence Steps"
},
"linked_sequence_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Linked Sequence Ids"
},
"unlink_sequence_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Unlink Sequence Ids"
}
},
"required": [
"campaign_id"
],
"title": "patch_campaign_fullArguments",
"type": "object"
}

g8_gtm_provision_sending_domain

Set up a sending domain: register, connect, verify, add mailboxes. The flow, in order. Read the org’s domains first with g8_gtm_list_mailboxes(by_domain=True). - action="check_availability": is one domain free to register, and what would it cost? Spends nothing and changes nothing. BUYING the domain is deliberately not on this tool - registering one files a legal registrant record in the customer’s name - so the answer here is for the user to act on in the app, not a step this tool can finish. - action="add_external": register domains the org ALREADY owns elsewhere so graph8 can send from them. Creates a row only; the domain becomes eligible for the two steps below. Pass domains. - action="connect_provider": connect one purchased domain to the managed mailbox-provisioning backend. Required once per domain before buying managed mailboxes on it. This REPOINTS THE DOMAIN’S NAMESERVERS at the registrar (skipped for domains added with add_external) and creates a vendor workspace for the org, so it needs confirm=True. - action="check_propagation": has a connected domain’s nameserver change taken effect yet? Mostly a read, but on the first check after connect_provider it can write the nameservers at the registrar, so it is not a read-only call. - action="buy_mailboxes": buy mailboxes on a connected domain. SPENDS REAL CREDITS and needs confirm=True. Two shapes, because the two provisioning paths address a mailbox differently: for the MANAGED path pass mailbox_usernames (local parts - “sales” makes sales@thedomain) together with platform; otherwise pass mailbox_emails (full addresses). last_name must be non-empty on the managed path or provisioning stalls upstream. Mailbox passwords are generated upstream; this tool takes none. Buying a NEW domain is deliberately not here - registering a domain files a legal registrant record in the customer’s name. Args: action: check_availability | add_external | connect_provider | check_propagation | buy_mailboxes. domain_id: The domain to act on (all actions except check_availability and add_external). domain: One domain name, check_availability only. domains: Domains to register, add_external only. mailbox_usernames: Local parts to create on the managed path, buy_mailboxes only (max 5 per purchase). Needs platform. mailbox_emails: Full addresses to create on the default path, buy_mailboxes only. first_name, last_name: Owner name stamped on each new mailbox. platform: GOOGLE | MICROSOFT. Required for a managed purchase. enable_warmup: Enroll new mailboxes in warmup immediately. confirm: Required for connect_provider and buy_mailboxes.

Inputs

InputRequiredTypeDescription
actionYesstringSee the schema below for constraints and defaults.
domain_idNointeger / nullSee the schema below for constraints and defaults.
domainNostring / nullSee the schema below for constraints and defaults.
domainsNoarray / nullSee the schema below for constraints and defaults.
mailbox_usernamesNoarray / nullSee the schema below for constraints and defaults.
mailbox_emailsNoarray / nullSee the schema below for constraints and defaults.
first_nameNostring / nullSee the schema below for constraints and defaults.
last_nameNostring / nullSee the schema below for constraints and defaults.
platformNostring / nullSee the schema below for constraints and defaults.
enable_warmupNobooleanSee the schema below for constraints and defaults.
confirmNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"action": {
"title": "Action",
"type": "string"
},
"domain_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Domain Id"
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Domain"
},
"domains": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Domains"
},
"mailbox_usernames": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Mailbox Usernames"
},
"mailbox_emails": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Mailbox Emails"
},
"first_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "First Name"
},
"last_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Name"
},
"platform": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Platform"
},
"enable_warmup": {
"default": true,
"title": "Enable Warmup",
"type": "boolean"
},
"confirm": {
"default": false,
"title": "Confirm",
"type": "boolean"
}
},
"required": [
"action"
],
"title": "provision_sending_domainArguments",
"type": "object"
}

g8_gtm_regenerate_global_context

Regenerate Studio Global Context documents against a website. Studio docs are generated once at onboarding from the company profile’s website. If that profile was wrong then - the common case for self-serve orgs, which seed graph8’s own profile when no domain is supplied - every ICP, persona, TAM and campaign downstream describes the wrong company. Use this after correcting the company profile. The one-shot pipeline (generate-all) refuses to re-run once it has completed; this regenerates per document, which has no such lock. Requires intelligence for website_url to already exist - run the intelligence analyze step for a newly-changed domain first, or this returns 404 rather than quietly regenerating the same stale content. Args: website_url: The website to generate from. After a domain change this must be the NEW domain; intelligence is keyed by URL, so passing the old one reproduces the stale content. doc_types: Specific doc types to regenerate, e.g. [“icp_research”, “persona_research”]. Omit for every document that already exists in the org. Regeneration is asynchronous: a queued task is not a regenerated document. Confirm with get_global_context and compare updated_at.

Inputs

InputRequiredTypeDescription
website_urlYesstringSee the schema below for constraints and defaults.
doc_typesNoarray / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"website_url": {
"title": "Website Url",
"type": "string"
},
"doc_types": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Doc Types"
}
},
"required": [
"website_url"
],
"title": "regenerate_global_contextArguments",
"type": "object"
}

g8_gtm_reorder_stages

Reorder stages in a pipeline. Pass the full ordered list of stage IDs.

Inputs

InputRequiredTypeDescription
pipeline_idYesstringSee the schema below for constraints and defaults.
stage_idsYesarraySee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"pipeline_id": {
"title": "Pipeline Id",
"type": "string"
},
"stage_ids": {
"items": {
"type": "string"
},
"title": "Stage Ids",
"type": "array"
}
},
"required": [
"pipeline_id",
"stage_ids"
],
"title": "reorder_stagesArguments",
"type": "object"
}

g8_gtm_search_kb

Search the GTM knowledge base.

Inputs

InputRequiredTypeDescription
queryYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"query": {
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "search_kbArguments",
"type": "object"
}

g8_gtm_set_campaign_ad_status

Pause or resume ONE ad, leaving its siblings and the campaign alone. Reversible, and it does not touch the creative, so nothing is replaced and neither policy review nor delivery learning restarts. Resuming an ad puts it back to serving against the campaign’s budget. A LinkedIn creative still in policy review cannot be paused; that comes back as an actionable message rather than a raw platform error. To stop an ad for good use archive_campaign_ad. To stop the whole campaign, pause the campaign instead of pausing every ad. Args: campaign_id: ad campaign id from list_ad_campaigns. ad_id: graph8 ad id from list_campaign_ads, not platform_ad_id. status: “paused” or “active”.

Inputs

InputRequiredTypeDescription
campaign_idYesintegerSee the schema below for constraints and defaults.
ad_idYesintegerSee the schema below for constraints and defaults.
statusYesstringSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "integer"
},
"ad_id": {
"title": "Ad Id",
"type": "integer"
},
"status": {
"title": "Status",
"type": "string"
}
},
"required": [
"campaign_id",
"ad_id",
"status"
],
"title": "set_campaign_ad_statusArguments",
"type": "object"
}

g8_gtm_set_company_profile

Set the org’s company profile (website + fields). This is the source of truth for Studio generation. Fixing it is step one when documents describe the wrong company; it does NOT rewrite existing documents, which were generated from the old site - follow with regenerate_global_context. Args: website_url: The client’s real website. fields: Profile fields to save, e.g. {“company_name”: “Acme”, “industry”: “Manufacturing”}. Replaces the stored field set. unapprove_if_approved: Approved profiles are immutable by design. Leave false and an approved profile returns 409. Set true only to deliberately unlock and overwrite a human-approved profile.

Inputs

InputRequiredTypeDescription
website_urlYesstringSee the schema below for constraints and defaults.
fieldsYesobjectSee the schema below for constraints and defaults.
unapprove_if_approvedNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"website_url": {
"title": "Website Url",
"type": "string"
},
"fields": {
"additionalProperties": true,
"title": "Fields",
"type": "object"
},
"unapprove_if_approved": {
"default": false,
"title": "Unapprove If Approved",
"type": "boolean"
}
},
"required": [
"website_url",
"fields"
],
"title": "set_company_profileArguments",
"type": "object"
}

g8_gtm_suggest_pipeline_from_context

Generate an AI-suggested pipeline grounded in the org’s GTM context. Reads the org’s GTM context docs and returns a PipelineSuggestion draft whose stages carry required_elements, recommended_elements, and channel_scripts anchored to the org’s actual language. Consumes credits. Returns a draft only - does NOT persist; pass the result to create_pipeline_from_suggestion (with optional edits) to commit. On API failure or empty context, returns a generic target-appropriate fallback. Args: target: Pipeline shape. One of: prospects_revenue (default, AE/new-logo), prospects_meeting (SDR meeting-booking), customers_revenue (CSM expansion/renewal). motion_hint: Optional freeform steer (e.g. “enterprise SaaS, annual contracts, 60-day cycle”). use_brief_only: When True (default), use the pre-extracted intelligence brief; set False to read source docs (more tokens).

Inputs

InputRequiredTypeDescription
targetNostringSee the schema below for constraints and defaults.
motion_hintNostring / nullSee the schema below for constraints and defaults.
use_brief_onlyNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"target": {
"default": "prospects_revenue",
"title": "Target",
"type": "string"
},
"motion_hint": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Motion Hint"
},
"use_brief_only": {
"default": true,
"title": "Use Brief Only",
"type": "boolean"
}
},
"title": "suggest_pipeline_from_contextArguments",
"type": "object"
}

g8_gtm_test_mailbox_connection

Re-test a mailbox’s stored SMTP/IMAP credentials, now. This is what refreshes connection_status: run it when g8_gtm_list_mailboxes shows a mailbox as disconnected or expired and you want to know whether it is healthy again before a launch. It dials the mail servers with the credentials already stored on the mailbox and writes the outcome back. A failure comes back as an error carrying the mail server’s own message (bad credentials, TLS, timeout). That is a DIAGNOSTIC RESULT, not a tool malfunction - report it to the user rather than retrying, since a retry re-dials with the same credentials. The API also accepts host/port/username/password overrides to test credentials that are not stored yet. This tool does not expose them: they would let a caller dial an arbitrary host and port through the platform, and secrets do not belong in tool arguments. Args: mailbox_id: From g8_gtm_list_mailboxes.

Inputs

InputRequiredTypeDescription
mailbox_idYesintegerSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"mailbox_id": {
"title": "Mailbox Id",
"type": "integer"
}
},
"required": [
"mailbox_id"
],
"title": "test_mailbox_connectionArguments",
"type": "object"
}

g8_gtm_update_campaign

Update campaign strategy fields or metadata. Default (no deep-update kwargs): updates ONLY the campaign row. Deep-update mode (any of audience_list_id, detach_audience, documents, sequence_steps, linked_sequence_ids, unlink_sequence_ids provided): an atomic deep-merge of: 1. Campaign fields (name/brief/hook/etc.) 2. Audience attach (audience_list_id) or detach (detach_audience=True) 3. Documents - per-doc patches: update existing by id, or create by file_type + display_name. Each item: {id?, file_type?, display_name?, folder_path?, status?, content?, structured_data?}. 4. Sequence steps - full replacement. Each item: {step_id, day, condition?, stop_on_reply?}. 5. Linked sequences - linked_sequence_ids binds existing sequences to this campaign (skips already-linked IDs); unlink_sequence_ids unlinks them (launch audit rows are never touched). Use linking to bind a manually built sequence so metrics include it, or to pre-attach a sequence the launch flow should know about. Returns the deep-update payload in deep-update mode; plain ActionResult otherwise.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
briefNostring / nullSee the schema below for constraints and defaults.
core_conceptNostring / nullSee the schema below for constraints and defaults.
primary_hookNostring / nullSee the schema below for constraints and defaults.
target_personaNostring / nullSee the schema below for constraints and defaults.
categoryNostring / nullSee the schema below for constraints and defaults.
goalNostring / nullSee the schema below for constraints and defaults.
audience_list_idNostring / nullSee the schema below for constraints and defaults.
detach_audienceNobooleanSee the schema below for constraints and defaults.
documentsNoarray / nullSee the schema below for constraints and defaults.
sequence_stepsNoarray / nullSee the schema below for constraints and defaults.
linked_sequence_idsNoarray / nullSee the schema below for constraints and defaults.
unlink_sequence_idsNoarray / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"brief": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Brief"
},
"core_concept": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Core Concept"
},
"primary_hook": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Primary Hook"
},
"target_persona": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Target Persona"
},
"category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Category"
},
"goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Goal"
},
"audience_list_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Audience List Id"
},
"detach_audience": {
"default": false,
"title": "Detach Audience",
"type": "boolean"
},
"documents": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Documents"
},
"sequence_steps": {
"anyOf": [
{
"items": {
"additionalProperties": true,
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Sequence Steps"
},
"linked_sequence_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Linked Sequence Ids"
},
"unlink_sequence_ids": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Unlink Sequence Ids"
}
},
"required": [
"campaign_id"
],
"title": "update_campaignArguments",
"type": "object"
}

g8_gtm_update_campaign_ad

Edit one ad’s creative. Omitted fields are left unchanged. On a live campaign this is applied as a REPLACE, because that is what the platforms permit: LinkedIn creatives are wholly immutable and on Google only Search/RSA is mutable in place. The platform ad is archived and a new one created, so POLICY REVIEW AND DELIVERY LEARNING START OVER for that ad and early performance will look unlike the old ad’s. The graph8 ad id and its measurement history survive. Check replaced_platform_ad and consequences in the result rather than assuming, and warn the user before editing a well-performing live ad. There is no budget or bid to edit here: budget is campaign level. Args: campaign_id: ad campaign id from list_ad_campaigns. ad_id: graph8 ad id from list_campaign_ads, not platform_ad_id. name, headline, primary_text, description, cta, destination_url, creative_image_url, creative_image_url_square, creative_image_url_portrait, logo_image_url, copy_assets, source_ad_creative_id: the fields to change. Pass only what changes.

Inputs

InputRequiredTypeDescription
campaign_idYesintegerSee the schema below for constraints and defaults.
ad_idYesintegerSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
headlineNostring / nullSee the schema below for constraints and defaults.
primary_textNostring / nullSee the schema below for constraints and defaults.
descriptionNostring / nullSee the schema below for constraints and defaults.
ctaNostring / nullSee the schema below for constraints and defaults.
destination_urlNostring / nullSee the schema below for constraints and defaults.
creative_image_urlNostring / nullSee the schema below for constraints and defaults.
creative_image_url_squareNostring / nullSee the schema below for constraints and defaults.
creative_image_url_portraitNostring / nullSee the schema below for constraints and defaults.
logo_image_urlNostring / nullSee the schema below for constraints and defaults.
copy_assetsNoobject / nullSee the schema below for constraints and defaults.
source_ad_creative_idNostring / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "integer"
},
"ad_id": {
"title": "Ad Id",
"type": "integer"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"headline": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Headline"
},
"primary_text": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Primary Text"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"cta": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Cta"
},
"destination_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Destination Url"
},
"creative_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Creative Image Url"
},
"creative_image_url_square": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Creative Image Url Square"
},
"creative_image_url_portrait": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Creative Image Url Portrait"
},
"logo_image_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Logo Image Url"
},
"copy_assets": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Copy Assets"
},
"source_ad_creative_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Source Ad Creative Id"
}
},
"required": [
"campaign_id",
"ad_id"
],
"title": "update_campaign_adArguments",
"type": "object"
}

g8_gtm_update_campaign_document

Save edits back to a campaign document.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
document_idYesstringSee the schema below for constraints and defaults.
contentYesstringSee the schema below for constraints and defaults.
statusNostring / nullSee the schema below for constraints and defaults.
structured_dataNoobject / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"document_id": {
"title": "Document Id",
"type": "string"
},
"content": {
"title": "Content",
"type": "string"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
},
"structured_data": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Structured Data"
}
},
"required": [
"campaign_id",
"document_id",
"content"
],
"title": "update_campaign_documentArguments",
"type": "object"
}

g8_gtm_update_campaign_sequence

Replace the campaign sequence ordering with a new step list.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
stepsYesarraySee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"steps": {
"items": {
"additionalProperties": true,
"type": "object"
},
"title": "Steps",
"type": "array"
}
},
"required": [
"campaign_id",
"steps"
],
"title": "update_campaign_sequenceArguments",
"type": "object"
}

g8_gtm_update_campaign_step

Update a campaign sequence step definition or placement.

Inputs

InputRequiredTypeDescription
campaign_idYesstringSee the schema below for constraints and defaults.
step_idYesstringSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
channelNostring / nullSee the schema below for constraints and defaults.
modeNostring / nullSee the schema below for constraints and defaults.
platformNostring / nullSee the schema below for constraints and defaults.
angle_idNostring / nullSee the schema below for constraints and defaults.
cta_typeNostring / nullSee the schema below for constraints and defaults.
personalization_levelNostring / nullSee the schema below for constraints and defaults.
constraintsNoobject / nullSee the schema below for constraints and defaults.
do_not_send_rulesNoarray / nullSee the schema below for constraints and defaults.
dayNointeger / nullSee the schema below for constraints and defaults.
conditionNostring / nullSee the schema below for constraints and defaults.
stop_on_replyNoboolean / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"campaign_id": {
"title": "Campaign Id",
"type": "string"
},
"step_id": {
"title": "Step Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"channel": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Channel"
},
"mode": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Mode"
},
"platform": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Platform"
},
"angle_id": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Angle Id"
},
"cta_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Cta Type"
},
"personalization_level": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Personalization Level"
},
"constraints": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Constraints"
},
"do_not_send_rules": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Do Not Send Rules"
},
"day": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Day"
},
"condition": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Condition"
},
"stop_on_reply": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Stop On Reply"
}
},
"required": [
"campaign_id",
"step_id"
],
"title": "update_campaign_stepArguments",
"type": "object"
}

g8_gtm_update_global_context

Update a Studio Global Context document (Context bucket). The write counterpart of get_global_context. Each save creates a version snapshot. Use get_global_context first to find the doc_id. Args: doc_id: Global context document ID (UUID) from get_global_context. content: New document body. Omit to leave unchanged. status: New status (e.g. “completed”, “draft”). Omit to leave unchanged. Pass at least one of content / status.

Inputs

InputRequiredTypeDescription
doc_idYesstringSee the schema below for constraints and defaults.
contentNostring / nullSee the schema below for constraints and defaults.
statusNostring / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"doc_id": {
"title": "Doc Id",
"type": "string"
},
"content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Content"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
}
},
"required": [
"doc_id"
],
"title": "update_global_contextArguments",
"type": "object"
}

g8_gtm_update_icp

Update a Studio ICP’s fields (partial update). The write counterpart of get_icps. Use get_icps first to find the icp_id. To archive an ICP use archive_icp instead. Pass at least one field to change. Args: icp_id: ICP ID (UUID) from get_icps. name: New ICP name. Omit to leave unchanged. description: New description. Omit to leave unchanged. firmographics: New firmographic criteria dict. Omit to leave unchanged. tech_stack: New technology-signal dict. Omit to leave unchanged. buying_signals: New list of buying-intent signals. Omit to leave unchanged. estimated_market_size: New estimated market-size count. Omit to leave unchanged.

Inputs

InputRequiredTypeDescription
icp_idYesstringSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
descriptionNostring / nullSee the schema below for constraints and defaults.
firmographicsNoobject / nullSee the schema below for constraints and defaults.
tech_stackNoobject / nullSee the schema below for constraints and defaults.
buying_signalsNoarray / nullSee the schema below for constraints and defaults.
estimated_market_sizeNointeger / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"icp_id": {
"title": "Icp Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"description": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Description"
},
"firmographics": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Firmographics"
},
"tech_stack": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Tech Stack"
},
"buying_signals": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Buying Signals"
},
"estimated_market_size": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Estimated Market Size"
}
},
"required": [
"icp_id"
],
"title": "update_icpArguments",
"type": "object"
}

g8_gtm_update_mailbox

Change a mailbox’s sending settings. Only supplied fields change. Reach for it to throttle a mailbox that is burning reputation (daily_limit), to keep nurture off a cold-outbound mailbox (allows_nurture=False), or to fix a signature. Credentials are deliberately NOT editable here. The API accepts SMTP/IMAP host, port, username and password on this route, but a password is a live secret and this surface never takes one as an argument; re-enter credentials in the app. Args: mailbox_id: From g8_gtm_list_mailboxes. display_name: From-name shown on sends. daily_limit: Max sends per day (>= 1). allows_nurture: Whether nurture campaigns may use this mailbox. signature_html: HTML signature body. signature_plain: Plain-text signature body. use_html_signature: Send the HTML signature rather than the plain one.

Inputs

InputRequiredTypeDescription
mailbox_idYesintegerSee the schema below for constraints and defaults.
display_nameNostring / nullSee the schema below for constraints and defaults.
daily_limitNointeger / nullSee the schema below for constraints and defaults.
allows_nurtureNoboolean / nullSee the schema below for constraints and defaults.
signature_htmlNostring / nullSee the schema below for constraints and defaults.
signature_plainNostring / nullSee the schema below for constraints and defaults.
use_html_signatureNoboolean / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"mailbox_id": {
"title": "Mailbox Id",
"type": "integer"
},
"display_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Display Name"
},
"daily_limit": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Daily Limit"
},
"allows_nurture": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Allows Nurture"
},
"signature_html": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Signature Html"
},
"signature_plain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Signature Plain"
},
"use_html_signature": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Use Html Signature"
}
},
"required": [
"mailbox_id"
],
"title": "update_mailboxArguments",
"type": "object"
}

g8_gtm_update_persona

Update a Studio persona’s fields and/or status (partial update). The write counterpart of get_personas. Use get_personas first to find the persona_id. Passing status=“archived” is equivalent to archive_persona. Pass at least one field to change. Args: persona_id: Persona ID (UUID) from get_personas. title: New persona title. Omit to leave unchanged. priority: New display priority. Omit to leave unchanged. confidence: New confidence label. Omit to leave unchanged. why_target: New “why target” text. Omit to leave unchanged. key_signals: New list of signals. Omit to leave unchanged. expected_receptivity: New receptivity note. Omit to leave unchanged. campaign_approach: New campaign approach. Omit to leave unchanged. recommended_goal: New recommended goal. Omit to leave unchanged. status: New status (e.g. “active”, “archived”). Omit to leave unchanged.

Inputs

InputRequiredTypeDescription
persona_idYesstringSee the schema below for constraints and defaults.
titleNostring / nullSee the schema below for constraints and defaults.
priorityNointeger / nullSee the schema below for constraints and defaults.
confidenceNostring / nullSee the schema below for constraints and defaults.
why_targetNostring / nullSee the schema below for constraints and defaults.
key_signalsNoarray / nullSee the schema below for constraints and defaults.
expected_receptivityNostring / nullSee the schema below for constraints and defaults.
campaign_approachNostring / nullSee the schema below for constraints and defaults.
recommended_goalNostring / nullSee the schema below for constraints and defaults.
statusNostring / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"persona_id": {
"title": "Persona Id",
"type": "string"
},
"title": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Title"
},
"priority": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Priority"
},
"confidence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Confidence"
},
"why_target": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Why Target"
},
"key_signals": {
"anyOf": [
{
"items": {},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Key Signals"
},
"expected_receptivity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Expected Receptivity"
},
"campaign_approach": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Campaign Approach"
},
"recommended_goal": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Recommended Goal"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
}
},
"required": [
"persona_id"
],
"title": "update_personaArguments",
"type": "object"
}

g8_gtm_update_pipeline

Rename a pipeline and/or promote it to default. Args: pipeline_id: Pipeline to update. name: New name. Omit to leave unchanged. set_default: When True, leave this pipeline as the org’s only default, atomically clearing the flag from any other pipeline that held it. Already the default is a no-op, not an error.

Inputs

InputRequiredTypeDescription
pipeline_idYesstringSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
set_defaultNobooleanSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"pipeline_id": {
"title": "Pipeline Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"set_default": {
"default": false,
"title": "Set Default",
"type": "boolean"
}
},
"required": [
"pipeline_id"
],
"title": "update_pipelineArguments",
"type": "object"
}

g8_gtm_update_research_report

Update a Studio Research report (Research bucket). The write counterpart of list_research_reports. Editing the markdown creates a version snapshot AND re-indexes the report to the RAG knowledge base. Use list_research_reports first to find the report_id. Args: report_id: Research report ID (UUID) from list_research_reports. markdown_content: New rendered markdown body. Omit to leave unchanged. Triggers a RAG re-index when provided. status: New status. A “completed”/“approved” report can only move between those two states. Omit to leave unchanged. Pass at least one of markdown_content / status.

Inputs

InputRequiredTypeDescription
report_idYesstringSee the schema below for constraints and defaults.
markdown_contentNostring / nullSee the schema below for constraints and defaults.
statusNostring / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"report_id": {
"title": "Report Id",
"type": "string"
},
"markdown_content": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Markdown Content"
},
"status": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Status"
}
},
"required": [
"report_id"
],
"title": "update_research_reportArguments",
"type": "object"
}

g8_gtm_update_stage

Update a stage. All parameters optional - pass only what changes. Same vocabulary rules as create_stage for required_elements, recommended_elements, and channel_scripts (stage_type: open/won/lost).

Inputs

InputRequiredTypeDescription
pipeline_idYesstringSee the schema below for constraints and defaults.
stage_idYesstringSee the schema below for constraints and defaults.
nameNostring / nullSee the schema below for constraints and defaults.
probabilityNointeger / nullSee the schema below for constraints and defaults.
stage_typeNostring / nullSee the schema below for constraints and defaults.
colorNostring / nullSee the schema below for constraints and defaults.
required_elementsNoarray / nullSee the schema below for constraints and defaults.
recommended_elementsNoarray / nullSee the schema below for constraints and defaults.
channel_scriptsNoobject / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"pipeline_id": {
"title": "Pipeline Id",
"type": "string"
},
"stage_id": {
"title": "Stage Id",
"type": "string"
},
"name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Name"
},
"probability": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Probability"
},
"stage_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Stage Type"
},
"color": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Color"
},
"required_elements": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Required Elements"
},
"recommended_elements": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Recommended Elements"
},
"channel_scripts": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Channel Scripts"
}
},
"required": [
"pipeline_id",
"stage_id"
],
"title": "update_stageArguments",
"type": "object"
}

g8_gtm_upload_enablement_asset

Upload an internal file to the org’s Studio Enablement library. The asset is visible to authenticated users in the same organization under Studio > Content > Assets > Enablement. It is not published or shared externally. The decoded file limit is 50 MB. Supported file extensions are PDF, DOC/DOCX, TXT/MD/MDX, CSV/JSON, PNG/JPG/JPEG, XLS/XLSX, and PPT/PPTX. Args: file_name: Original filename including a supported extension. content_base64: Standard base64-encoded file bytes. mime_type: Optional MIME type such as application/pdf. folder: Optional Enablement subfolder, created on first upload. tags: Optional labels such as deck, one-pager, or battlecard.

Inputs

InputRequiredTypeDescription
file_nameYesstringSee the schema below for constraints and defaults.
content_base64YesstringSee the schema below for constraints and defaults.
mime_typeNostring / nullSee the schema below for constraints and defaults.
folderNostring / nullSee the schema below for constraints and defaults.
tagsNoarray / nullSee the schema below for constraints and defaults.
Complete input schema
{
"properties": {
"file_name": {
"title": "File Name",
"type": "string"
},
"content_base64": {
"title": "Content Base64",
"type": "string"
},
"mime_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Mime Type"
},
"folder": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Folder"
},
"tags": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Tags"
}
},
"required": [
"file_name",
"content_base64"
],
"title": "upload_enablement_assetArguments",
"type": "object"
}