Skip to main content
Glama

Mark Inbox Conversations

update_inbox_conversations_status
Idempotent

Mark a batch of conversations as unread, read or done in the AdaptlyPost inbox. Only AdaptlyPost changes; nothing is sent to the platform. Needs the inbox.reply permission, which Admin and Editor hold (403 permission_denied otherwise), and an active plan.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "ids": "<ids>",
      "status": "<status>"
    },
    "name": "update_inbox_conversations_status"
  }
}

Input Schema

NameRequiredDescriptionDefault
idsYesIds of the conversations to mark, from list_inbox_conversations
statusYesInbox status to give every listed item
workspaceIdNoWorkspace to act in: an id from list_workspaces. Omit to act in the workspace list_workspaces marks current. Use the same workspaceId for every call about the same workspace, since ids from one workspace (accounts, posts, uploads) do not exist in another

Output Schema

NameRequiredDescriptionDefault
resultYesAn object with conversations (the updated conversations) and unreadCount. An InboxConversation: id, accountId, platform, accountName, participant { id, name, username, avatarUrl }, lastMessageText, lastMessageAt, lastMessageIsOwn, status, repliedAt, replyWindowEndsAt (the end of the 24-hour Facebook and Instagram reply window, else null), maxMessageLength and capabilities { canReply }.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • changedInput schema / properties / ids / description
      Previous value: -"1 to 100 conversation ids from list_inbox_conversations"New value: +"Ids of the conversations to mark, from list_inbox_conversations"
    • changedInput schema / properties / status / description
      Previous value: -"UNREAD, READ or DONE"New value: +"Inbox status to give every listed item"
    • addedOutput schema / properties / result / additionalProperties
      Added value: +true
    • addedOutput schema / properties / result / properties
      Added value: +{
      +  "conversations": {
      +    "anyOf": [
      +      {
      +        "items": {
      +          "additionalProperties": true,
      +          "properties": {
      +            "accountId": {
      +              "description": "The account `id` from GET /social-accounts",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "accountName": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "capabilities": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {
      +                    "canReply": {
      +                      "type": [
      +                        "boolean",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "id": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "lastMessageAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "lastMessageIsOwn": {
      +              "type": [
      +                "boolean",
      +                "null"
      +              ]
      +            },
      +            "lastMessageText": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "maxMessageLength": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "participant": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": true,
      +                  "properties": {
      +                    "avatarUrl": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "id": {
      +                      "description": "The platform user id",
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "name": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "username": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    }
      +                  },
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "platform": {
      +              "description": "One of: FACEBOOK, INSTAGRAM, THREADS, TIKTOK, TWITTER, BLUESKY, LINKEDIN, PINTEREST, YOUTUBE, MASTODON, TELEGRAM, GOOGLE_BUSINESS, TUMBLR, WORDPRESS",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "repliedAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "replyWindowEndsAt": {
      +              "description": "When the FACEBOOK and INSTAGRAM 24-hour reply window closes; null on other platforms",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "status": {
      +              "description": "One of: UNREAD, READ, DONE",
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      {
      +        "type": "null"
      +      }
      +    ]
      +  },
      +  "unreadCount": {
      +    "description": "Unread items of this channel left in the workspace",
      +    "type": [
      +      "number",
      +      "null"
      +    ]
      +  }
      +}
    • addedOutput schema / properties / result / type
      Added value: +"object"
    • addedOutput schema / required
      Added value: +[
      +  "result"
      +]
  2. Added

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the mutation/safety profile (readOnly=false, destructive=false, idempotent=true), so the bar is lower, and the description still adds genuine context: that nothing is pushed to the external platform and that a 403 permission_denied results without inbox.reply plus an active plan. It does not mention the 100-item batch ceiling or what happens on partial failure, keeping it below a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the action front-loaded and the side-effect/permission caveats following. The phrase 'Only AdaptlyPost changes; nothing is sent to the platform' is mildly redundant but serves as explicit reassurance about external side effects.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, annotations, and fully described parameters, the description only needs to carry action, scope, prerequisites and side effects, all of which it covers. The batch-size limit and cross-workspace caveat live in the schema, so the remaining gap is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so ids, status enum and workspaceId semantics are already fully documented in the schema. The description adds only the framing 'batch of conversations' and the status vocabulary, which largely duplicates the enum, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Mark a batch of conversations as unread, read or done in the AdaptlyPost inbox'), which cleanly separates it from the comments/mentions/reviews status siblings by naming the conversation resource. It does not explicitly name those siblings, so the differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Prerequisites are given (inbox.reply permission, active plan, admin/editor roles), which is real guidance for when a call will succeed. However, there is no explicit when-to-use vs. the many sibling status tools or list_inbox_conversations, and no exclusion guidance, leaving the choice between update_inbox_conversations_status and its siblings to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources