MCP
Posts tools
MCP tools for posts: what each does, the key level it needs, the operation it runs and its input schema. Part of the MISSIN public API: call it with an API…
An operation tool runs one API operation and takes its variables, so the operation's page says what each accepts. Two differences: the server fills in workspaceId and updatedBy, and campaignId, partnerId, formId, discountCodeId, socialNetworkId, waitlistId, incentiveId, channelId also take the record's name. A task tool chains several operations and is described here in full. Every tool's input schema, keyed by tool name: posts.schema.json.
Task tools
assign_posts_to_campaign
Access: Write · Kind: task · Toolset: core · Hints: idempotent
File posts into a campaign: give post ids, or a partner and an optional published-at window. Needs_choice when the campaign or partner name is ambiguous. Posts are filed in batches of 100, not atomically: if a batch fails the earlier batches stay filed, the error says how many, and running it again is safe. Returns { campaignId, matched, updated }.
Try: “Add @test11's posts from March to my spring campaign.”
Input schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"campaign": {
"anyOf": [
{
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
]
},
{
"type": "null"
}
],
"description": "Campaign UUID or name (never the default campaign); null clears the posts' campaign."
},
"postIds": {
"description": "These posts. Or give partner (and optionally a date window) instead.",
"maxItems": 500,
"type": "array",
"items": {
"type": "string",
"format": "uuid",
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
}
},
"partner": {
"description": "Partner UUID, name or @handle — files that partner's posts.",
"type": "string"
},
"publishedFrom": {
"description": "Only posts published at or after this instant (with a zone offset).",
"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"publishedTo": {
"description": "Only posts published before this instant (with a zone offset).",
"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|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
},
"limit": {
"default": 200,
"type": "integer",
"minimum": 1,
"maximum": 500
}
},
"required": [
"campaign"
]
}Operation tools
| Tool | Operation | Access | Toolset | Hints | What it does |
|---|---|---|---|---|---|
delete_partner_post | DeletePartnerPost | Write | posts | destructive | Delete one captured post. Irreversible. |
fetch_twitter_post_replies | FetchTwitterPostReplies | Write | posts | destructive | Fetch the replies to an X/Twitter post; spends capture credits. Spends capture credits and cannot be priced ahead: tell the merchant it spends credits and get a yes before calling. |
get_post | PostDetail | Read | core | read-only, idempotent | Get one post by id (rowId) with metrics, campaign, partner, attributions and an optional metric series. Totals and detail are off unless requested: set withSeries to true to include them. |
get_post_group_totals | PostGroupTotals | Read | posts | read-only, idempotent | Post counts matching a filter, grouped by validity, platform and campaign. |
get_post_replies | PostReplies | Read | posts | read-only, idempotent | List the captured replies to one post. |
get_posts_held | PostsHeld | Read | posts | read-only, idempotent | Attributed orders held by the given posts. |
get_post_siblings | PostSiblings | Read | posts | read-only, idempotent | List cross-posts of the same content on other platforms (by crosspost group id). |
list_posts | PostsList | Read | core | read-only, idempotent | List partner posts with filter, sort and cursor paging: partner, campaign, metrics and validity. Totals and detail are off unless requested: set withSeries to true to include them. |
get_retention_drop_off_median | RetentionDropOffMedian | Read | posts | read-only, idempotent | Median day after publishing at which posts stop gaining views. |
set_partner_post_campaign | SetPartnerPostCampaign | Write | posts | idempotent | File posts under a campaign, or clear their campaign with campaignId null. |
set_partner_post_partner | SetPartnerPostPartner | Write | posts | idempotent | Reassign posts to a different partner and rescore attribution. |
set_partner_post_placement_window | SetPartnerPostPlacementWindow | Write | posts | idempotent | Set the in-video placement window, in seconds, of a YouTube post. |
set_partner_post_settings | SetPartnerPostSettings | Write | posts | destructive, idempotent | Set a post's tracking and sponsored flags. Commits recurring spend: scheduled captures that follow from this spend credits on every run, so confirm with the merchant first. |
set_partner_post_validity | SetPartnerPostValidity | Write | posts | idempotent | Set a post's review state: approved, rejected, pending, change requested or needs review. |
get_tracked_posts | TrackedPosts | Read | posts | read-only, idempotent | Count of posts with metric tracking on, by post type. |