nitro
v1.5.0https://api.nitrosend.com/mcpAI-native email marketing platform for campaigns, lifecycle flows, and transactional email
Add to your MCP client configuration:
Tools
nitro_get_status
read-onlyidempotentGet current account context, sender identity, dashboard links, readiness, onboarding status, and recommendations.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_get_status",
"arguments": {}
}
}const result = await client.callTool("nitro_get_status", {});result = await session.call_tool("nitro_get_status", arguments={}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_select_account
idempotentSwitch this OAuth MCP connection to an account listed by nitro_get_status; the next call uses it. Credential-authenticated connections are pinned and cannot switch.
Parameters
account_idintegerrequiredargumentID of the account to switch to. Get IDs from nitro_get_status.available_accounts.items[*].id.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_select_account",
"arguments": {
"account_id": 0
}
}
}const result = await client.callTool("nitro_select_account", {
"account_id": 0
});result = await session.call_tool("nitro_select_account", arguments={
"account_id": 0
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_select_brand
idempotentSelect the current brand for this OAuth MCP connection. Use this instead of passing brand_sid to other tools. Credential-authenticated connections are pinned to one brand and cannot switch.
Parameters
brand_sidstringargumentExact brand SID to select. Provide either brand_sid or name.
namestringargumentBrand name to select when the SID is unknown. Provide either name or brand_sid. Ambiguous names return candidates without changing context.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_select_brand",
"arguments": {
"brand_sid": "string",
"name": "string"
}
}
}const result = await client.callTool("nitro_select_brand", {
"brand_sid": "string",
"name": "string"
});result = await session.call_tool("nitro_select_brand", arguments={
"brand_sid": "string",
"name": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_query
read-onlyidempotentQuery any Nitrosend entity. Returns paginated results.
Parameters
entitystringflowscampaignstemplatessegmentscontactslistseventsimportsmessagessuppressionshistoryproductsrequiredargumentWhich entity type to query. Use nitro_search_contacts for full-text contact search.
filtersobjectargumentEntity filters: flows status/campaign_id/trigger_event/search; campaigns status/search; templates subject; segments/lists name; contacts query/subscribed_email/subscribed_phone/list_id; events name/from/to; imports status; messages channel/status/to; suppressions email/reason/source_provider/active; history source/event_type/tool/actor/correlation_id/resource_uri/from/to; products status/query. All support integer id.
pageintegerargumentPage number (default 1)
perintegerargumentResults per page (max 50, default 25)
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_query",
"arguments": {
"entity": "flows",
"filters": {},
"page": 0,
"per": 0
}
}
}const result = await client.callTool("nitro_query", {
"entity": "flows",
"filters": {},
"page": 0,
"per": 0
});result = await session.call_tool("nitro_query", arguments={
"entity": "flows",
"filters": {},
"page": 0,
"per": 0
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_search_contacts
read-onlyidempotentSearch contacts by email, name, or phone. Returns summary list or full profile.
Parameters
querystringrequiredargumentEmail address, name, or phone number
modestringsummaryprofileargumentsummary = list, profile = single contact detail (default: summary)
pageintegerargumentPage number (default 1)
perintegerargumentResults per page (max 50, default 25)
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_search_contacts",
"arguments": {
"query": "string",
"mode": "summary",
"page": 0,
"per": 0
}
}
}const result = await client.callTool("nitro_search_contacts", {
"query": "string",
"mode": "summary",
"page": 0,
"per": 0
});result = await session.call_tool("nitro_search_contacts", arguments={
"query": "string",
"mode": "summary",
"page": 0,
"per": 0
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_set_brand_kit
idempotentopen-worldSet Brand Kit from a website, typed fields, document, or logo URL. Fields override scraping; async is URL-only.
Body
urlstringlogo_urlstringPublic/Nitro image URL; ingest local logos first.
fieldsobjectTyped Brand Kit fields.
documentstringdry_runbooleanfalsemodestringsyncasyncsyncidempotency_keystringRequired for live URL scraping or remote logo fetch; reuse only for an exact retry.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_set_brand_kit",
"arguments": {
"url": "string",
"logo_url": "string",
"fields": {
"brand_color": "string",
"text_color": "string",
"bg_color": "string",
"font_body": "string",
"font_heading": "string",
"heading_size": 0,
"body_size": 0,
"radius": 0,
"spacing_density": "compact",
"company_name": "string",
"physical_address": "string",
"company_description": "string"
},
"document": "string",
"dry_run": false,
"mode": "sync",
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_set_brand_kit", {
"url": "string",
"logo_url": "string",
"fields": {
"brand_color": "string",
"text_color": "string",
"bg_color": "string",
"font_body": "string",
"font_heading": "string",
"heading_size": 0,
"body_size": 0,
"radius": 0,
"spacing_density": "compact",
"company_name": "string",
"physical_address": "string",
"company_description": "string"
},
"document": "string",
"dry_run": false,
"mode": "sync",
"idempotency_key": "string"
});result = await session.call_tool("nitro_set_brand_kit", arguments={
"url": "string",
"logo_url": "string",
"fields": {
"brand_color": "string",
"text_color": "string",
"bg_color": "string",
"font_body": "string",
"font_heading": "string",
"heading_size": 0,
"body_size": 0,
"radius": 0,
"spacing_density": "compact",
"company_name": "string",
"physical_address": "string",
"company_description": "string"
},
"document": "string",
"dry_run": false,
"mode": "sync",
"idempotency_key": "string"
}){
"url": "string",
"logo_url": "string",
"fields": {
"brand_color": "string",
"text_color": "string",
"bg_color": "string",
"font_body": "string",
"font_heading": "string",
"heading_size": 0,
"body_size": 0,
"radius": 0,
"spacing_density": "compact",
"company_name": "string",
"physical_address": "string",
"company_description": "string"
},
"document": "string",
"dry_run": false,
"mode": "sync",
"idempotency_key": "string"
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_ingest
open-worldValidate and store an image in the brand library. Use image_data for small images, upload then signed_id for local files, or image_url for external/generated assets. Returns a durable email URL.
Body
kindstringimage_datastringBase64/data URL for PNG, JPEG, or WebP under 10 MB.
image_urlstringPublic PNG, JPEG, or WebP URL under 10 MB.
signed_idstringsigned_id returned after the reserved upload PUT.
descriptionstringTruthful visible content for library selection and alt text.
uploadobjectReserve a local-image upload; PUT bytes, then ingest its signed_id.
filenamestringcontent_typestringReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_ingest",
"arguments": {
"kind": "string",
"image_data": "string",
"image_url": "string",
"signed_id": "string",
"description": "string",
"upload": {
"kind": "string",
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"filename": "string",
"content_type": "string"
}
}
}const result = await client.callTool("nitro_ingest", {
"kind": "string",
"image_data": "string",
"image_url": "string",
"signed_id": "string",
"description": "string",
"upload": {
"kind": "string",
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"filename": "string",
"content_type": "string"
});result = await session.call_tool("nitro_ingest", arguments={
"kind": "string",
"image_data": "string",
"image_url": "string",
"signed_id": "string",
"description": "string",
"upload": {
"kind": "string",
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"filename": "string",
"content_type": "string"
}){
"kind": "string",
"image_data": "string",
"image_url": "string",
"signed_id": "string",
"description": "string",
"upload": {
"kind": "string",
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"filename": "string",
"content_type": "string"
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_manage_audience
destructiveCreate or update contacts, manage subscriptions, lists, events, segments, tags, and explicit prepaid email validation. Custom contact fields belong in attributes.data. For more than 100 contact writes, use nitro_import_contacts with CSV.
Parameters
operationstringcreate_contactupdate_contactset_subscriptionmanage_listrecord_eventdelete_segmentbulk_tagvalidaterequiredargumentChoose one audience operation. validate accepts exactly one of contact_channel_ids, contact_ids, list_id, or segment_id. Dry-run quotes without mutation; execution needs idempotency_key and prepaid funds. Deletion needs confirm.
paramsobjectrequiredargumentParameters named by operation. Contact custom fields belong in attributes.data.
dry_runbooleanfalseargumentPreview changes without persisting (default: false)
confirmbooleanfalseargumentRequired for destructive operations: delete_segment, manage_list with action='delete'
idempotency_keystringargumentOptional deduplication key. Same key returns cached result.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_manage_audience",
"arguments": {
"operation": "create_contact",
"params": {},
"dry_run": false,
"confirm": false,
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_manage_audience", {
"operation": "create_contact",
"params": {},
"dry_run": false,
"confirm": false,
"idempotency_key": "string"
});result = await session.call_tool("nitro_manage_audience", arguments={
"operation": "create_contact",
"params": {},
"dry_run": false,
"confirm": false,
"idempotency_key": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_manage_outreach
destructiveopen-worldDiscover named people for outreach: intent, estimate, then start. Companies are evidence, never recipients. start requires the quoted USD-cent spend cap and idempotency key.
Body
actionstringintentestimatestartstatuspauseresumecancelrequiredgoalstringOutreach objective for intent.
namestringRequired for start.
target_profileobjectcapabilitiesArray<string>professional_profilesconnected_profilescommunity_signalshiring_activityRequested intent capabilities; required capabilities remain included.
seedsArray<object>Up to 100 first-party person/company seeds.
seed_artifactsArray<object>Uploaded CSV seed manifests.
exclusionsobjectCampaign company exclusions; brand suppressions always apply.
target_countinteger[1, 1000]Qualified-person limit.
maximum_spend_centsinteger>= 0Authorized USD-cent cap from estimate.
campaign_idintegerRequired for status or control.
brand_context_refstringCurrent ref returned by intent.
idempotency_keystringRequired for start; reuse only for an exact retry.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_manage_outreach",
"arguments": {
"action": "intent",
"goal": "string",
"name": "string",
"target_profile": {
"criteria": [
{
"key": "string",
"subject": "prospect",
"field": "string",
"operator": "equals",
"required": false,
"weight": 1,
"minimum_confidence": 0,
"maximum_age_days": 1
}
]
},
"capabilities": [
"professional_profiles"
],
"seeds": [
{
"domain": "string",
"website_url": "string",
"careers_url": "string",
"company_name": "string",
"first_name": "string",
"last_name": "string",
"linkedin_url": "string",
"source_record_id": "string"
}
],
"seed_artifacts": [
{
"signed_id": "string"
}
],
"exclusions": {
"company_domains": [
"string"
]
},
"target_count": 1,
"maximum_spend_cents": 0,
"campaign_id": 0,
"brand_context_ref": "string",
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_manage_outreach", {
"action": "intent",
"goal": "string",
"name": "string",
"target_profile": {
"criteria": [
{
"key": "string",
"subject": "prospect",
"field": "string",
"operator": "equals",
"required": false,
"weight": 1,
"minimum_confidence": 0,
"maximum_age_days": 1
}
]
},
"capabilities": [
"professional_profiles"
],
"seeds": [
{
"domain": "string",
"website_url": "string",
"careers_url": "string",
"company_name": "string",
"first_name": "string",
"last_name": "string",
"linkedin_url": "string",
"source_record_id": "string"
}
],
"seed_artifacts": [
{
"signed_id": "string"
}
],
"exclusions": {
"company_domains": [
"string"
]
},
"target_count": 1,
"maximum_spend_cents": 0,
"campaign_id": 0,
"brand_context_ref": "string",
"idempotency_key": "string"
});result = await session.call_tool("nitro_manage_outreach", arguments={
"action": "intent",
"goal": "string",
"name": "string",
"target_profile": {
"criteria": [
{
"key": "string",
"subject": "prospect",
"field": "string",
"operator": "equals",
"required": false,
"weight": 1,
"minimum_confidence": 0,
"maximum_age_days": 1
}
]
},
"capabilities": [
"professional_profiles"
],
"seeds": [
{
"domain": "string",
"website_url": "string",
"careers_url": "string",
"company_name": "string",
"first_name": "string",
"last_name": "string",
"linkedin_url": "string",
"source_record_id": "string"
}
],
"seed_artifacts": [
{
"signed_id": "string"
}
],
"exclusions": {
"company_domains": [
"string"
]
},
"target_count": 1,
"maximum_spend_cents": 0,
"campaign_id": 0,
"brand_context_ref": "string",
"idempotency_key": "string"
}){
"action": "intent",
"goal": "string",
"name": "string",
"target_profile": {
"criteria": [
{
"key": "string",
"subject": "prospect",
"field": "string",
"operator": "equals",
"required": false,
"weight": 1,
"minimum_confidence": 0,
"maximum_age_days": 1
}
]
},
"capabilities": [
"professional_profiles"
],
"seeds": [
{
"domain": "string",
"website_url": "string",
"careers_url": "string",
"company_name": "string",
"first_name": "string",
"last_name": "string",
"linkedin_url": "string",
"source_record_id": "string"
}
],
"seed_artifacts": [
{
"signed_id": "string"
}
],
"exclusions": {
"company_domains": [
"string"
]
},
"target_count": 1,
"maximum_spend_cents": 0,
"campaign_id": 0,
"brand_context_ref": "string",
"idempotency_key": "string"
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_define_segment
idempotentPreview or persist a filtered contact segment. preview_only defaults true; set false and provide name to save.
Body
namestringfiltersArray<any> | anyrequiredFlat AND filters or a boolean group tree of attribute/event filters.
segment_idintegerpreview_onlybooleantrueidempotency_keystringReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_define_segment",
"arguments": {
"name": "string",
"filters": [],
"segment_id": 0,
"preview_only": true,
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_define_segment", {
"name": "string",
"filters": [],
"segment_id": 0,
"preview_only": true,
"idempotency_key": "string"
});result = await session.call_tool("nitro_define_segment", arguments={
"name": "string",
"filters": [],
"segment_id": 0,
"preview_only": true,
"idempotency_key": "string"
}){
"name": "string",
"filters": [],
"segment_id": 0,
"preview_only": true,
"idempotency_key": "string"
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_import_contacts
Import up to 100 inline contacts or use the CSV upload/finalize path for up to 250k. Existing subscription state is preserved unless opt_in is explicit; SMS opt-in must be explicit.
Body
recordsArray<object>Up to 100 contacts; use data for custom fields.
import_idintegersigned_idstringsigned_id returned after the reserved CSV upload PUT.
uploadobjectReserve a CSV upload; PUT bytes, then process its signed_id.
resourcestringcontactsparserstringdefaultcolumnsobjectoptionsobjectImport options, including list_ids.
dry_runbooleanfalseidempotency_keystringReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_import_contacts",
"arguments": {
"records": [
{
"email": "string",
"phone": "string",
"first_name": "string",
"last_name": "string",
"country_code": "string",
"source": "string",
"data": {},
"opt_in": true
}
],
"import_id": 0,
"signed_id": "string",
"upload": {
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"resource": "contacts",
"parser": "default",
"columns": {},
"options": {
"list_ids": [
0
]
},
"dry_run": false,
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_import_contacts", {
"records": [
{
"email": "string",
"phone": "string",
"first_name": "string",
"last_name": "string",
"country_code": "string",
"source": "string",
"data": {},
"opt_in": true
}
],
"import_id": 0,
"signed_id": "string",
"upload": {
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"resource": "contacts",
"parser": "default",
"columns": {},
"options": {
"list_ids": [
0
]
},
"dry_run": false,
"idempotency_key": "string"
});result = await session.call_tool("nitro_import_contacts", arguments={
"records": [
{
"email": "string",
"phone": "string",
"first_name": "string",
"last_name": "string",
"country_code": "string",
"source": "string",
"data": {},
"opt_in": true
}
],
"import_id": 0,
"signed_id": "string",
"upload": {
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"resource": "contacts",
"parser": "default",
"columns": {},
"options": {
"list_ids": [
0
]
},
"dry_run": false,
"idempotency_key": "string"
}){
"records": [
{
"email": "string",
"phone": "string",
"first_name": "string",
"last_name": "string",
"country_code": "string",
"source": "string",
"data": {},
"opt_in": true
}
],
"import_id": 0,
"signed_id": "string",
"upload": {
"filename": "string",
"content_type": "string",
"byte_size": 0,
"checksum": "string"
},
"resource": "contacts",
"parser": "default",
"columns": {},
"options": {
"list_ids": [
0
]
},
"dry_run": false,
"idempotency_key": "string"
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_manage_template
Create, edit, or clone a reusable email template. For a creative design, start with composition_mode=intent and follow its exact next_call. Exact edits use template_id, section_updates, and if_version; based_on clones. Use nitro_compose_campaign for broadcasts.
Body
sectionsArray<object>Email sections. Follow next_call for composition; use nitro://schema only for full authoring. Images use public or nitro_ingest media_url/image_url, never signed_id.
section_updatesArray<object>Targeted section edits; never changes order or type.
subjectstringnamestringcomposition_modestringintentdraftvalidategenerateintent plans; validate checks; draft persists; generate composes and persists.
contract_idstringbrand_context_refstringvalidate_onlybooleanfalseAlias for validate; never persists.
design_mode_overridestringpremium_richpremium_minimalfounder_letterutility_plainrenegotiatebooleanfalseuser_instructionstringcreative_route_idstringIntent-only route id; unavailable or invalid routes fail explicitly.
source_textstringUntrusted source evidence; put authoring directions in user_instruction.
factsArray<object>Literal evidence: required values must appear; available values may be used.
draft_metaobjectOptional authoring provenance; never blocks validation or persistence.
preheaderstringbodystringPlain-text alternative for custom mode.
plain_text_modestringderivedcustomWhether plain text is derived or custom.
from_namestringfrom_emailstringreply_tostringthemeobjectBrand-theme overrides; logo_url uses public or nitro_ingest media_url/image_url, never signed_id.
template_idintegerbased_onintegerif_versionintegerVersion token for conflict-safe writes.
goalstringdry_runbooleanfalseidempotency_keystringRequired for non-dry-run persistence; reuse only for an exact retry.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_manage_template",
"arguments": {
"sections": [
{}
],
"section_updates": [
{
"id": "string",
"index": 0,
"type": "string",
"occurrence": 0,
"props": {},
"styles": {},
"text_patch": {
"prop": "string",
"find": "string",
"replace": "string",
"all": false
}
}
],
"subject": "string",
"name": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"preheader": "string",
"body": "string",
"plain_text_mode": "derived",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"theme": {},
"template_id": 0,
"based_on": 0,
"if_version": 0,
"goal": "string",
"dry_run": false,
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_manage_template", {
"sections": [
{}
],
"section_updates": [
{
"id": "string",
"index": 0,
"type": "string",
"occurrence": 0,
"props": {},
"styles": {},
"text_patch": {
"prop": "string",
"find": "string",
"replace": "string",
"all": false
}
}
],
"subject": "string",
"name": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"preheader": "string",
"body": "string",
"plain_text_mode": "derived",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"theme": {},
"template_id": 0,
"based_on": 0,
"if_version": 0,
"goal": "string",
"dry_run": false,
"idempotency_key": "string"
});result = await session.call_tool("nitro_manage_template", arguments={
"sections": [
{}
],
"section_updates": [
{
"id": "string",
"index": 0,
"type": "string",
"occurrence": 0,
"props": {},
"styles": {},
"text_patch": {
"prop": "string",
"find": "string",
"replace": "string",
"all": false
}
}
],
"subject": "string",
"name": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"preheader": "string",
"body": "string",
"plain_text_mode": "derived",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"theme": {},
"template_id": 0,
"based_on": 0,
"if_version": 0,
"goal": "string",
"dry_run": false,
"idempotency_key": "string"
}){
"sections": [
{}
],
"section_updates": [
{
"id": "string",
"index": 0,
"type": "string",
"occurrence": 0,
"props": {},
"styles": {},
"text_patch": {
"prop": "string",
"find": "string",
"replace": "string",
"all": false
}
}
],
"subject": "string",
"name": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"preheader": "string",
"body": "string",
"plain_text_mode": "derived",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"theme": {},
"template_id": 0,
"based_on": 0,
"if_version": 0,
"goal": "string",
"dry_run": false,
"idempotency_key": "string"
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_compose_flow
destructiveCreate or edit an automation-flow draft; never activates it. For creative email, start with composition_mode=intent and follow its exact next_call. Multi-email flows choose routes per action_name. replace requires flow_id, confirm, and the draft revision; patch preserves other nodes. Activation uses nitro_control_delivery.
Body
namestringFlow name; required when creating.
modestringcreatereplacepatchcreatecreate: new complete graph; replace: complete existing draft graph; patch: name and/or selected email actions
flow_idintegerexpected_updated_atstringLegacy compatibility token; prefer draft revision id.
expected_draft_revision_idintegerLatest draft revision id for conflict-safe writes.
goalstringcomposition_modestringintentdraftvalidategenerateintent plans; validate checks; draft persists; generate composes and persists.
contract_idstringbrand_context_refstringvalidate_onlybooleanfalseAlias for validate; never persists.
design_mode_overridestringpremium_richpremium_minimalfounder_letterutility_plainrenegotiatebooleanfalseuser_instructionstringcreative_route_idstringIntent-only sequence-wide route id; invalid choices fail.
email_baseline_selectionsArray<object>Intent-only creative_routes[].id and image binding ids per email action_name.
source_textstringUntrusted source evidence; put authoring directions in user_instruction.
factsArray<object>Literal evidence: required values must appear; available values may be used.
draft_metaobjectOptional authoring provenance; never blocks validation or persistence.
triggerobjectstepsArray<any>Ordered graph steps; exact typed fields are in $defs.flowStep.
dry_runbooleanfalseidempotency_keystringRequired for non-dry-run persistence; reuse only for an exact retry.
confirmbooleanfalseReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_compose_flow",
"arguments": {
"name": "string",
"mode": "create",
"flow_id": 0,
"expected_updated_at": "string",
"expected_draft_revision_id": 0,
"goal": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"email_baseline_selections": [
{
"action_name": "string",
"route_id": "string",
"image_binding_ids": [
"string"
]
}
],
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"trigger": {
"event": "string",
"action_name": "string",
"segment_id": 0,
"contact_list_id": 0,
"resource_type": "string",
"data": {}
},
"steps": [],
"dry_run": false,
"idempotency_key": "string",
"confirm": false
}
}
}const result = await client.callTool("nitro_compose_flow", {
"name": "string",
"mode": "create",
"flow_id": 0,
"expected_updated_at": "string",
"expected_draft_revision_id": 0,
"goal": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"email_baseline_selections": [
{
"action_name": "string",
"route_id": "string",
"image_binding_ids": [
"string"
]
}
],
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"trigger": {
"event": "string",
"action_name": "string",
"segment_id": 0,
"contact_list_id": 0,
"resource_type": "string",
"data": {}
},
"steps": [],
"dry_run": false,
"idempotency_key": "string",
"confirm": false
});result = await session.call_tool("nitro_compose_flow", arguments={
"name": "string",
"mode": "create",
"flow_id": 0,
"expected_updated_at": "string",
"expected_draft_revision_id": 0,
"goal": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"email_baseline_selections": [
{
"action_name": "string",
"route_id": "string",
"image_binding_ids": [
"string"
]
}
],
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"trigger": {
"event": "string",
"action_name": "string",
"segment_id": 0,
"contact_list_id": 0,
"resource_type": "string",
"data": {}
},
"steps": [],
"dry_run": false,
"idempotency_key": "string",
"confirm": false
}){
"name": "string",
"mode": "create",
"flow_id": 0,
"expected_updated_at": "string",
"expected_draft_revision_id": 0,
"goal": "string",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"email_baseline_selections": [
{
"action_name": "string",
"route_id": "string",
"image_binding_ids": [
"string"
]
}
],
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"trigger": {
"event": "string",
"action_name": "string",
"segment_id": 0,
"contact_list_id": 0,
"resource_type": "string",
"data": {}
},
"steps": [],
"dry_run": false,
"idempotency_key": "string",
"confirm": false
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_compose_campaign
destructiveCreate or edit an email/SMS broadcast draft; never delivers it. For creative email, start with composition_mode=intent and follow its exact next_call. patch preserves omitted fields; replace requires campaign_id and confirm, and clears omitted audience or schedule. Use nitro_compose_flow for automation and nitro_send_message for transactional mail.
Body
namestringCampaign name; required when creating.
modestringcreatepatchreplacecreatecreate a draft; patch supplied fields; replace all draft state and requires confirm.
campaign_idintegerchannelstringemailsmsemailemail or sms; immutable after creation.
goalstringcategorystringpromotionannouncementnewsletterwelcomereengagementtransactionalplainoutreachEmail job used to select a baseline.
composition_modestringintentdraftvalidategenerateintent plans; validate checks; draft persists; generate composes and persists.
contract_idstringbrand_context_refstringvalidate_onlybooleanfalseAlias for validate; never persists.
design_mode_overridestringpremium_richpremium_minimalfounder_letterutility_plainrenegotiatebooleanfalseuser_instructionstringcreative_route_idstringIntent-only route id; unavailable or invalid routes fail explicitly.
source_textstringUntrusted source evidence; put authoring directions in user_instruction.
factsArray<object>Literal evidence: required values must appear; available values may be used.
draft_metaobjectOptional authoring provenance; never blocks validation or persistence.
subjectstringpreheaderstringfrom_namestringfrom_emailstringreply_tostringbodystringplain_text_modestringderivedcustomWhether plain text is derived or custom.
sectionsArray<object>Email design sections; requires subject. Images accept public or nitro_ingest media_url/image_url, never raw signed_id.
themeobjectBrand-theme overrides. logo_url must be public or a nitro_ingest media_url/image_url, never raw signed_id.
template_idintegerif_versionintegerVersion token for conflict-safe writes.
audienceobjectTarget audience; all_contacts must be explicit.
scheduled_atstring<date-time>ISO 8601 delivery time.
dry_runbooleanfalseidempotency_keystringRequired for non-dry-run persistence; reuse only for an exact retry.
confirmbooleanfalseReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_compose_campaign",
"arguments": {
"name": "string",
"mode": "create",
"campaign_id": 0,
"channel": "email",
"goal": "string",
"category": "promotion",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"subject": "string",
"preheader": "string",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"body": "string",
"plain_text_mode": "derived",
"sections": [
{}
],
"theme": {},
"template_id": 0,
"if_version": 0,
"audience": {
"audience_type": "lists",
"contact_list_ids": [
0
],
"contact_list_id": 0,
"segment_id": 0,
"exclude_segment_ids": [
0
],
"exclude_contact_list_ids": [
0
]
},
"scheduled_at": "2024-01-15T09:30:00Z",
"dry_run": false,
"idempotency_key": "string",
"confirm": false
}
}
}const result = await client.callTool("nitro_compose_campaign", {
"name": "string",
"mode": "create",
"campaign_id": 0,
"channel": "email",
"goal": "string",
"category": "promotion",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"subject": "string",
"preheader": "string",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"body": "string",
"plain_text_mode": "derived",
"sections": [
{}
],
"theme": {},
"template_id": 0,
"if_version": 0,
"audience": {
"audience_type": "lists",
"contact_list_ids": [
0
],
"contact_list_id": 0,
"segment_id": 0,
"exclude_segment_ids": [
0
],
"exclude_contact_list_ids": [
0
]
},
"scheduled_at": "2024-01-15T09:30:00Z",
"dry_run": false,
"idempotency_key": "string",
"confirm": false
});result = await session.call_tool("nitro_compose_campaign", arguments={
"name": "string",
"mode": "create",
"campaign_id": 0,
"channel": "email",
"goal": "string",
"category": "promotion",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"subject": "string",
"preheader": "string",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"body": "string",
"plain_text_mode": "derived",
"sections": [
{}
],
"theme": {},
"template_id": 0,
"if_version": 0,
"audience": {
"audience_type": "lists",
"contact_list_ids": [
0
],
"contact_list_id": 0,
"segment_id": 0,
"exclude_segment_ids": [
0
],
"exclude_contact_list_ids": [
0
]
},
"scheduled_at": "2024-01-15T09:30:00Z",
"dry_run": false,
"idempotency_key": "string",
"confirm": false
}){
"name": "string",
"mode": "create",
"campaign_id": 0,
"channel": "email",
"goal": "string",
"category": "promotion",
"composition_mode": "intent",
"contract_id": "string",
"brand_context_ref": "string",
"validate_only": false,
"design_mode_override": "premium_rich",
"renegotiate": false,
"user_instruction": "string",
"creative_route_id": "string",
"source_text": "string",
"facts": [
{
"kind": "url",
"value": "string",
"description": "string",
"requirement": "required"
}
],
"draft_meta": {
"creative_route_id": "string",
"concrete_anchor": "string",
"why_this_earns_the_inbox": "string"
},
"subject": "string",
"preheader": "string",
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"body": "string",
"plain_text_mode": "derived",
"sections": [
{}
],
"theme": {},
"template_id": 0,
"if_version": 0,
"audience": {
"audience_type": "lists",
"contact_list_ids": [
0
],
"contact_list_id": 0,
"segment_id": 0,
"exclude_segment_ids": [
0
],
"exclude_contact_list_ids": [
0
]
},
"scheduled_at": "2024-01-15T09:30:00Z",
"dry_run": false,
"idempotency_key": "string",
"confirm": false
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_manage_domains
destructiveopen-worldActivate or select the Nitrosend brand-subdomain sender, or add, verify, diagnose, list, and remove customer sending domains. Receiving MX appears only after forward-all exists.
Body
operationstringprepare_brand_subdomainselect_brand_subdomainaddverifycheck_dnslistremoverequiredprepare_brand_subdomain locally materializes the shared-root sender and is idempotent. select_brand_subdomain selects a ready sender with optional local_part and apex. add registers a customer domain and returns required DNS records. verify checks provider and DNS readiness. check_dns diagnoses DNS and tracking HTTPS only. list returns domains, readiness, records, DMARC, and allowance use. remove requires domain_name and confirm; retry paired removal with unpair after showing its effect.
paramsobjectOperation-specific parameters.
confirmbooleanfalseRequired for remove operation (destructive)
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_manage_domains",
"arguments": {
"operation": "prepare_brand_subdomain",
"params": {
"domain_name": "string",
"author_domain": "string",
"local_part": "string",
"apex": "string",
"unpair": true
},
"confirm": false
}
}
}const result = await client.callTool("nitro_manage_domains", {
"operation": "prepare_brand_subdomain",
"params": {
"domain_name": "string",
"author_domain": "string",
"local_part": "string",
"apex": "string",
"unpair": true
},
"confirm": false
});result = await session.call_tool("nitro_manage_domains", arguments={
"operation": "prepare_brand_subdomain",
"params": {
"domain_name": "string",
"author_domain": "string",
"local_part": "string",
"apex": "string",
"unpair": true
},
"confirm": false
}){
"operation": "prepare_brand_subdomain",
"params": {
"domain_name": "string",
"author_domain": "string",
"local_part": "string",
"apex": "string",
"unpair": true
},
"confirm": false
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_configure_account
idempotentRead or configure sender defaults and test recipients. Use nitro_get_status for readiness; from_email explicitly selects an authorized, ready, brand-owned sending identity.
Parameters
from_namestringargumentSender display name (e.g. 'Acme Marketing')
from_emailstringargumentExact visible From address to select. May use the apex when a ready aligned sending subdomain authorizes it.
reply_tostringargumentReply-to email address
test_email_recipientsArray<string>argumentSaved email addresses for test sends (max 5). Pass empty array to clear.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_configure_account",
"arguments": {
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"test_email_recipients": [
"user@example.com"
]
}
}
}const result = await client.callTool("nitro_configure_account", {
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"test_email_recipients": [
"user@example.com"
]
});result = await session.call_tool("nitro_configure_account", arguments={
"from_name": "string",
"from_email": "string",
"reply_to": "string",
"test_email_recipients": [
"user@example.com"
]
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_review_delivery
read-onlyidempotentRead-only content and readiness review with validation, spam/SMS analysis, preflight, and previews. Flow review needs exact revision_id; this never approves or sends.
Parameters
target_typestringtemplateflowcampaignrequiredargumentEntity type to review
target_idinteger>= 1requiredargumentEntity ID to review
revision_idinteger>= 1argumentRequired for flows. Exact immutable flow revision to review.
contact_idinteger>= 1argumentOptional contact ID for merge-tag personalization during review
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_review_delivery",
"arguments": {
"target_type": "template",
"target_id": 1,
"revision_id": 1,
"contact_id": 1
}
}
}const result = await client.callTool("nitro_review_delivery", {
"target_type": "template",
"target_id": 1,
"revision_id": 1,
"contact_id": 1
});result = await session.call_tool("nitro_review_delivery", arguments={
"target_type": "template",
"target_id": 1,
"revision_id": 1,
"contact_id": 1
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_send_test_message
destructiveidempotentopen-worldSend one real email/SMS test for a template, campaign, or exact flow revision. Never approves or sends to an audience.
Parameters
target_typestringtemplateflowcampaignargumentTarget entity type. Use with target_id unless latest_campaign or template_id is used.
target_idinteger>= 1argumentTarget entity ID. Use with target_type.
latest_campaignbooleanfalseargumentUse the most recently created campaign in this brand.
template_idinteger>= 1argumentTemplate to test directly, or the specific flow/campaign template to choose.
action_idinteger>= 1argumentFlow action ID to test when a flow has multiple message steps.
revision_idinteger>= 1argumentRequired for flow targets. Exact immutable flow revision to test.
channelstringautoemailsmsautoargumentChannel to test. Use auto unless a standalone template is ambiguous.
contact_idinteger>= 1argumentContact ID for recipient and merge-tag personalization. If present, this contact supplies the recipient address/phone.
toArray<string>argumentExplicit test recipients. Use email addresses for email targets and E.164 phone numbers for SMS targets.
dry_runbooleanfalseargumentValidate target and recipients without sending.
idempotency_keystringargumentRequired for live test sends. Reuse the same stable key on retry to prevent duplicate delivery.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_send_test_message",
"arguments": {
"target_type": "template",
"target_id": 1,
"latest_campaign": false,
"template_id": 1,
"action_id": 1,
"revision_id": 1,
"channel": "auto",
"contact_id": 1,
"to": [
"string"
],
"dry_run": false,
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_send_test_message", {
"target_type": "template",
"target_id": 1,
"latest_campaign": false,
"template_id": 1,
"action_id": 1,
"revision_id": 1,
"channel": "auto",
"contact_id": 1,
"to": [
"string"
],
"dry_run": false,
"idempotency_key": "string"
});result = await session.call_tool("nitro_send_test_message", arguments={
"target_type": "template",
"target_id": 1,
"latest_campaign": false,
"template_id": 1,
"action_id": 1,
"revision_id": 1,
"channel": "auto",
"contact_id": 1,
"to": [
"string"
],
"dry_run": false,
"idempotency_key": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_control_delivery
destructiveopen-worldApprove or control flow/campaign delivery after review. Requires the reviewed brand sid; resume never publishes a draft, and flow publication requires its exact revision.
Parameters
target_typestringflowcampaignrequiredargumenttarget_idinteger>= 1requiredargumentexpected_brand_sidstringrequiredargumentCopy meta.current_brand.sid from the reviewed result.
operationstringapproverejectliveschedulepauseresumecancelarchiverestoredeleterequiredargumentapprove preflights; schedule is campaign-only; delete requires confirm and a never-sent draft.
scheduled_atstring<date-time>argumentRequired for schedule.
revision_idinteger>= 1argumentExact flow revision for approve, reject, or live.
confirm_send_to_allbooleanargumentExplicit all_contacts confirmation for live/schedule.
confirmbooleanargumentRequired for delete.
idempotency_keystringargumentCampaign-live retry key; reuse only for the same send.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_control_delivery",
"arguments": {
"target_type": "flow",
"target_id": 1,
"expected_brand_sid": "string",
"operation": "approve",
"scheduled_at": "2024-01-15T09:30:00Z",
"revision_id": 1,
"confirm_send_to_all": true,
"confirm": true,
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_control_delivery", {
"target_type": "flow",
"target_id": 1,
"expected_brand_sid": "string",
"operation": "approve",
"scheduled_at": "2024-01-15T09:30:00Z",
"revision_id": 1,
"confirm_send_to_all": true,
"confirm": true,
"idempotency_key": "string"
});result = await session.call_tool("nitro_control_delivery", arguments={
"target_type": "flow",
"target_id": 1,
"expected_brand_sid": "string",
"operation": "approve",
"scheduled_at": "2024-01-15T09:30:00Z",
"revision_id": 1,
"confirm_send_to_all": true,
"confirm": true,
"idempotency_key": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_get_insights
read-onlyidempotentGet email analytics with trends, benchmarks, and recommendations.
Parameters
scopestringaccountflowcampaignmessagerequiredargumentScope of insights: account-wide, per flow, per campaign, or per message
entity_idinteger>= 1argumentRequired for flow/campaign/message scope
periodstring7d30d90d30dargumentTime period for metrics (default 30d)
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_get_insights",
"arguments": {
"scope": "account",
"entity_id": 1,
"period": "30d"
}
}
}const result = await client.callTool("nitro_get_insights", {
"scope": "account",
"entity_id": 1,
"period": "30d"
});result = await session.call_tool("nitro_get_insights", arguments={
"scope": "account",
"entity_id": 1,
"period": "30d"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_configure_providers
idempotentConfigure BYO email provider credentials or check provider status.
Parameters
operationstringconfigurestatusrequiredargumentconfigure sets BYO provider credentials; status checks current provider health
providerstringmailgunsespostmarkresendsendgridargumentEmail provider (required for configure)
api_keystringargumentProvider API key (required for configure, never returned in responses)
api_secretstringargumentOptional provider secret (never returned in responses)
regionstringargumentProvider region where required, or the Mailgun sending domain
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_configure_providers",
"arguments": {
"operation": "configure",
"provider": "mailgun",
"api_key": "string",
"api_secret": "string",
"region": "string"
}
}
}const result = await client.callTool("nitro_configure_providers", {
"operation": "configure",
"provider": "mailgun",
"api_key": "string",
"api_secret": "string",
"region": "string"
});result = await session.call_tool("nitro_configure_providers", arguments={
"operation": "configure",
"provider": "mailgun",
"api_key": "string",
"api_secret": "string",
"region": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_set_memory
idempotentRead or update the AI memory document. Operations: read (get current), update (replace entirely), patch (replace a ## section by heading), append (add text to end).
Parameters
operationstringreadupdatepatchappendrequiredargumentread: get current document. update: replace entirely. patch: replace a ## section by heading. append: add text to end.
documentstringargumentFull markdown document (required for update).
headingstringargumentSection heading to patch (e.g. 'Brand Goals'). Required for patch operation. Matches ## headings.
contentstringargumentNew content for the section (patch) or text to append (append).
dry_runbooleanfalseargumentidempotency_keystringargumentRequired for non-dry-run append. Reuse the same key only for an exact retry. Update and patch are set operations and may omit it.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_set_memory",
"arguments": {
"operation": "read",
"document": "string",
"heading": "string",
"content": "string",
"dry_run": false,
"idempotency_key": "string"
}
}
}const result = await client.callTool("nitro_set_memory", {
"operation": "read",
"document": "string",
"heading": "string",
"content": "string",
"dry_run": false,
"idempotency_key": "string"
});result = await session.call_tool("nitro_set_memory", arguments={
"operation": "read",
"document": "string",
"heading": "string",
"content": "string",
"dry_run": false,
"idempotency_key": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_manage_billing
open-worldRead billing/plans, create operator-approved subscription or add-funds checkout URLs, and poll status. This tool never pays; the operator opens the URL. Prepaid balance is separate from plans.
Body
operationstringstatuscheckoutcheckout_statusplansadd_fundsfunding_purchase_statusrequiredBilling operation to perform
paramsobjectOperation-specific parameters.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_manage_billing",
"arguments": {
"operation": "status",
"params": {
"plan_id": 0,
"amount_cents": 0,
"currency": "string",
"idempotency_key": "string",
"purchase_id": 0
}
}
}
}const result = await client.callTool("nitro_manage_billing", {
"operation": "status",
"params": {
"plan_id": 0,
"amount_cents": 0,
"currency": "string",
"idempotency_key": "string",
"purchase_id": 0
}
});result = await session.call_tool("nitro_manage_billing", arguments={
"operation": "status",
"params": {
"plan_id": 0,
"amount_cents": 0,
"currency": "string",
"idempotency_key": "string",
"purchase_id": 0
}
}){
"operation": "status",
"params": {
"plan_id": 0,
"amount_cents": 0,
"currency": "string",
"idempotency_key": "string",
"purchase_id": 0
}
}{
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_send_message
destructiveidempotentopen-worldSend one transactional email/SMS now. Use nitro_compose_campaign for broadcasts and nitro_compose_flow for sequences. Reuse idempotency_key only for an exact retry.
Parameters
channelstringemailsmsrequiredargumentDelivery channel
tostringrequiredargumentRecipient email address or E.164 phone number
subjectstringargumentEmail subject line (required for email)
bodystringargumentMessage body. Required for SMS. Optional plain text for email.
template_idintegerargumentLoad email design from an existing template (email only)
dataobjectargumentTransactional merge variables. Use in email templates as {{ data.order_id }} or nested paths like {{ data.customer.name }}.
idempotency_keystringargumentRequired for live sends. Reuse the same stable key on retry to prevent duplicate delivery.
dry_runbooleanfalseargumentValidate and preview without sending
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_send_message",
"arguments": {
"channel": "email",
"to": "string",
"subject": "string",
"body": "string",
"template_id": 0,
"data": {},
"idempotency_key": "string",
"dry_run": false
}
}
}const result = await client.callTool("nitro_send_message", {
"channel": "email",
"to": "string",
"subject": "string",
"body": "string",
"template_id": 0,
"data": {},
"idempotency_key": "string",
"dry_run": false
});result = await session.call_tool("nitro_send_message", arguments={
"channel": "email",
"to": "string",
"subject": "string",
"body": "string",
"template_id": 0,
"data": {},
"idempotency_key": "string",
"dry_run": false
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_inbox
read-onlyidempotentRead the agent queue or mailbox. Follow exact next_calls for older or truncated thread content.
Parameters
commandstringlist_queueget_itemvalidate_replylist_mailboxget_threadget_thread_pageget_message_bodyrequiredargumentaction_item_idintegerargumentconversation_idintegerargumentbefore_occurred_atstringargumentExact ISO 8601 thread cursor returned by get_thread or get_thread_page
before_message_idintegerargumentExact thread cursor message id returned with before_occurred_at
message_idintegerargumentoffsetinteger>= 0argumentExact sanitized-body character offset returned by get_thread or get_message_body
statestringquarantineneeds_humanagent_readyhandledneeds_attentionallargumentOptional queue state filter; default needs_attention
statusstringopenclosedarchivedargumentquerystringargumentinbox_idintegerargumentpageintegerargumentperintegerargumentbrand_context_refstringargumentCurrent context ref for get_item/get_thread.
reply_context_digeststringargumentCurrent reply_context.context_digest required by validate_reply.
subjectstringargumentbodystringargumenthtmlstringargumentReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_inbox",
"arguments": {
"command": "list_queue",
"action_item_id": 0,
"conversation_id": 0,
"before_occurred_at": "string",
"before_message_id": 0,
"message_id": 0,
"offset": 0,
"state": "quarantine",
"status": "open",
"query": "string",
"inbox_id": 0,
"page": 0,
"per": 0,
"brand_context_ref": "string",
"reply_context_digest": "string",
"subject": "string",
"body": "string",
"html": "string"
}
}
}const result = await client.callTool("nitro_inbox", {
"command": "list_queue",
"action_item_id": 0,
"conversation_id": 0,
"before_occurred_at": "string",
"before_message_id": 0,
"message_id": 0,
"offset": 0,
"state": "quarantine",
"status": "open",
"query": "string",
"inbox_id": 0,
"page": 0,
"per": 0,
"brand_context_ref": "string",
"reply_context_digest": "string",
"subject": "string",
"body": "string",
"html": "string"
});result = await session.call_tool("nitro_inbox", arguments={
"command": "list_queue",
"action_item_id": 0,
"conversation_id": 0,
"before_occurred_at": "string",
"before_message_id": 0,
"message_id": 0,
"offset": 0,
"state": "quarantine",
"status": "open",
"query": "string",
"inbox_id": 0,
"page": 0,
"per": 0,
"brand_context_ref": "string",
"reply_context_digest": "string",
"subject": "string",
"body": "string",
"html": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_inbox_action
destructiveopen-worldMutate an agent inbox item or mailbox thread. Commands: send_reply, send_reply_test, mark_handled, request_human, release_to_agent, mark_quarantine.
Parameters
commandstringsend_replysend_reply_testmark_handledrequest_humanrelease_to_agentmark_quarantinerequiredargumentInbox action command
action_item_idintegerargumentQueue item id for queue-gated commands
conversation_idintegerargumentMailbox conversation id for reply commands
subjectstringargumentOptional reply subject for send_reply or send_reply_test
bodystringargumentPlain text reply body for send_reply or send_reply_test
htmlstringargumentOptional HTML reply body for send_reply or send_reply_test
reply_context_digeststringargumentCurrent reply_context.context_digest from nitro_inbox get_item/get_thread. Required for reply commands.
toArray<string>argumentExplicit test recipients for send_reply_test
idempotency_keystringargumentRequired for all action commands
dry_runbooleanfalseargumentValidate send_reply or send_reply_test without creating or sending
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_inbox_action",
"arguments": {
"command": "send_reply",
"action_item_id": 0,
"conversation_id": 0,
"subject": "string",
"body": "string",
"html": "string",
"reply_context_digest": "string",
"to": [
"string"
],
"idempotency_key": "string",
"dry_run": false
}
}
}const result = await client.callTool("nitro_inbox_action", {
"command": "send_reply",
"action_item_id": 0,
"conversation_id": 0,
"subject": "string",
"body": "string",
"html": "string",
"reply_context_digest": "string",
"to": [
"string"
],
"idempotency_key": "string",
"dry_run": false
});result = await session.call_tool("nitro_inbox_action", arguments={
"command": "send_reply",
"action_item_id": 0,
"conversation_id": 0,
"subject": "string",
"body": "string",
"html": "string",
"reply_context_digest": "string",
"to": [
"string"
],
"idempotency_key": "string",
"dry_run": false
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_request_support
Submit support only when asked or tools cannot resolve the issue; never promote it. Send a complete message within 1500 characters; there is no truncation.
Parameters
subjectstringrequiredargumentBrief summary of the issue
messagestringrequiredargumentComplete, self-contained summary of the issue. Must fit within 1500 characters; do not rely on truncation.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_request_support",
"arguments": {
"subject": "string",
"message": "string"
}
}
}const result = await client.callTool("nitro_request_support", {
"subject": "string",
"message": "string"
});result = await session.call_tool("nitro_request_support", arguments={
"subject": "string",
"message": "string"
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}nitro_search_docs
read-onlyidempotentSearch Nitrosend guides and API/MCP/CLI/integration references. Ground unestablished product claims in returned excerpts; search again or state what remains unverified.
Parameters
querystringrequiredargumentWhat to look up, e.g. 'verify sending domain', 'rest api authentication', 'cli install', 'connect cursor'
limitinteger6argumentMaximum results to return (default 6, max 10)
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "nitro_search_docs",
"arguments": {
"query": "string",
"limit": 6
}
}
}const result = await client.callTool("nitro_search_docs", {
"query": "string",
"limit": 6
});result = await session.call_tool("nitro_search_docs", arguments={
"query": "string",
"limit": 6
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}Resources
guide
Reference guide for unfamiliar Nitrosend vocabulary and workflows. Covers Nitrosend entities (contacts, channels, flows, campaigns, templates, segments), the two operating modes (tool-driven and goal-driven), the recommended workflow sequence, volume and tier constraints, and common pitfalls.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://guide"
}
}const result = await client.readResource("nitro://guide");result = await session.read_resource("nitro://guide"){
"content": [
{
"type": "text",
"text": "..."
}
]
}account
Live snapshot of the current account context: account, brand, sender identity, dashboard links, tier (free / paid / trusted), email and SMS volume used vs caps, onboarding checklist progress, contact and list counts, and active flow/campaign summary.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://account"
}
}const result = await client.readResource("nitro://account");result = await session.read_resource("nitro://account"){
"content": [
{
"type": "text",
"text": "..."
}
]
}schema
Machine-readable schema for composing emails and flows. Includes every email section type (header, text, image, button, columns, product, social, divider, spacer, footer) with required and optional props, all flow step types with their parameters, trigger event names, and the full list of segment filter names and predicates.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://schema"
}
}const result = await client.readResource("nitro://schema");result = await session.read_resource("nitro://schema"){
"content": [
{
"type": "text",
"text": "..."
}
]
}brand-kit
The selected brand's Brand Kit identity. Returns brand_color, text_color, bg_color, font_heading, font_body, logo_url, company_name, company_description, physical_address, screenshot_url when a website screenshot exists, and the brand voice document. For local logo files, use nitro_ingest with image_data or upload reservation before setting logo_url. Creative intent contracts already include the canonical authoring context; read this resource for manual edits or deeper inspection.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://brand-kit"
}
}const result = await client.readResource("nitro://brand-kit");result = await session.read_resource("nitro://brand-kit"){
"content": [
{
"type": "text",
"text": "..."
}
]
}providers
Current email transport configuration and health. Shows whether delivery uses Nitrosend SES or a connected provider (Mailgun, SES, Postmark, Resend, SendGrid), domain verification status for each sending domain, and the explicitly selected sending identity.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://providers"
}
}const result = await client.readResource("nitro://providers");result = await session.read_resource("nitro://providers"){
"content": [
{
"type": "text",
"text": "..."
}
]
}config
Account-level sender defaults: from_name, from_email, reply_to, and saved test email recipients. These are applied automatically to campaigns and flows when per-message overrides are not specified.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://config"
}
}const result = await client.readResource("nitro://config");result = await session.read_resource("nitro://config"){
"content": [
{
"type": "text",
"text": "..."
}
]
}email-design
Deep email design reference for campaign, template, or flow email sections. Composition contracts already include selected design capsules; read this only when deeper archetype, color, imagery, whitespace, footer, or section-translation context is needed.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://email-design"
}
}const result = await client.readResource("nitro://email-design");result = await session.read_resource("nitro://email-design"){
"content": [
{
"type": "text",
"text": "..."
}
]
}email-marketing
Deep email marketing reference for campaign, template, or flow email content. Composition contracts already include selected marketing capsules; read this only when deeper strategy, audience, lifecycle, copy, deliverability, compliance, or intent context is needed.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://email-marketing"
}
}const result = await client.readResource("nitro://email-marketing");result = await session.read_resource("nitro://email-marketing"){
"content": [
{
"type": "text",
"text": "..."
}
]
}lifecycle
Canonical machine-readable lifecycle flow catalog. Includes priority order, goal aliases, real trigger events, trigger gating requirements, revenue rationale, and structured cadence for welcome, abandoned cart, browse abandonment, post-purchase, win-back, re-engagement, and newsletter flows.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://lifecycle"
}
}const result = await client.readResource("nitro://lifecycle");result = await session.read_resource("nitro://lifecycle"){
"content": [
{
"type": "text",
"text": "..."
}
]
}docs
The Nitrosend product documentation map: every guide, integration, CLI, concept, authentication, and REST API / MCP reference page with its path and summary. Use the nitro_search_docs tool to search the full documentation content for how-to and reference answers.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://docs"
}
}const result = await client.readResource("nitro://docs");result = await session.read_resource("nitro://docs"){
"content": [
{
"type": "text",
"text": "..."
}
]
}example-email
A complete working email design showing every section type in context — header with logo, hero image, text blocks, buttons, two-column product grid, social links, divider, spacer, and footer with unsubscribe. Use as a copy-paste starting point or reference for prop names, style overrides, and column nesting.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://examples/email"
}
}const result = await client.readResource("nitro://examples/email");result = await session.read_resource("nitro://examples/email"){
"content": [
{
"type": "text",
"text": "..."
}
]
}example-flow
A complete automation flow example demonstrating all step types: email with inline design, SMS, wait (duration in seconds), split with filter conditions and yes/no branches, emit_event, webhook, subscribe, and unsubscribe. Shows trigger configuration, branching structure, and merge-tag usage.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://examples/flow"
}
}const result = await client.readResource("nitro://examples/flow");result = await session.read_resource("nitro://examples/flow"){
"content": [
{
"type": "text",
"text": "..."
}
]
}example-campaign
Complete campaign examples for both email and SMS channels. Shows audience targeting with contact_list_ids and segment_id, scheduled delivery with scheduled_at, inline email design with sections, and SMS body composition.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://examples/campaign"
}
}const result = await client.readResource("nitro://examples/campaign");result = await session.read_resource("nitro://examples/campaign"){
"content": [
{
"type": "text",
"text": "..."
}
]
}knowledge-index
Index of built-in email marketing knowledge topics. Returns a list of available slugs with titles and short descriptions. Use a slug with nitro://knowledge/{slug} to read the full topic content. Topics cover deliverability, subject lines, segmentation, automation best practices, and compliance.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://knowledge/index"
}
}const result = await client.readResource("nitro://knowledge/index");result = await session.read_resource("nitro://knowledge/index"){
"content": [
{
"type": "text",
"text": "..."
}
]
}memory
The operator's persistent AI memory document. Contains business goals, target audience, preferred email strategy, tone of voice notes, and any other context the operator has saved. Creative intent contracts already include the authoritative memory projection; read this resource for explicit inspection or memory management. Managed via the nitro_set_memory tool.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://memory"
}
}const result = await client.readResource("nitro://memory");result = await session.read_resource("nitro://memory"){
"content": [
{
"type": "text",
"text": "..."
}
]
}history
Unified account history combining notification events and MCP tool audit entries. Includes deliverability warnings, auto-pauses, suppressions, and tool-call audit records with timestamps, correlation IDs, payload summaries, and rollback eligibility.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://history"
}
}const result = await client.readResource("nitro://history");result = await session.read_resource("nitro://history"){
"content": [
{
"type": "text",
"text": "..."
}
]
}fields
Per-account contact field catalog grouped by category (contact, custom, enrichment, engagement, tag). Each entry includes key, category, field_type, label, promoted flag, and fill_rate (percentage of contacts with a value, null when not yet computed). Read this for field and segment-filter inspection. The authoring intent's merge grammar is authoritative for recipient-copy bindings; field-catalog membership alone does not make an entry safe or portable email content.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://fields"
}
}const result = await client.readResource("nitro://fields");result = await session.read_resource("nitro://fields"){
"content": [
{
"type": "text",
"text": "..."
}
]
}outreach-campaign
Bounded discovery-campaign detail: target profile, criterion coverage, spend budgets, funnel counters, source progress, degradation, and activation-ready inventory. Use nitro_manage_outreach for intent, estimate, start, pause, resume, cancel, and summary status.
Parameters
campaign_idstringrequiredpathReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://outreach/campaigns/{campaign_id}"
}
}const result = await client.readResource("nitro://outreach/campaigns/{campaign_id}");result = await session.read_resource("nitro://outreach/campaigns/{campaign_id}"){
"content": [
{
"type": "text",
"text": "..."
}
]
}knowledge-topic
Full content for a single knowledge topic. Pass a slug from the knowledge index (e.g. nitro://knowledge/deliverability). Returns a markdown document with actionable guidance your AI can apply when composing emails, building flows, or advising on strategy.
Parameters
slugstringrequiredpathReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://knowledge/{slug}"
}
}const result = await client.readResource("nitro://knowledge/{slug}");result = await session.read_resource("nitro://knowledge/{slug}"){
"content": [
{
"type": "text",
"text": "..."
}
]
}prompt
Rendered prompt template by name. Returns structured workflow instructions that guide the AI through multi-step tasks like onboarding a new account, running a campaign review, or setting up a welcome series. Each prompt includes context requirements, step sequence, and expected tool calls.
Parameters
namestringrequiredpathReturns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "resources/read",
"params": {
"uri": "nitro://prompts/{name}"
}
}const result = await client.readResource("nitro://prompts/{name}");result = await session.read_resource("nitro://prompts/{name}"){
"content": [
{
"type": "text",
"text": "..."
}
]
}Prompts
audience-analysis
Analyse audience segments and engagement
Parameters
goalstringrequiredargumentWhat you want to learn or achieve, e.g. 'find disengaged subscribers', 'segment by purchase history', 'identify VIP customers'
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "audience-analysis",
"arguments": {
"goal": "<goal>"
}
}
}const result = await client.getPrompt("audience-analysis", {
goal: "<goal>",
});result = await session.get_prompt("audience-analysis", arguments={
"goal": "<goal>",
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}build-email
Compose a marketing email
Parameters
goalstringrequiredargumentWhat the email is for, e.g. 'announce our spring sale', 'weekly newsletter', 'event invitation', 'product launch'
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "build-email",
"arguments": {
"goal": "<goal>"
}
}
}const result = await client.getPrompt("build-email", {
goal: "<goal>",
});result = await session.get_prompt("build-email", arguments={
"goal": "<goal>",
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}build-flow
Create an automated email flow from scratch
Parameters
goalstringrequiredargumentWhat the flow should achieve, e.g. 'welcome series for new signups', 'abandoned cart recovery', 're-engage inactive subscribers'
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "build-flow",
"arguments": {
"goal": "<goal>"
}
}
}const result = await client.getPrompt("build-flow", {
goal: "<goal>",
});result = await session.get_prompt("build-flow", arguments={
"goal": "<goal>",
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}diagnose-deliverability
Diagnose and fix email deliverability issues
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "diagnose-deliverability",
"arguments": {}
}
}const result = await client.getPrompt("diagnose-deliverability");result = await session.get_prompt("diagnose-deliverability"){
"content": [
{
"type": "text",
"text": "..."
}
]
}flow-review
Review and optimise an existing flow
Parameters
flow_idstringargumentID of the flow to review. If omitted, lists active flows for the user to choose.
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "flow-review",
"arguments": {
"flow_id": "<flow_id>"
}
}
}const result = await client.getPrompt("flow-review", {
flow_id: "<flow_id>",
});result = await session.get_prompt("flow-review", arguments={
"flow_id": "<flow_id>",
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}lifecycle-setup
Review a brand site and draft the key lifecycle automation flows
Parameters
website_urlstringargumentBrand website to review and scrape, e.g. https://example.com
test_recipientstringargumentEmail address that should receive flow test messages
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "lifecycle-setup",
"arguments": {
"website_url": "<website_url>",
"test_recipient": "<test_recipient>"
}
}
}const result = await client.getPrompt("lifecycle-setup", {
website_url: "<website_url>",
test_recipient: "<test_recipient>",
});result = await session.get_prompt("lifecycle-setup", arguments={
"website_url": "<website_url>",
"test_recipient": "<test_recipient>",
}){
"content": [
{
"type": "text",
"text": "..."
}
]
}onboard-brand-kit
Set up Brand Kit identity for a new brand
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "onboard-brand-kit",
"arguments": {}
}
}const result = await client.getPrompt("onboard-brand-kit");result = await session.get_prompt("onboard-brand-kit"){
"content": [
{
"type": "text",
"text": "..."
}
]
}weekly-report
Generate a weekly performance report
Returns
Returns MCP content array (text, image, or embedded resource).
{
"jsonrpc": "2.0",
"method": "prompts/get",
"params": {
"name": "weekly-report",
"arguments": {}
}
}const result = await client.getPrompt("weekly-report");result = await session.get_prompt("weekly-report"){
"content": [
{
"type": "text",
"text": "..."
}
]
}