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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | integer | See the schema below for constraints and defaults. |
ad_id | Yes | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
icp_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
persona_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
list_id | No | string / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
name | Yes | string | See the schema below for constraints and defaults. |
category | No | string | See the schema below for constraints and defaults. |
brief | No | string / null | See the schema below for constraints and defaults. |
core_concept | No | string / null | See the schema below for constraints and defaults. |
primary_hook | No | string / null | See the schema below for constraints and defaults. |
target_persona | No | string / null | See the schema below for constraints and defaults. |
goal | No | string / null | See the schema below for constraints and defaults. |
audience_list_id | No | string / null | See the schema below for constraints and defaults. |
target_channels | No | array / null | See the schema below for constraints and defaults. |
secondary_hooks | No | array / null | See the schema below for constraints and defaults. |
auto_generate_documents | No | boolean | See 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
resultsper ad and checkstatus(“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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | integer | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
headline | No | string / null | See the schema below for constraints and defaults. |
primary_text | No | string / null | See the schema below for constraints and defaults. |
description | No | string / null | See the schema below for constraints and defaults. |
cta | No | string / null | See the schema below for constraints and defaults. |
destination_url | No | string / null | See the schema below for constraints and defaults. |
creative_image_url | No | string / null | See the schema below for constraints and defaults. |
creative_image_url_square | No | string / null | See the schema below for constraints and defaults. |
creative_image_url_portrait | No | string / null | See the schema below for constraints and defaults. |
logo_image_url | No | string / null | See the schema below for constraints and defaults. |
copy_assets | No | object / null | See the schema below for constraints and defaults. |
source_ad_creative_id | No | string / null | See the schema below for constraints and defaults. |
ads | No | array / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
file_type | Yes | string | See the schema below for constraints and defaults. |
display_name | Yes | string | See the schema below for constraints and defaults. |
content | No | string | See the schema below for constraints and defaults. |
folder_path | No | string / null | See the schema below for constraints and defaults. |
status | No | string | See the schema below for constraints and defaults. |
structured_data | No | object / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
name | Yes | string | See the schema below for constraints and defaults. |
channel | Yes | string | See the schema below for constraints and defaults. |
mode | Yes | string | See the schema below for constraints and defaults. |
day | Yes | integer | See the schema below for constraints and defaults. |
platform | No | string / null | See the schema below for constraints and defaults. |
angle_id | No | string | See the schema below for constraints and defaults. |
cta_type | No | string | See the schema below for constraints and defaults. |
personalization_level | No | string | See the schema below for constraints and defaults. |
constraints | No | object / null | See the schema below for constraints and defaults. |
condition | No | string / null | See the schema below for constraints and defaults. |
stop_on_reply | No | boolean | See 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
| Input | Required | Type | Description |
|---|---|---|---|
name | Yes | string | See the schema below for constraints and defaults. |
website_url | Yes | string | See the schema below for constraints and defaults. |
description | No | string / null | See the schema below for constraints and defaults. |
firmographics | No | object / null | See the schema below for constraints and defaults. |
tech_stack | No | object / null | See the schema below for constraints and defaults. |
buying_signals | No | array / null | See the schema below for constraints and defaults. |
estimated_market_size | No | integer / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
title | Yes | string | See the schema below for constraints and defaults. |
website_url | Yes | string | See the schema below for constraints and defaults. |
priority | No | integer / null | See the schema below for constraints and defaults. |
confidence | No | string / null | See the schema below for constraints and defaults. |
why_target | No | string / null | See the schema below for constraints and defaults. |
key_signals | No | array / null | See the schema below for constraints and defaults. |
expected_receptivity | No | string / null | See the schema below for constraints and defaults. |
campaign_approach | No | string / null | See the schema below for constraints and defaults. |
recommended_goal | No | string / null | See the schema below for constraints and defaults. |
source | No | string / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
name | No | string | See the schema below for constraints and defaults. |
target | No | string | See the schema below for constraints and defaults. |
blank | No | boolean | See 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
| Input | Required | Type | Description |
|---|---|---|---|
suggestion | Yes | object | See 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
| Input | Required | Type | Description |
|---|---|---|---|
pipeline_id | Yes | string | See the schema below for constraints and defaults. |
name | Yes | string | See the schema below for constraints and defaults. |
probability | No | integer | See the schema below for constraints and defaults. |
stage_type | No | string | See the schema below for constraints and defaults. |
color | No | string | See the schema below for constraints and defaults. |
required_elements | No | array / null | See the schema below for constraints and defaults. |
recommended_elements | No | array / null | See the schema below for constraints and defaults. |
channel_scripts | No | object / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
document_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
step_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
pipeline_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
pipeline_id | Yes | string | See the schema below for constraints and defaults. |
stage_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
full | No | boolean | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
document_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
favorited | No | boolean / null | See the schema below for constraints and defaults. |
limit | No | integer | See 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 Readreconciliation(rollup vs receipt counts + note) andmeasured_rangebefore drawing any conclusion about delivery. Args: campaign_id: Campaign to read metrics for. days: Lookback window (1-365). Default 30.
Inputs
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
days | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
| None | No | — | No 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
mailboxslice with that mailbox’s daily_capacity, sends, inbox_rate, warmup_score, and lifecycle_state.
Inputs
| Input | Required | Type | Description |
|---|---|---|---|
days | No | integer | See the schema below for constraints and defaults. |
mailbox_id | No | integer / null | See 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
categoryto pull every document, then read the relevant ones. Each document carriescategory,title,status,updated_at, and (when include_content=True, the default) the fullcontentbody 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 incontentso 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
| Input | Required | Type | Description |
|---|---|---|---|
category | No | string / null | See the schema below for constraints and defaults. |
include_content | No | boolean | See the schema below for constraints and defaults. |
limit | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
status | No | string / null | See the schema below for constraints and defaults. |
limit | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
mailbox_id | Yes | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
status | No | string / null | See the schema below for constraints and defaults. |
limit | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
pipeline_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
image_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
dry_run | No | boolean | See the schema below for constraints and defaults. |
sender_mailbox_ids | No | array / null | See the schema below for constraints and defaults. |
textual_agent_name | No | string / null | See the schema below for constraints and defaults. |
voice_agent_name | No | string / null | See the schema below for constraints and defaults. |
schedule_id | No | string / null | See the schema below for constraints and defaults. |
appointment_id | No | integer / null | See 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_countcreatives 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
| Input | Required | Type | Description |
|---|---|---|---|
platform | No | string / null | See the schema below for constraints and defaults. |
campaign_id | No | integer / null | See 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
idto act on. Act on an ad by its graph8id, never byplatform_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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | integer | See the schema below for constraints and defaults. |
ad_id | No | integer / null | See the schema below for constraints and defaults. |
include_archived | No | boolean | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
page | No | integer | See the schema below for constraints and defaults. |
limit | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
data_type | No | string / null | See the schema below for constraints and defaults. |
include_content | No | boolean | See the schema below for constraints and defaults. |
limit | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
| None | No | — | No 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 carriesallows_nurtureandwarmup_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 - withprovider_connected(the gate for buying mailboxes on a domain) andmailbox_count.include_archivedandconnection_statusdo not apply to domains, andlimitis 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
| Input | Required | Type | Description |
|---|---|---|---|
limit | No | integer | See the schema below for constraints and defaults. |
include_archived | No | boolean | See the schema below for constraints and defaults. |
connection_status | No | string / null | See the schema below for constraints and defaults. |
mailbox_id | No | integer / null | See the schema below for constraints and defaults. |
by_domain | No | boolean | See the schema below for constraints and defaults. |
page | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
| None | No | — | No 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
| Input | Required | Type | Description |
|---|---|---|---|
report_type | No | string / null | See the schema below for constraints and defaults. |
include_content | No | boolean | See the schema below for constraints and defaults. |
limit | No | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
| None | No | — | No 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
brief | No | string / null | See the schema below for constraints and defaults. |
core_concept | No | string / null | See the schema below for constraints and defaults. |
primary_hook | No | string / null | See the schema below for constraints and defaults. |
target_persona | No | string / null | See the schema below for constraints and defaults. |
category | No | string / null | See the schema below for constraints and defaults. |
goal | No | string / null | See the schema below for constraints and defaults. |
audience_list_id | No | string / null | See the schema below for constraints and defaults. |
detach_audience | No | boolean | See the schema below for constraints and defaults. |
documents | No | array / null | See the schema below for constraints and defaults. |
sequence_steps | No | array / null | See the schema below for constraints and defaults. |
linked_sequence_ids | No | array / null | See the schema below for constraints and defaults. |
unlink_sequence_ids | No | array / null | See 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 onedomainfree 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. Passdomains. -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 needsconfirm=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 needsconfirm=True. Two shapes, because the two provisioning paths address a mailbox differently: for the MANAGED path passmailbox_usernames(local parts - “sales” makes sales@thedomain) together withplatform; otherwise passmailbox_emails(full addresses).last_namemust 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). Needsplatform. 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
| Input | Required | Type | Description |
|---|---|---|---|
action | Yes | string | See the schema below for constraints and defaults. |
domain_id | No | integer / null | See the schema below for constraints and defaults. |
domain | No | string / null | See the schema below for constraints and defaults. |
domains | No | array / null | See the schema below for constraints and defaults. |
mailbox_usernames | No | array / null | See the schema below for constraints and defaults. |
mailbox_emails | No | array / null | See the schema below for constraints and defaults. |
first_name | No | string / null | See the schema below for constraints and defaults. |
last_name | No | string / null | See the schema below for constraints and defaults. |
platform | No | string / null | See the schema below for constraints and defaults. |
enable_warmup | No | boolean | See the schema below for constraints and defaults. |
confirm | No | boolean | See 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 forwebsite_urlto 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
| Input | Required | Type | Description |
|---|---|---|---|
website_url | Yes | string | See the schema below for constraints and defaults. |
doc_types | No | array / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
pipeline_id | Yes | string | See the schema below for constraints and defaults. |
stage_ids | Yes | array | See 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
| Input | Required | Type | Description |
|---|---|---|---|
query | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | integer | See the schema below for constraints and defaults. |
ad_id | Yes | integer | See the schema below for constraints and defaults. |
status | Yes | string | See 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
| Input | Required | Type | Description |
|---|---|---|---|
website_url | Yes | string | See the schema below for constraints and defaults. |
fields | Yes | object | See the schema below for constraints and defaults. |
unapprove_if_approved | No | boolean | See 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
| Input | Required | Type | Description |
|---|---|---|---|
target | No | string | See the schema below for constraints and defaults. |
motion_hint | No | string / null | See the schema below for constraints and defaults. |
use_brief_only | No | boolean | See 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 wheng8_gtm_list_mailboxesshows 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: Fromg8_gtm_list_mailboxes.
Inputs
| Input | Required | Type | Description |
|---|---|---|---|
mailbox_id | Yes | integer | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
brief | No | string / null | See the schema below for constraints and defaults. |
core_concept | No | string / null | See the schema below for constraints and defaults. |
primary_hook | No | string / null | See the schema below for constraints and defaults. |
target_persona | No | string / null | See the schema below for constraints and defaults. |
category | No | string / null | See the schema below for constraints and defaults. |
goal | No | string / null | See the schema below for constraints and defaults. |
audience_list_id | No | string / null | See the schema below for constraints and defaults. |
detach_audience | No | boolean | See the schema below for constraints and defaults. |
documents | No | array / null | See the schema below for constraints and defaults. |
sequence_steps | No | array / null | See the schema below for constraints and defaults. |
linked_sequence_ids | No | array / null | See the schema below for constraints and defaults. |
unlink_sequence_ids | No | array / null | See 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_adandconsequencesin 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | integer | See the schema below for constraints and defaults. |
ad_id | Yes | integer | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
headline | No | string / null | See the schema below for constraints and defaults. |
primary_text | No | string / null | See the schema below for constraints and defaults. |
description | No | string / null | See the schema below for constraints and defaults. |
cta | No | string / null | See the schema below for constraints and defaults. |
destination_url | No | string / null | See the schema below for constraints and defaults. |
creative_image_url | No | string / null | See the schema below for constraints and defaults. |
creative_image_url_square | No | string / null | See the schema below for constraints and defaults. |
creative_image_url_portrait | No | string / null | See the schema below for constraints and defaults. |
logo_image_url | No | string / null | See the schema below for constraints and defaults. |
copy_assets | No | object / null | See the schema below for constraints and defaults. |
source_ad_creative_id | No | string / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
document_id | Yes | string | See the schema below for constraints and defaults. |
content | Yes | string | See the schema below for constraints and defaults. |
status | No | string / null | See the schema below for constraints and defaults. |
structured_data | No | object / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
steps | Yes | array | See 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
| Input | Required | Type | Description |
|---|---|---|---|
campaign_id | Yes | string | See the schema below for constraints and defaults. |
step_id | Yes | string | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
channel | No | string / null | See the schema below for constraints and defaults. |
mode | No | string / null | See the schema below for constraints and defaults. |
platform | No | string / null | See the schema below for constraints and defaults. |
angle_id | No | string / null | See the schema below for constraints and defaults. |
cta_type | No | string / null | See the schema below for constraints and defaults. |
personalization_level | No | string / null | See the schema below for constraints and defaults. |
constraints | No | object / null | See the schema below for constraints and defaults. |
do_not_send_rules | No | array / null | See the schema below for constraints and defaults. |
day | No | integer / null | See the schema below for constraints and defaults. |
condition | No | string / null | See the schema below for constraints and defaults. |
stop_on_reply | No | boolean / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
doc_id | Yes | string | See the schema below for constraints and defaults. |
content | No | string / null | See the schema below for constraints and defaults. |
status | No | string / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
icp_id | Yes | string | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
description | No | string / null | See the schema below for constraints and defaults. |
firmographics | No | object / null | See the schema below for constraints and defaults. |
tech_stack | No | object / null | See the schema below for constraints and defaults. |
buying_signals | No | array / null | See the schema below for constraints and defaults. |
estimated_market_size | No | integer / null | See 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: Fromg8_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
| Input | Required | Type | Description |
|---|---|---|---|
mailbox_id | Yes | integer | See the schema below for constraints and defaults. |
display_name | No | string / null | See the schema below for constraints and defaults. |
daily_limit | No | integer / null | See the schema below for constraints and defaults. |
allows_nurture | No | boolean / null | See the schema below for constraints and defaults. |
signature_html | No | string / null | See the schema below for constraints and defaults. |
signature_plain | No | string / null | See the schema below for constraints and defaults. |
use_html_signature | No | boolean / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
persona_id | Yes | string | See the schema below for constraints and defaults. |
title | No | string / null | See the schema below for constraints and defaults. |
priority | No | integer / null | See the schema below for constraints and defaults. |
confidence | No | string / null | See the schema below for constraints and defaults. |
why_target | No | string / null | See the schema below for constraints and defaults. |
key_signals | No | array / null | See the schema below for constraints and defaults. |
expected_receptivity | No | string / null | See the schema below for constraints and defaults. |
campaign_approach | No | string / null | See the schema below for constraints and defaults. |
recommended_goal | No | string / null | See the schema below for constraints and defaults. |
status | No | string / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
pipeline_id | Yes | string | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
set_default | No | boolean | See 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
| Input | Required | Type | Description |
|---|---|---|---|
report_id | Yes | string | See the schema below for constraints and defaults. |
markdown_content | No | string / null | See the schema below for constraints and defaults. |
status | No | string / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
pipeline_id | Yes | string | See the schema below for constraints and defaults. |
stage_id | Yes | string | See the schema below for constraints and defaults. |
name | No | string / null | See the schema below for constraints and defaults. |
probability | No | integer / null | See the schema below for constraints and defaults. |
stage_type | No | string / null | See the schema below for constraints and defaults. |
color | No | string / null | See the schema below for constraints and defaults. |
required_elements | No | array / null | See the schema below for constraints and defaults. |
recommended_elements | No | array / null | See the schema below for constraints and defaults. |
channel_scripts | No | object / null | See 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
| Input | Required | Type | Description |
|---|---|---|---|
file_name | Yes | string | See the schema below for constraints and defaults. |
content_base64 | Yes | string | See the schema below for constraints and defaults. |
mime_type | No | string / null | See the schema below for constraints and defaults. |
folder | No | string / null | See the schema below for constraints and defaults. |
tags | No | array / null | See 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"}