Swat.io Developer DocumentationSwat.io Developer Documentation
Home
Getting Started
  • Overview
  • Core Resources
  • Posts
  • Drafts
  • Campaigns
  • Asset Library
  • Inbox
  • Insights
  • Overview
  • Tools
Home
Getting Started
  • Overview
  • Core Resources
  • Posts
  • Drafts
  • Campaigns
  • Asset Library
  • Inbox
  • Insights
  • Overview
  • Tools
  • MCP Tools

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, and postDuplicate always create or retain a suggested post. 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

ToolInputsOutput and notes
workspacesNoneAccessible workspaces with IDs and names.
workspaceworkspaceIdOne accessible workspace and its details.
channelsForWorkspaceworkspaceId, optional productAccessible channels. Use product: publisher or inbox when needed.
meNoneAuthenticated API user.

Posts

ToolInputsOutput and notes
postpostIdOne accessible post, including fields required for later updates.
calendarPostsworkspaceId, explicit postIdsKnown posts in one workspace. Use explicit IDs only.
postListworkspaceId, channelIds, dateFrom, dateTo, limit, order, paginationCursor, optional postStatusesPosts and a paginationCursor. Reuse the same filters for the next page.
postCreatechannelId, type, publicationAt, optional postCreates a suggested post only. Attachments and platform-specific fields are in post.
postUpdatepostId and either simple assignedUserId and/or publicationAt, or complex postSimple 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.
postDuplicatepostId, channelId, assignedUserId, publicationAt, optional pinterestBoardIdDuplicates into a suggested post at a future publication time only. Verify destination compatibility.
postDeletepostIdPermanently deletes a post.
postsAddTagworkspaceId, postIds, context, tagAdds a tag to Publisher posts or Inbox tickets.
postsRemoveTagworkspaceId, postIds, context, tagRemoves 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

ToolInputsOutput and notes
draftListworkspaceId, assignedToMe, status, dateFrom, dateTo, searchTerm, orderBy, orderDirection, paginationCursor, attachmentLimitDrafts, attachment details, users, and cursor pagination. searchTerm searches titles only.
draftCreateworkspaceId, status, title, message, dueDate, attachments, assignedUserIdCreates a draft.
draftUpdateid, optional draftOmitted attachments remain unchanged. [] explicitly removes all attachments; a supplied list replaces the list.
draftDeletedraftIdDeletes the draft and its attachments.

Campaigns

ToolInputsOutput and notes
campaignsworkspaceIdCampaigns in an accessible workspace.
campaigncampaignIdOne campaign and its tags, dates, and access information.
campaignCreateworkspaceId, name, dateFrom, dateTo, optional colorNumber, iconNumber, notes, tagsCreates a campaign.
campaignUpdatecampaignId, optional name, dateFrom, dateTo, colorNumber, iconNumber, notes, tagsSupplied tags replace all campaign tags. Omit tags to keep them; use [] to clear them.
campaignDeletecampaignId, optional removeTagsOnPostsDeletes a campaign. Linked post tags remain by default; they are removed only when explicitly requested.

Assets

ToolInputsOutput and notes
assetListworkspaceId, optional type, searchTerm, orderBy, orderDirection, paginationCursor, workspaceLabelIdsAssets, labels, and cursor pagination.
assetassetIdOne accessible asset.
assetCreateworkspaceId, originalFilename, sourceUploaded, sourceAlternateUploaded, description, optional workspaceLabelIdsCreates an asset from a registered upload.
assetUpdateassetId, optional description, customFilename, originalFilename, sourceUploaded, sourceAlternateUploadedUpdates only supplied fields.
assetDeleteassetIdPermanently deletes an asset.
assetRegisterS3UploadworkspaceId, mimeType, fileSizePresigned upload data. Upload the file with the returned HTTP form data, then use url_final in assetCreate or assetUpdate.
attachmentRegisterS3UploadpostId, mimeTypePresigned post-attachment upload data for an existing post. Upload first, then use url_final in postUpdate.
assetWorkspaceLabelAddassetId, workspaceLabelIdAdds one label to an asset.
assetWorkspaceLabelRemoveassetId, workspaceLabelIdRemoves one label from an asset.

Labels And Tags

Labels organize assets. Tags organize posts, tickets, comments, and campaigns; they are separate concepts.

ToolInputsOutput and notes
workspaceLabelsworkspaceIdAsset-library labels in the workspace.
workspaceLabelCreateworkspaceId, labelCreates an asset-library label.
workspaceLabelUpdateworkspaceLabelId, labelRenames an asset-library label.
workspaceLabelDeleteworkspaceLabelIdDeletes a label and removes it from associated assets. Assets and their other labels remain unchanged.
workspaceTagListworkspaceId, optional searchTerm, sortField, sortOrder, paginationCursorWorkspace tags and cursor pagination.
workspaceTagCreateworkspaceId, tagCreates a non-empty tag of up to 64 characters. Tags are stored in lowercase with spaces replaced by hyphens.
workspaceTagDeleteworkspaceTagIdDeletes 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.

ToolInputsOutput and notes
inboxAssignableUsersworkspaceId, channelIdsUsers who can receive assignments for the selected Inbox channels.
inboxCommentsCollapsiblepostId, order, optional commentId, nrBefore, nrAfter, parentId, searchScope, searchTermConversation entries, including collapsed ranges for later retrieval.
inboxCommentFanListworkspaceId, optional channelIds, postIds, profileIds, filterSentiment, filterCommentTags, paginationCursorPublic fan comments and cursor pagination.
inboxCommentFanProfileSummaryworkspaceId, profileId, optional channelIds, filterCommentTagsAggregate comment and sentiment information for one profile.
ticketListworkspaceId, channelIds, order, either status or both searchScope and searchTerm; optional visibility, paginationCursorTickets, root posts, assignment, tags, and cursor pagination. Search inputs cannot be combined with status; visibility filters either mode.
commentDeletecommentIdIrreversibly deletes a comment where supported by the social platform.
commentHidecommentId, hideHides or unhides platform-visible content.
commentLikecommentId, likeLikes or unlikes on the social platform.
commentSetSentimentcommentId, sentimentSets manual sentiment; null removes it.
commentsAddTagworkspaceId, commentIds, tagAdds a tag to explicit comments only.
commentsRemoveTagworkspaceId, commentIds, tagRemoves a tag from explicit comments only.
commentsMarkAsSeenworkspaceId, commentIds, seenMarks comments seen or unseen. A parent comment can include replies.
ticketArchiveworkspaceId, postIdsArchives tickets. Archiving clears assignment and marks ticket content read.
ticketAssignworkspaceId, postIds, assignUserIdAssigns tickets; null explicitly unassigns.
ticketMuteworkspaceId, postIds, muteMuting 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.
ticketStarworkspaceId, postIds, starStars or unstars tickets.

Insights

ToolInputsOutput and notes
insightsWidgetsConfigAllworkspace_idAll available widget configurations. Use this before requesting data.
insightsWidgetConfigForWidgetworkspace_id, typeOne widget's supported filters, channel types, fields, and pagination capability.
insightsWidgetDataworkspace_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, afterChart 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.