What your agent can do on Instagram
Connect your Instagram account once and your AI agent can use 69 tools on it, through one MCP server or the REST API. Every action stays inside the Instagram limits that keep the account safe.
In plain words
- Answer DMs, with photos and files
- Publish feed posts and stories, with a caption and location
- Schedule posts for later, once or every week or month, with a first comment
- Read and answer comments on your posts
- Turn a comment into a private message, when Instagram allows it
- See how your posts do: likes and comments
Every tool
Some tools work on every channel where the platform supports them. If Instagram does not support an action, Spaces returns an error and nothing is sent. Writes need an Idempotency-Key, so a retry never sends twice.
Conversations
| What it does | MCP tool | REST |
|---|---|---|
| Your conversations, newest first, with their tags and owner. Filter to unread, unanswered, a tag or an owner. | list_messaging_chats | GET …/chats |
| The messages in one conversation. | list_messaging_messages | GET …/chats/{chat_id}/messages |
| An image, file, voice note or video from a message. | get_messaging_attachment | GET …/chats/{chat_id}/messages/{message_id}/attachments/{attachment_id} |
| Reply in a conversation, with text or attachments. | reply_in_chat | POST …/chats/{chat_id}/messages |
| Start a new conversation with someone who expects to hear from you. | start_chat | POST …/chats |
| The tags and the owner of a conversation. | get_chat_tags | GET …/chats/{chat_id}/tags |
| Tag a conversation, such as lead, order or follow up. Sends nothing. | set_chat_tags | PUT …/chats/{chat_id}/tags |
| Give a conversation to someone on your team. Sends nothing. | set_chat_owner | PUT …/chats/{chat_id}/owner |
Messages
| What it does | MCP tool | REST |
|---|---|---|
| People in a chat. | list_chat_attendees | GET …/chats/{chat_id}/attendees |
| Mark a chat read, mute it, or take another chat action. | update_chat | PATCH …/chats/{chat_id} |
| Sync a chat from the start, or read the sync status. | sync_chat | GET …/chats/{chat_id}/sync |
| Messages across all conversations, with filters. | list_messages | GET …/messages |
| People the account can message. | list_attendees | GET …/attendees |
| One person you can message. | get_attendee | GET …/attendees/{attendee_id} |
| A person’s profile picture. | get_attendee_picture | GET …/attendees/{attendee_id}/picture |
| 1:1 chats with an attendee. | list_attendee_chats | GET …/attendees/{attendee_id}/chats |
| Messages with an attendee. | list_attendee_messages | GET …/attendees/{attendee_id}/messages |
| React to a message. | add_message_reaction | POST …/messages/{message_id}/reaction |
| Remove your reaction from a message. | remove_message_reaction | DELETE …/messages/{message_id}/reaction |
| Sync chats for an attendee. | sync_attendee | GET …/attendees/{attendee_id}/sync |
People
| What it does | MCP tool | REST |
|---|---|---|
| A person’s profile. | get_profile | GET …/users/{identifier} |
| The connected account profile. | get_own_profile | GET …/profile |
| Edit the connected profile. Only fields the channel allows are applied. | edit_own_profile | PATCH …/profile |
| Relations of the account. Paced like profile views. | list_relations | GET …/relations |
| Accounts this account follows. | list_following | GET …/following |
| Followers of this account. | list_followers | GET …/followers |
| Comments written by a person. | list_user_comments | GET …/users/{identifier}/comments |
| Reactions by a person. | list_user_reactions | GET …/users/{identifier}/reactions |
Posts and comments
| What it does | MCP tool | REST |
|---|---|---|
| Your own posts with their numbers: likes or reactions, comments, reposts, impressions, and on LinkedIn clicks, engagement and reach. | list_own_posts | GET …/posts |
| Publish a post: text, images or video and a link preview on LinkedIn, where you can also reshare a post or post as a company page you manage; a feed post or story with a caption and location on Instagram. | create_post | POST …/posts |
| Publish a post at a set local time, once or every week or month, with an optional first comment. | schedule_post | POST …/scheduled-posts |
| Posts waiting to be published, and the ones already out. | list_scheduled_posts | GET /v1/messaging/scheduled-posts |
| Change a scheduled post, its time or how often it repeats. | update_scheduled_post | PATCH /v1/messaging/scheduled-posts/{scheduled_post_id} |
| Cancel a scheduled post. | cancel_scheduled_post | DELETE /v1/messaging/scheduled-posts/{scheduled_post_id} |
| Comments on a post. | list_comments | GET …/posts/{post_id}/comments |
| Comment on a post, or answer a comment. | comment_on_post | POST …/posts/{post_id}/comments |
| Delete one of your comments. | delete_comment | DELETE …/posts/{post_id}/comments/{comment_id} |
| React to a comment. | react_to_comment | POST …/posts/{post_id}/comments/{comment_id}/reactions |
| Answer a comment with a private message, when the platform allows it. | private_reply | POST …/posts/{post_id}/comments/{comment_id}/private-reply |
| Reactions on a post or, with comment_id, a comment. | list_post_reactions | GET …/posts/{post_id}/reactions |
Schedules and routines
| What it does | MCP tool | REST |
|---|---|---|
| Send a message at a set local time, inside working hours you choose. | schedule_message | POST /v1/messaging/schedules |
| Messages waiting to be sent. | list_schedules | GET /v1/messaging/schedules |
| Change a scheduled message. | update_schedule | PATCH /v1/messaging/schedules/{schedule_id} |
| Cancel a scheduled message. | cancel_schedule | DELETE /v1/messaging/schedules/{schedule_id} |
| An automation: answer from your notes, reply to comments and message the commenter once, tag chats, call a webhook or email a summary, on a schedule or when a message or comment arrives. | create_routine | POST /v1/messaging/routines |
| Your automations. | list_routines | GET /v1/messaging/routines |
| Change or pause an automation. | update_routine | PATCH /v1/messaging/routines/{routine_id} |
| Delete an automation. | delete_routine | DELETE /v1/messaging/routines/{routine_id} |
| What an automation did, and when. | list_routine_runs | GET /v1/messaging/routines/{routine_id}/runs |
Pause and approvals
| What it does | MCP tool | REST |
|---|---|---|
| Stop every message, post, comment, invitation, scheduled message and routine at once. Reading keeps working. | pause_all_sending | POST /v1/messaging/pause |
| Start sending again after a pause. Waiting scheduled messages and routines carry on. | resume_all_sending | POST /v1/messaging/resume |
| Replies, new chats, posts and comments waiting for you to approve them. | list_approvals | GET /v1/messaging/approvals |
| Send a waiting message or post as it is, or after you edit the text. | approve | POST /v1/messaging/approvals/{approval_id}/approve |
| Turn down a waiting message or post, so it is never sent. | reject | POST /v1/messaging/approvals/{approval_id}/reject |
Accounts
| What it does | MCP tool | REST |
|---|---|---|
| The accounts you have connected, with their status and when each last had activity. Search by name, filter by channel or status, sort and page. | list_messaging_accounts | GET /v1/messaging/accounts |
| Whether an account is working, what to do if not, and how much room it has left today. | get_account_health | GET …/health |
| A link to connect a new account, or to reconnect one. | create_messaging_connect_link | POST /v1/messaging/accounts/connect-link |
| Disconnect an account. | disconnect_messaging_account | DELETE … |
| Status of one connected account. | get_connected_account | GET … |
| Start reconnecting an account that needs a sign-in. | reconnect_account | POST …/reconnect |
| Enter a sign-in or verification code the platform asked for. The code is not stored. | solve_checkpoint | POST …/checkpoint |
| Ask the platform to send the verification code again. | resend_checkpoint | POST …/checkpoint/resend |
| Restart an account that has stopped syncing. | restart_account | POST …/restart |
| Fetch an account’s messages again from the platform. | resync_account | POST …/sync |
Usage and billing
| What it does | MCP tool | REST |
|---|---|---|
| Report a bug, a missing feature or a docs gap to the Spaces team. | send_feedback | POST /v1/feedback |
| Messages sent today and this week, and how much room is left on each account. | get_messaging_usage | GET /v1/messaging/usage |
| Usage by day for each account, as a spreadsheet or JSON: messages sent, new conversations and other actions. No message text. | export_messaging_usage | GET /v1/messaging/usage/export |
| Your plan and billing status. | get_messaging_billing | GET /v1/messaging/billing |
| A checkout link to choose a plan. | create_messaging_billing_checkout | POST /v1/messaging/billing/checkout |
Connect it
Use https://api.spacesos.com/mcp/instagram for an MCP server with only the Instagram tools, or https://api.spacesos.com/mcp for every channel. Setup steps for each AI client. An overview for Instagram: Instagram API for AI agents.