MCP Tools
The Swat.io MCP server covers publicly supported Customer API capabilities except channel settings. Tool names use workspace where the GraphQL API uses client, and channelsForWorkspace where it uses channels.
MCP annotations signal state-changing and destructive operations. Client approval behavior depends on the client's configuration. Read tools do not change data. Every destructive or state-changing tool requires explicit resource IDs; no tool can select a broad result set and change every match.
Safety rules
postCreate,postUpdate, andpostDuplicatealways create or retain asuggestedpost. MCP cannot directly publish a post.- Omitted update fields stay unchanged. An empty list clears a collection only where the API defines that behavior.
- Inputs that replace a collection are authoritative. Read the current resource first when you need to retain existing items.
- Inbox actions can be irreversible or visible on the social platform. Verify the selected IDs and requested target state before approving them.
- Inbox tools require an active Inbox product, the Inbox API tier entitlement, workspace access, and the user's normal Inbox permissions.
- Insights tools require Premium Insights, workspace access, and permission to view reports.
Core
| Tool | Inputs | Output and notes |
|---|---|---|
workspaces | None | Accessible workspaces with IDs and names. |
workspace | workspaceId | One accessible workspace and its details. |
channelsForWorkspace | workspaceId, optional product | Accessible channels. Use product: publisher or inbox when needed. |
me | None | Authenticated API user. |
Posts
| Tool | Inputs | Output and notes |
|---|---|---|
post | postId | One accessible post, including fields required for later updates. |
calendarPosts | workspaceId, explicit postIds | Known posts in one workspace. Use explicit IDs only. |
postList | workspaceId, channelIds, dateFrom, dateTo, limit, order, paginationCursor, optional postStatuses | Posts and a paginationCursor. Reuse the same filters for the next page. |
postCreate | channelId, type, publicationAt, optional post | Creates a suggested post only. Attachments and platform-specific fields are in post. |
postUpdate | postId and either simple assignedUserId and/or publicationAt, or complex post | Simple mode assigns assignedUserId and/or changes publicationAt. Complex post mode requires nested channel_id and publication_at; do not combine it with simple fields. It retains suggested status and supplied attachments replace the complete list. |
postDuplicate | postId, channelId, assignedUserId, publicationAt, optional pinterestBoardId | Duplicates into a suggested post at a future publication time only. Verify destination compatibility. |
postDelete | postId | Permanently deletes a post. |
postsAddTag | workspaceId, postIds, context, tag | Adds a tag to Publisher posts or Inbox tickets. |
postsRemoveTag | workspaceId, postIds, context, tag | Removes a tag from Publisher posts or Inbox tickets. |
Post attachment input is authoritative when supplied. Omit attachments to preserve the current list, send every retained attachment with its id and type, or provide an empty list to remove every attachment. New audio, photo, and video attachments require type and source_uploaded; documents also require title; links require type: link and link. An Asset Library attachment also requires asset_id; it does not derive the type or source URL.
attachmentRegisterS3Upload requires an existing post. Create the post, upload with its returned form data, then use url_final in postUpdate.
To manage tags on an existing post, use postsAddTag or postsRemoveTag rather than postUpdate.
Drafts
| Tool | Inputs | Output and notes |
|---|---|---|
draftList | workspaceId, assignedToMe, status, dateFrom, dateTo, searchTerm, orderBy, orderDirection, paginationCursor, attachmentLimit | Drafts, attachment details, users, and cursor pagination. searchTerm searches titles only. |
draftCreate | workspaceId, status, title, message, dueDate, attachments, assignedUserId | Creates a draft. |
draftUpdate | id, optional draft | Omitted attachments remain unchanged. [] explicitly removes all attachments; a supplied list replaces the list. |
draftDelete | draftId | Deletes the draft and its attachments. |
Campaigns
| Tool | Inputs | Output and notes |
|---|---|---|
campaigns | workspaceId | Campaigns in an accessible workspace. |
campaign | campaignId | One campaign and its tags, dates, and access information. |
campaignCreate | workspaceId, name, dateFrom, dateTo, optional colorNumber, iconNumber, notes, tags | Creates a campaign. |
campaignUpdate | campaignId, optional name, dateFrom, dateTo, colorNumber, iconNumber, notes, tags | Supplied tags replace all campaign tags. Omit tags to keep them; use [] to clear them. |
campaignDelete | campaignId, optional removeTagsOnPosts | Deletes a campaign. Linked post tags remain by default; they are removed only when explicitly requested. |
Assets
| Tool | Inputs | Output and notes |
|---|---|---|
assetList | workspaceId, optional type, searchTerm, orderBy, orderDirection, paginationCursor, workspaceLabelIds | Assets, labels, and cursor pagination. |
asset | assetId | One accessible asset. |
assetCreate | workspaceId, originalFilename, sourceUploaded, sourceAlternateUploaded, description, optional workspaceLabelIds | Creates an asset from a registered upload. |
assetUpdate | assetId, optional description, customFilename, originalFilename, sourceUploaded, sourceAlternateUploaded | Updates only supplied fields. |
assetDelete | assetId | Permanently deletes an asset. |
assetRegisterS3Upload | workspaceId, mimeType, fileSize | Presigned upload data. Upload the file with the returned HTTP form data, then use url_final in assetCreate or assetUpdate. |
attachmentRegisterS3Upload | postId, mimeType | Presigned post-attachment upload data for an existing post. Upload first, then use url_final in postUpdate. |
assetWorkspaceLabelAdd | assetId, workspaceLabelId | Adds one label to an asset. |
assetWorkspaceLabelRemove | assetId, workspaceLabelId | Removes one label from an asset. |
Labels And Tags
Labels organize assets. Tags organize posts, tickets, comments, and campaigns; they are separate concepts.
| Tool | Inputs | Output and notes |
|---|---|---|
workspaceLabels | workspaceId | Asset-library labels in the workspace. |
workspaceLabelCreate | workspaceId, label | Creates an asset-library label. |
workspaceLabelUpdate | workspaceLabelId, label | Renames an asset-library label. |
workspaceLabelDelete | workspaceLabelId | Deletes a label and removes it from associated assets. Assets and their other labels remain unchanged. |
workspaceTagList | workspaceId, optional searchTerm, sortField, sortOrder, paginationCursor | Workspace tags and cursor pagination. |
workspaceTagCreate | workspaceId, tag | Creates a non-empty tag of up to 64 characters. Tags are stored in lowercase with spaces replaced by hyphens. |
workspaceTagDelete | workspaceTagId | Deletes a workspace tag. |
Inbox
Inbox tools cover public fan comments and tickets. They do not add support for replying to comments or private messages beyond what the Customer API returns.
| Tool | Inputs | Output and notes |
|---|---|---|
inboxAssignableUsers | workspaceId, channelIds | Users who can receive assignments for the selected Inbox channels. |
inboxCommentsCollapsible | postId, order, optional commentId, nrBefore, nrAfter, parentId, searchScope, searchTerm | Conversation entries, including collapsed ranges for later retrieval. |
inboxCommentFanList | workspaceId, optional channelIds, postIds, profileIds, filterSentiment, filterCommentTags, paginationCursor | Public fan comments and cursor pagination. |
inboxCommentFanProfileSummary | workspaceId, profileId, optional channelIds, filterCommentTags | Aggregate comment and sentiment information for one profile. |
ticketList | workspaceId, channelIds, order, either status or both searchScope and searchTerm; optional visibility, paginationCursor | Tickets, root posts, assignment, tags, and cursor pagination. Search inputs cannot be combined with status; visibility filters either mode. |
commentDelete | commentId | Irreversibly deletes a comment where supported by the social platform. |
commentHide | commentId, hide | Hides or unhides platform-visible content. |
commentLike | commentId, like | Likes or unlikes on the social platform. |
commentSetSentiment | commentId, sentiment | Sets manual sentiment; null removes it. |
commentsAddTag | workspaceId, commentIds, tag | Adds a tag to explicit comments only. |
commentsRemoveTag | workspaceId, commentIds, tag | Removes a tag from explicit comments only. |
commentsMarkAsSeen | workspaceId, commentIds, seen | Marks comments seen or unseen. A parent comment can include replies. |
ticketArchive | workspaceId, postIds | Archives tickets. Archiving clears assignment and marks ticket content read. |
ticketAssign | workspaceId, postIds, assignUserId | Assigns tickets; null explicitly unassigns. |
ticketMute | workspaceId, postIds, mute | Muting archives and unassigns tickets, marks comments and notifications read, excludes their comments from Inbox results and counts, and prevents reopening from new activity. Unmuting reopens without restoring the assignee. |
ticketStar | workspaceId, postIds, star | Stars or unstars tickets. |
Insights
| Tool | Inputs | Output and notes |
|---|---|---|
insightsWidgetsConfigAll | workspace_id | All available widget configurations. Use this before requesting data. |
insightsWidgetConfigForWidget | workspace_id, type | One widget's supported filters, channel types, fields, and pagination capability. |
insightsWidgetData | workspace_id, type, channel_ids, date_from, date_to, optional campaign_ids, limit, order, ad_types, post_categories, sort, table_columns, tags, tag_comments, time_aggregation, after | Chart or table data. Reuse the cursor, widget, and filters for a next table page. |
Use only filters and time aggregations listed by the selected widget. Insights data is read-only.
Related API Documentation
The GraphQL API pages provide field-level request examples for the same resources: Core Resources, Posts, Drafts, Campaigns, Asset Library, Inbox, and Insights.
