Instagram MCP Server for Cloudflare Workers
26 tools available in the Instagram MCP server. Each tool can be called by AI assistants to perform specific actions.
instagram_reply_to_commentReply to an existing comment.
Args:
Returns: The created reply comment details.
{
"type": "object",
"required": [
"commentId",
"message"
],
"properties": {
"message": {
"type": "string",
"description": "Reply text"
},
"commentId": {
"type": "string",
"description": "Comment ID to reply to"
}
}
}instagram_delete_commentDelete a comment (your own comments only).
Args:
Returns: Confirmation of deletion.
{
"type": "object",
"required": [
"commentId"
],
"properties": {
"commentId": {
"type": "string",
"description": "Comment ID to delete"
}
}
}instagram_get_accountGet the authenticated Instagram Business/Creator account information.
Returns profile details including:
Args:
Returns: Account profile information.
{
"type": "object",
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string",
"default": "json",
"description": "Response format"
}
}
}instagram_get_account_insightsGet insights/analytics for the Instagram account.
Available metrics:
Available periods:
Args:
Returns: Array of insight metrics with values.
{
"type": "object",
"properties": {
"since": {
"type": "string",
"description": "Start date (ISO 8601 or Unix timestamp)"
},
"until": {
"type": "string",
"description": "End date (ISO 8601 or Unix timestamp)"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
}
}
}instagram_list_commentsList comments on a media post.
Args:
Returns: Paginated list of comments with text, username, and like counts.
{
"type": "object",
"required": [
"mediaId"
],
"properties": {
"after": {
"type": "string",
"description": "Pagination cursor"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"mediaId": {
"type": "string",
"description": "Media ID"
}
}
}instagram_get_commentGet details of a specific comment.
Args:
Returns: Comment details including text, username, timestamp, and likes.
{
"type": "object",
"required": [
"commentId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"commentId": {
"type": "string",
"description": "Comment ID"
}
}
}instagram_get_comment_repliesGet replies to a specific comment.
Args:
Returns: Paginated list of reply comments.
{
"type": "object",
"required": [
"commentId"
],
"properties": {
"after": {
"type": "string"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"commentId": {
"type": "string",
"description": "Parent comment ID"
}
}
}instagram_create_commentPost a comment on a media post.
Args:
Returns: The created comment details.
{
"type": "object",
"required": [
"mediaId",
"message"
],
"properties": {
"mediaId": {
"type": "string",
"description": "Media ID"
},
"message": {
"type": "string",
"description": "Comment text"
}
}
}instagram_hide_commentHide or unhide a comment on your media.
Hidden comments are not visible to other users but can be seen by the commenter.
Args:
Returns: Confirmation of the action.
{
"type": "object",
"required": [
"commentId",
"hide"
],
"properties": {
"hide": {
"type": "boolean",
"description": "true to hide, false to unhide"
},
"commentId": {
"type": "string",
"description": "Comment ID"
}
}
}instagram_discover_businessLook up another Instagram Business or Creator account by username.
Get public profile information about any business or creator account. Personal accounts cannot be discovered via this endpoint.
Args:
Returns: Public profile information including followers, bio, and media count.
{
"type": "object",
"required": [
"username"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific fields to retrieve"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"username": {
"type": "string",
"description": "Instagram username (without @)"
}
}
}instagram_get_mentioned_mediaGet media where your account has been mentioned (@tagged in caption).
Returns posts from other accounts that mention your username.
Args:
Returns: Paginated list of media mentioning your account.
{
"type": "object",
"properties": {
"after": {
"type": "string",
"description": "Pagination cursor"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"fields": {
"type": "array",
"items": {
"type": "string"
}
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
}
}
}instagram_get_mentioned_commentGet a comment where your account was mentioned.
Args:
Returns: Comment details.
{
"type": "object",
"required": [
"commentId"
],
"properties": {
"commentId": {
"type": "string",
"description": "Comment ID"
}
}
}instagram_get_tagged_mediaGet media where your account has been tagged (photo tag, not caption mention).
Returns posts where someone tagged your account in the photo itself.
Args:
Returns: Paginated list of media with your account tagged.
{
"type": "object",
"properties": {
"after": {
"type": "string",
"description": "Pagination cursor"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1
},
"fields": {
"type": "array",
"items": {
"type": "string"
}
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
}
}
}instagram_search_hashtagSearch for a hashtag and get its ID.
The hashtag ID is required to fetch top or recent media for that hashtag.
Rate Limits:
Args:
Returns: Hashtag ID and name that can be used for further queries.
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "Hashtag to search (without #)"
}
}
}instagram_get_hashtag_top_mediaGet top/trending media posts for a hashtag.
Returns the most popular recent posts tagged with the hashtag.
Rate Limits:
Args:
Returns: List of top-performing media with the hashtag.
{
"type": "object",
"required": [
"hashtagId"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific fields to retrieve"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"hashtagId": {
"type": "string",
"description": "Hashtag ID from instagram_search_hashtag"
}
}
}instagram_get_hashtag_recent_mediaGet recent media posts for a hashtag.
Returns recently posted public content tagged with the hashtag.
Rate Limits:
Args:
Returns: List of recent media with the hashtag.
{
"type": "object",
"required": [
"hashtagId"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific fields to retrieve"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"hashtagId": {
"type": "string",
"description": "Hashtag ID from instagram_search_hashtag"
}
}
}instagram_list_mediaList media posts from the Instagram account.
Returns paginated list of media including photos, videos, carousels, and reels.
Args:
Returns: Paginated list of media with engagement metrics.
{
"type": "object",
"properties": {
"after": {
"type": "string",
"description": "Pagination cursor"
},
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "Number of items to return"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific fields to retrieve"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
}
}
}instagram_get_mediaGet details of a specific media post.
Args:
Returns: Complete media details including caption, type, URL, and engagement.
{
"type": "object",
"required": [
"mediaId"
],
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
}
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"mediaId": {
"type": "string",
"description": "Media ID"
}
}
}instagram_get_media_insightsGet insights/analytics for a specific media post.
Available metrics for images and videos:
Additional metrics for reels:
Args:
Returns: Array of insight metrics for the media.
{
"type": "object",
"required": [
"mediaId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"mediaId": {
"type": "string",
"description": "Media ID"
}
}
}instagram_publish_photoPublish a photo to Instagram feed.
The photo must be hosted at a publicly accessible URL. Supported formats: JPEG, PNG. Maximum file size: 8MB. Recommended aspect ratios: 1:1, 4:5, or 1.91:1.
Args:
Returns: The published media details including permalink.
{
"type": "object",
"required": [
"imageUrl"
],
"properties": {
"caption": {
"type": "string",
"description": "Caption text"
},
"imageUrl": {
"type": "string",
"description": "Public URL of the image"
},
"locationId": {
"type": "string",
"description": "Location ID to tag"
}
}
}instagram_publish_videoPublish a video or reel to Instagram.
The video must be hosted at a publicly accessible URL. Supported formats: MP4, MOV. Maximum file size: 1GB for reels. For reels: 9:16 aspect ratio, 3-90 seconds duration.
Args:
Returns: The published media details.
{
"type": "object",
"required": [
"videoUrl"
],
"properties": {
"caption": {
"type": "string",
"description": "Caption text"
},
"videoUrl": {
"type": "string",
"description": "Public URL of the video"
},
"mediaType": {
"enum": [
"VIDEO",
"REELS"
],
"type": "string",
"default": "VIDEO",
"description": "Video or Reel"
},
"thumbOffset": {
"type": "integer",
"minimum": 0,
"description": "Thumbnail offset in milliseconds"
}
}
}instagram_publish_carouselPublish a carousel (multi-image/video post) to Instagram.
Create a carousel with 2-10 images and/or videos. Each item URL must be publicly accessible.
Args:
Returns: The published carousel media details.
{
"type": "object",
"properties": {
"caption": {
"type": "string",
"description": "Caption text"
}
}
}instagram_publish_storyPublish a story to Instagram.
Stories disappear after 24 hours. The media must be hosted at a publicly accessible URL. For images: JPEG/PNG, max 30MB, 9:16 aspect ratio recommended. For videos: MP4, max 30MB, 9:16 aspect ratio, up to 60 seconds.
Note: Stickers (link, poll, location) are not supported via API.
Args:
Returns: The published story details.
{
"type": "object",
"properties": {
"imageUrl": {
"type": "string",
"description": "Image URL for photo story"
},
"videoUrl": {
"type": "string",
"description": "Video URL for video story"
}
}
}instagram_get_container_statusCheck the status of a media container being processed.
Use this to monitor the progress of media uploads before publishing.
Status values:
Args:
Returns: Current container status.
{
"type": "object",
"required": [
"containerId"
],
"properties": {
"containerId": {
"type": "string",
"description": "Container ID"
}
}
}instagram_list_storiesList currently active stories from the account.
Stories are only available for 24 hours after posting.
Args:
Returns: List of active stories with media details.
{
"type": "object",
"properties": {
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Specific fields to retrieve"
},
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
}
}
}instagram_get_story_insightsGet insights/analytics for a specific story.
Available metrics:
Note: Story insights are only available while the story is active (24 hours).
Args:
Returns: Array of insight metrics for the story.
{
"type": "object",
"required": [
"storyId"
],
"properties": {
"format": {
"enum": [
"json",
"markdown"
],
"type": "string"
},
"storyId": {
"type": "string",
"description": "Story media ID"
}
}
}