# 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](https://developer.missin.co.uk/mcp/tools/posts.schema.json).

> **Warning:**
> Destructive: `delete_partner_post`, `fetch_twitter_post_replies`, `set_partner_post_settings`. An agent must say what it will change and wait for the merchant's yes before calling one.

## 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

Input schema for `assign_posts_to_campaign` (JSON, under the key "assign_posts_to_campaign"): https://developer.missin.co.uk/mcp/tools/posts.schema.json

## Operation tools

| Tool | Operation | Access | Toolset | Hints | What it does |
|---|---|---|---|---|---|
| `delete_partner_post` | [DeletePartnerPost](https://developer.missin.co.uk/reference/posts/delete-partner-post.md) | Write | `posts` | destructive | Delete one captured post. Irreversible. |
| `fetch_twitter_post_replies` | [FetchTwitterPostReplies](https://developer.missin.co.uk/reference/posts/fetch-twitter-post-replies.md) | 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](https://developer.missin.co.uk/reference/posts/post-detail.md) | 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](https://developer.missin.co.uk/reference/posts/post-group-totals.md) | Read | `posts` | read-only, idempotent | Post counts matching a filter, grouped by validity, platform and campaign. |
| `get_post_replies` | [PostReplies](https://developer.missin.co.uk/reference/posts/post-replies.md) | Read | `posts` | read-only, idempotent | List the captured replies to one post. |
| `get_posts_held` | [PostsHeld](https://developer.missin.co.uk/reference/posts/posts-held.md) | Read | `posts` | read-only, idempotent | Attributed orders held by the given posts. |
| `get_post_siblings` | [PostSiblings](https://developer.missin.co.uk/reference/posts/post-siblings.md) | Read | `posts` | read-only, idempotent | List cross-posts of the same content on other platforms (by crosspost group id). |
| `list_posts` | [PostsList](https://developer.missin.co.uk/reference/posts/posts-list.md) | 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](https://developer.missin.co.uk/reference/posts/retention-drop-off-median.md) | Read | `posts` | read-only, idempotent | Median day after publishing at which posts stop gaining views. |
| `set_partner_post_campaign` | [SetPartnerPostCampaign](https://developer.missin.co.uk/reference/posts/set-partner-post-campaign.md) | Write | `posts` | idempotent | File posts under a campaign, or clear their campaign with campaignId null. |
| `set_partner_post_partner` | [SetPartnerPostPartner](https://developer.missin.co.uk/reference/posts/set-partner-post-partner.md) | Write | `posts` | idempotent | Reassign posts to a different partner and rescore attribution. |
| `set_partner_post_placement_window` | [SetPartnerPostPlacementWindow](https://developer.missin.co.uk/reference/posts/set-partner-post-placement-window.md) | Write | `posts` | idempotent | Set the in-video placement window, in seconds, of a YouTube post. |
| `set_partner_post_settings` | [SetPartnerPostSettings](https://developer.missin.co.uk/reference/posts/set-partner-post-settings.md) | 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](https://developer.missin.co.uk/reference/posts/set-partner-post-validity.md) | Write | `posts` | idempotent | Set a post's review state: approved, rejected, pending, change requested or needs review. |
| `get_tracked_posts` | [TrackedPosts](https://developer.missin.co.uk/reference/posts/tracked-posts.md) | Read | `posts` | read-only, idempotent | Count of posts with metric tracking on, by post type. |

Source: https://developer.missin.co.uk/mcp/tools/posts
