Marketing
Marketing in Allpage: its screens, what you can do there and its operations.
Availability. Works when the business has it turned on and its plan includes it. Otherwise its tools answer needs (kind module) with how to turn it on: business.useTool, or a plan that includes it.
What you can do
- Plan a campaign: the assistant asks you first
- Change a campaign’s words: the assistant can do it on its own
- Write a campaign’s captions again: the assistant can do it on its own
- Launch a campaign: the assistant can prepare it and you confirm it, twice
- Mark a campaign post as posted: the assistant can do it on its own
- End a campaign: the assistant asks you first
- Plan the campaign we suggest: only you can do it, on its screen
For apps
Tools
- marketing_createCampaign (Plan a campaign): customers see it: waits for the owner’s approval unless they chose Just do it for your app
- marketing_updateCaptions (Change a campaign’s words): a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
- marketing_writeCaptions (Write a campaign’s captions again): a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
- marketing_launch (Launch a campaign): waits for the owner to confirm it in Allpage, whatever they chose for your app
- marketing_markPosted (Mark a campaign post as posted): a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
- marketing_endCampaign (End a campaign): customers see it: waits for the owner’s approval unless they chose Just do it for your app
Reads
- marketing_campaigns (List your campaigns and what each brought)
- marketing_campaign (See one campaign: its words, links and results)
- marketing_calendar (See what your campaigns send and post, day by day)
- marketing_idea (See the campaign we’d plan for you)
- marketing_summary (What’s going on)
Only the owner, in Allpage
- Plan the campaign we suggest
Operations
Each one's input and output, as JSON Schema. Ids are typed (typed ids).
marketing.calendar
See what your campaigns send and post, day by day
- Kind
- Read
- Tool
marketing_calendar- Scope
marketing:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"from": {
"description": "The first day, in the business’s time. Left out: today.",
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
},
"days": {
"default": 14,
"type": "integer",
"minimum": 1,
"maximum": 92
}
},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"timeZone": {
"type": "string"
},
"from": {
"type": "string"
},
"days": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"date": {
"type": "string"
},
"at": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
},
"name": {
"type": "string"
},
"channel": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
},
"label": {
"type": "string"
},
"planned": {
"type": "boolean"
},
"status": {
"type": "string"
}
},
"required": [
"date",
"at",
"campaignId",
"name",
"channel",
"label",
"planned",
"status"
],
"additionalProperties": false
}
}
},
"required": [
"date",
"items"
],
"additionalProperties": false
}
}
},
"required": [
"timeZone",
"from",
"days"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}marketing.campaign
See one campaign: its words, links and results
- Kind
- Read
- Tool
marketing_campaign- Scope
marketing:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
}
},
"required": [
"campaignId"
],
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"phase": {
"type": "string",
"enum": [
"draft",
"scheduled",
"running",
"ended"
]
},
"status": {
"type": "string",
"enum": [
"draft",
"launched",
"ended"
]
},
"message": {
"type": "string"
},
"subject": {
"type": "string"
},
"audience": {
"type": [
"string",
"null"
]
},
"offer": {
"type": [
"string",
"null"
]
},
"code": {
"type": [
"string",
"null"
]
},
"startsAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
"endsAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"writingCaptions": {
"type": "boolean"
},
"channels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"channel": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
},
"label": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"scheduled",
"draft",
"posted",
"skipped",
"cancelled",
"sent"
],
"description": "planned (before launch), scheduled, posted, sent (with reach), draft (for the owner to post), skipped (note says why) or cancelled."
},
"caption": {
"type": "string"
},
"edited": {
"type": "boolean"
},
"link": {
"type": "string"
},
"note": {
"type": [
"string",
"null"
]
},
"sendAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"reach": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"channel",
"label",
"status",
"caption",
"edited",
"link",
"note",
"sendAt",
"reach"
],
"additionalProperties": false
}
},
"results": {
"type": "object",
"properties": {
"orders": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"paidMinor": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"paid": {
"type": "string"
}
},
"required": [
"orders",
"paidMinor",
"paid"
],
"additionalProperties": false
}
},
"required": [
"campaignId",
"name",
"slug",
"phase",
"status",
"message",
"subject",
"audience",
"offer",
"code",
"startsAt",
"endsAt",
"writingCaptions",
"channels",
"results"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}marketing.campaigns
List your campaigns and what each brought
- Kind
- Read
- Tool
marketing_campaigns- Scope
marketing:read- Reached by
- API, MCP, ChatGPT
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"campaigns": {
"type": "array",
"items": {
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"phase": {
"type": "string",
"enum": [
"draft",
"scheduled",
"running",
"ended"
]
},
"status": {
"type": "string",
"enum": [
"draft",
"launched",
"ended"
]
},
"message": {
"type": "string"
},
"subject": {
"type": "string"
},
"audience": {
"type": [
"string",
"null"
]
},
"offer": {
"type": [
"string",
"null"
]
},
"code": {
"type": [
"string",
"null"
]
},
"startsAt": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
"endsAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"writingCaptions": {
"type": "boolean"
},
"channels": {
"type": "array",
"items": {
"type": "object",
"properties": {
"channel": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
},
"label": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"planned",
"scheduled",
"draft",
"posted",
"skipped",
"cancelled",
"sent"
],
"description": "planned (before launch), scheduled, posted, sent (with reach), draft (for the owner to post), skipped (note says why) or cancelled."
},
"caption": {
"type": "string"
},
"edited": {
"type": "boolean"
},
"link": {
"type": "string"
},
"note": {
"type": [
"string",
"null"
]
},
"sendAt": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"reach": {
"anyOf": [
{
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
{
"type": "null"
}
]
}
},
"required": [
"channel",
"label",
"status",
"caption",
"edited",
"link",
"note",
"sendAt",
"reach"
],
"additionalProperties": false
}
},
"results": {
"type": "object",
"properties": {
"orders": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"paidMinor": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"paid": {
"type": "string"
}
},
"required": [
"orders",
"paidMinor",
"paid"
],
"additionalProperties": false
}
},
"required": [
"campaignId",
"name",
"slug",
"phase",
"status",
"message",
"subject",
"audience",
"offer",
"code",
"startsAt",
"endsAt",
"writingCaptions",
"channels",
"results"
],
"additionalProperties": false
}
}
},
"required": [
"campaigns"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}marketing.createCampaign
Plan a campaign
- Kind
- Change
- Tool
marketing_createCampaign- Scope
marketing:write- Reached by
- API, MCP, ChatGPT
customers see it: waits for the owner’s approval unless they chose Just do it for your app
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"maxLength": 80
},
"message": {
"type": "string",
"minLength": 1,
"maxLength": 1000,
"description": "What it says, in the owner’s words. Each channel’s caption starts from it."
},
"subject": {
"default": "",
"description": "The newsletter’s subject. Left out, Allpage writes one with the captions, or uses the campaign’s name when you wrote them.",
"type": "string",
"maxLength": 150
},
"audienceId": {
"description": "An audience you already have (sales_audiences).",
"type": "string",
"pattern": "^aud_[0-9a-hjkmnp-tv-z]{26}$"
},
"newAudience": {
"description": "The name of a new audience for this campaign, like Gold. Customers join it through the code or the campaign’s links.",
"type": "string",
"minLength": 1,
"maxLength": 80
},
"offer": {
"type": "object",
"properties": {
"percentOff": {
"description": "Percent off, like 15.",
"type": "number",
"minimum": 1,
"maximum": 100
},
"amountOffMinor": {
"description": "Or an amount off, in cents.",
"type": "integer",
"minimum": 1,
"maximum": 9007199254740991
},
"code": {
"description": "What customers type, like GOLD15. Left out with a new audience, customers get in by the campaign’s links instead.",
"type": "string",
"maxLength": 40
},
"productIds": {
"description": "The products it’s off; left out, the whole order.",
"maxItems": 50,
"type": "array",
"items": {
"type": "string",
"pattern": "^prd_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A product id: prd_ and 26 letters and digits."
}
}
},
"additionalProperties": false
},
"channels": {
"minItems": 1,
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
},
"description": "google, facebook, instagram (posts), email and sms (the newsletter)."
},
"startsAt": {
"description": "When it goes out, in the business’s time. Left out: at launch.",
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"minute": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1439
},
{
"type": "string",
"pattern": "^\\d{1,2}:\\d{2}$"
}
]
}
},
"required": [
"date",
"minute"
],
"additionalProperties": false
},
"endsAt": {
"description": "When the offer stops, in the business’s time.",
"type": "object",
"properties": {
"date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$"
},
"minute": {
"anyOf": [
{
"type": "integer",
"minimum": 0,
"maximum": 1439
},
{
"type": "string",
"pattern": "^\\d{1,2}:\\d{2}$"
}
]
}
},
"required": [
"date",
"minute"
],
"additionalProperties": false
},
"landingPath": {
"default": "/",
"description": "The page its links open on the website.",
"type": "string",
"maxLength": 200,
"pattern": "^\\/[A-Za-z0-9/_-]*$"
},
"captions": {
"description": "Each channel’s words, by channel id, written by you in the brand’s voice (brand_kit). Allpage uses them and writes none of its own; a channel left out starts from the message. Left out entirely, Allpage writes them, which spends AI credits.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 5000
}
}
},
"required": [
"name",
"message",
"channels"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}marketing.endCampaign
End a campaign
- Kind
- Change
- Tool
marketing_endCampaign- Scope
marketing:write- Reached by
- API, MCP, ChatGPT
customers see it: waits for the owner’s approval unless they chose Just do it for your app
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
}
},
"required": [
"campaignId"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}marketing.idea
See the campaign we’d plan for you
- Kind
- Read
- Tool
marketing_idea- Scope
marketing:read- Reached by
- API, MCP
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"idea": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"message": {
"type": "string"
},
"channels": {
"minItems": 1,
"type": "array",
"items": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
}
},
"reach": {
"type": "string"
}
},
"required": [
"name",
"message",
"channels",
"reach"
],
"additionalProperties": false
},
"pending": {
"anyOf": [
{
"type": "object",
"properties": {
"proposalId": {
"type": "string",
"pattern": "^prp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A proposal id: prp_ and 26 letters and digits."
}
},
"required": [
"proposalId"
],
"additionalProperties": false
},
{
"type": "null"
}
]
}
},
"required": [
"idea",
"pending"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}marketing.launch
Launch a campaign
- Kind
- Change
- Tool
marketing_launch- Scope
marketing:write- Reached by
- API, MCP, ChatGPT
waits for the owner to confirm it in Allpage, whatever they chose for your app
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
}
},
"required": [
"campaignId"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}marketing.markPosted
Mark a campaign post as posted
- Kind
- Change
- Tool
marketing_markPosted- Scope
marketing:write- Reached by
- API, MCP, ChatGPT
a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
},
"channel": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram"
]
}
},
"required": [
"campaignId",
"channel"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}marketing.summary
What’s going on
- Kind
- Read
- Tool
marketing_summary- Scope
marketing:read- Reached by
- API, MCP
Read-only.
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {},
"additionalProperties": false
}Output
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"oneOf": [
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"facts": {
"type": "array",
"items": {
"type": "string"
},
"description": "One-line facts, e.g. \"3 bookings today\"."
},
"attention": {
"description": "Things that need the owner, each with a plain reason.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"text": {
"type": "string"
},
"href": {
"type": "string"
}
},
"required": [
"id",
"text"
],
"additionalProperties": false
}
},
"happening": {
"description": "What’s on today, each at its time.",
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"at": {
"type": "number",
"description": "Epoch milliseconds."
},
"text": {
"type": "string"
},
"href": {
"type": "string"
}
},
"required": [
"id",
"at",
"text"
],
"additionalProperties": false
}
},
"metrics": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"label": {
"type": "string"
},
"value": {
"type": "number"
},
"prior": {
"type": "number"
},
"unit": {
"type": "string",
"enum": [
"count",
"money"
]
},
"href": {
"type": "string"
}
},
"required": [
"id",
"label",
"value"
],
"additionalProperties": false
}
}
},
"required": [
"title",
"facts"
],
"additionalProperties": false
}
},
"required": [
"status",
"title",
"change",
"result"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "refused"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
},
"required": [
"status",
"title",
"change",
"message"
],
"additionalProperties": false
},
{
"type": "object",
"properties": {
"status": {
"type": "string",
"const": "needs"
},
"kind": {
"type": "string",
"enum": [
"module",
"portal",
"business",
"limit",
"paused",
"reauth"
]
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
},
"required": [
"status",
"kind",
"title",
"change",
"message"
],
"additionalProperties": {}
}
]
}marketing.updateCaptions
Change a campaign’s words
- Kind
- Change
- Tool
marketing_updateCaptions- Scope
marketing:write- Reached by
- API, MCP, ChatGPT
a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
},
"subject": {
"type": "string",
"maxLength": 150
},
"captions": {
"default": {},
"description": "Each channel’s words, by channel id.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 5000
}
}
},
"required": [
"campaignId"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}marketing.writeCaptions
Write a campaign’s captions again
- Kind
- Change
- Tool
marketing_writeCaptions- Scope
marketing:write- Reached by
- API, MCP, ChatGPT
a private change: runs now if the owner lets your app make private changes, otherwise waits for their approval
Input
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaignId": {
"type": "string",
"pattern": "^cmp_[0-9a-hjkmnp-tv-z]{26}$",
"description": "A campaign id: cmp_ and 26 letters and digits."
},
"captions": {
"description": "Fresh words for each channel, by channel id, written by you in the brand’s voice (brand_kit). They replace each caption the owner hasn’t changed themselves. Left out, Allpage writes them, which spends AI credits.",
"type": "object",
"propertyNames": {
"type": "string",
"enum": [
"google",
"facebook",
"instagram",
"email",
"sms"
]
},
"additionalProperties": {
"type": "string",
"minLength": 1,
"maxLength": 5000
}
}
},
"required": [
"campaignId"
],
"additionalProperties": false
}Output
{
"oneOf": [
{
"type": "object",
"required": [
"status",
"title",
"change"
],
"properties": {
"status": {
"const": "done"
},
"title": {
"type": "string"
},
"change": {
"type": "boolean"
},
"result": {},
"undo": {
"type": "object",
"properties": {
"command": {
"type": "string"
},
"input": {}
}
}
}
},
{
"type": "object",
"required": [
"status",
"proposalId"
],
"properties": {
"status": {
"const": "proposed"
},
"proposalId": {
"type": "string"
},
"preview": {},
"approveAt": {
"type": "string",
"format": "uri"
}
}
},
{
"type": "object",
"required": [
"status",
"check"
],
"properties": {
"status": {
"const": "pending"
},
"message": {
"type": "string"
},
"check": {
"type": "string"
},
"checkInput": {
"type": "object"
}
}
},
{
"type": "object",
"required": [
"status",
"message"
],
"properties": {
"status": {
"const": "refused"
},
"message": {
"type": "string"
},
"field": {
"type": "string"
}
}
},
{
"type": "object",
"required": [
"status",
"kind",
"message"
],
"properties": {
"status": {
"const": "needs"
},
"kind": {
"type": "string"
},
"message": {
"type": "string"
},
"note": {
"type": "string"
}
}
}
]
}