← All ivy-agents
IVYXSTUDIO · IVY AGENT
S

Social inbox sync

ivy.agent.social-inbox-sync · v0.1.0

ivyx

Reads what people wrote to a brand's accounts since the last run (Instagram comments, LinkedIn comments, X mentions, YouTube comments), each platform behind an if, and answers one list of kind conversations that IVYX Social's inbox shows and times against the reply SLA. Reads only.

Steps

In the order the agent's file lists them, each with where its inputs come from and the values the file fixes. A branch or a loop is a step too.

  1. 01
    Which platforms does the brand have?
    ivy.node.social-plan

    Reads an IVYX Social collect or inbox agent's input (a connection and an id per platform) and says which platforms are there, so the agent's if-branches run only those steps.

    takes
    firm from the agent's input
    client from the agent's input
    ig_connection from the agent's input
    ig_user_id from the agent's input
    fb_connection from the agent's input
    fb_page_id from the agent's input
    li_connection from the agent's input
    li_organization_id from the agent's input
    li_handle from the agent's input
    x_connection from the agent's input
    x_handle from the agent's input
    yt_connection from the agent's input
    Ivy Node
  2. 02
    Instagram?

    Lets what follows run only when has_instagram of step 1 is true.

    Branch
  3. 03
    Instagram comments
    ivy.node.ig-conversations

    Reads the comments under an Instagram professional account's recent media, with their replies, through the Graph API with a Meta connection, as the conversations IVYX Social's inbox shows: one conversation per top-level comment, its replies as the thread, the account's own replies marked outgoing.

    Runs only on the then branch of step 2.

    takes
    connection from the agent's input, ig_connection
    ig_user_id from the agent's input
    Ivy Node
  4. 04
    LinkedIn?

    Lets what follows run only when has_linkedin of step 1 is true.

    Branch
  5. 05
    LinkedIn comments
    ivy.node.li-comments

    Reads the comments under a LinkedIn company page's recent posts through the Community Management API with a LinkedIn connection, as the conversations IVYX Social's inbox shows.

    Runs only on the then branch of step 4.

    takes
    connection from the agent's input, li_connection
    organization_id from the agent's input, li_organization_id
    handle from the agent's input, li_handle
    Ivy Node
  6. 06
    X?

    Lets what follows run only when has_x of step 1 is true.

    Branch
  7. 07
    X mentions
    ivy.node.x-mentions

    Reads the posts that mention an X account through the X API v2 with an X connection, as the conversations IVYX Social's inbox shows (kind mention).

    Runs only on the then branch of step 6.

    takes
    connection from the agent's input, x_connection
    handle from the agent's input, x_handle
    Ivy Node
  8. 08
    YouTube?

    Lets what follows run only when has_youtube of step 1 is true.

    Branch
  9. 09
    YouTube comments
    ivy.node.yt-comments

    Reads the comment threads on the channel's videos through the Data API with a Google connection, as the conversations IVYX Social's inbox shows: one per top-level comment, its replies as the thread, the channel's own replies marked outgoing.

    Runs only on the then branch of step 8.

    takes
    connection from the agent's input, yt_connection
    Ivy Node
  10. 10
    One list of conversations
    ivy.node.conversations-pack

    Gathers the platform nodes' conversations into one answer of kind conversations, oldest first, each id once; what IVYX Social's inbox takes.

    Runs only on the else branch of step 8.

    takes
    client from the agent's input
    conversations_a from step 3, conversations
    conversations_b from step 5, conversations
    conversations_c from step 7, conversations
    conversations_d from step 9, conversations
    returns
    kind, conversations, count, client
    Ivy Node

What it touches

Collected from what each of its nodes declares, plus the model call when a step is a model turn. A declaration is the author's statement, and it is what policy rules select on.

message-readNetwork

Inputs

FieldTypeDescription
firmstringThe firm's slug in IVYX Social; the destination routes the delivery to /api/firms/<firm>/intake.
clientrequiredstringThe brand's name, as IVYX Social knows it; the destination hands it on as the delivery's client.
ig_connectionNot declaredThe platform's connection, as the stored secret connection.<id>.
ig_user_idstringThe Instagram professional account's id.
fb_connectionNot declaredThe platform's connection, as the stored secret connection.<id>.
fb_page_idstringThe Facebook Page's id; the first managed Page when omitted.
li_connectionNot declaredThe platform's connection, as the stored secret connection.<id>.
li_organization_idstringThe LinkedIn company page's id or URN.
li_handlestringIts vanity name.
x_connectionNot declaredThe platform's connection, as the stored secret connection.<id>.
x_handlestringThe X account's handle.
yt_connectionNot declaredThe platform's connection, as the stored secret connection.<id>.

Outputs

FieldTypeDescription
kindrequiredstringconversations
conversationsrequiredarrayNot declared
countintegerNot declared
clientstringNot declared

Tests

2 of 2 test cases passed on Oct 25, 2026, in the publisher's own environment, before this version was published. The registry keeps that record; it does not run the cases again.

Requires: python:3.9, tools/connectors-standin.py on 127.0.0.1:18911, its connections stored as the secrets connection.standin-<platform>

  • instagram

    Instagram's one commented post is one conversation of kind comment.

    given
    firm ivyx
    client IVYX
    ig_connection {"$secret":"connection.standin-meta"}
    ig_user_id 17841400001
    expects
    kind equals conversations
    count equals 1
    conversations.0.kind equals comment
  • no-platform

    No connection is an empty inbox of the same kind.

    given
    firm ivyx
    client IVYX
    expects
    kind equals conversations
    count equals 0
    conversations equals []